443

Amazon S3 Linuxインスタンスでは、2つのスクリプトが呼び出され、start_my_appこれらのスクリプトが永久stop_my_appに開始および停止します(これにより、Node.jsアプリケーションが実行されます)。これらのスクリプトを使用して、Node.jsアプリケーションを手動で開始および停止します。ここまでは順調ですね。

start_my_app私の問題:システムが起動するたびに実行されるように設定したいと思います。内部にファイルを追加する必要があり、そのファイルを内init.dの適切なディレクトリにシンボリックリンクする方法を知ってrc.dいますが、に配置したファイル内に実際に何を入れる必要があるのか​​わかりませんinit.d。、のように1行だけでよいと思いますstart_my_appが、それはうまくいきませんでした。

4

22 に答える 22

450

このためのcrontabを設定します

#crontab -e
@reboot  /home/user/test.sh

起動するたびに、テストスクリプトが実行されます。

于 2015-03-25T05:12:44.710 に答える
327

入力したファイルで、次の/etc/init.d/ように実行可能に設定する必要があります。

chmod +x /etc/init.d/start_my_app

@meetamitのおかげで、これが実行されない場合は、へのシンボリックリンクを作成する必要があります/etc/rc.d/

ln -s /etc/init.d/start_my_app /etc/rc.d/

最新のDebianでは、スクリプトがLSBに準拠している必要があるため、これは機能しないことに注意してください(少なくとも、次のアクションを提供します:開始、停止、再起動、強制リロード、およびステータス): https://wiki.debian .org / LSBInitScripts

注意として、相対パスではなく絶対パスをスクリプトに配置する必要があります。これにより、予期しない問題が解決される場合があります。

/var/myscripts/start_my_app

そして、そのファイルの上に追加することを忘れないでください:

#!/bin/sh
于 2012-10-19T11:59:07.053 に答える
125

簡単なアプローチは、次の行を追加することです/etc/rc.local

/PATH/TO/MY_APP &

または、特別なユーザーとしてコマンドを実行する場合:

su - USER_FOOBAR -c /PATH/TO/MY_APP &

(末尾のアンパサンドはプロセスをバックグラウンドで処理し、rc.localが実行を継続できるようにします)

完全なinitスクリプトが必要な場合は、debianディストリビューションにテンプレートファイルがあるので、次のようにします。

cp /etc/init.d/skeleton /etc/init.d/your_app

少し適応させます。

于 2012-10-19T11:58:45.807 に答える
36

これは、RedHatLinuxシステムで行う方法です。

/etc/init.dルートと実行可能ファイルが所有するスクリプトをに配置します。スクリプトの上部で、のディレクティブを指定できますchkconfig。たとえば、次のスクリプトを使用して、ユーザーoracleとしてJavaアプリケーションを起動します。

スクリプトの名前は/etc/init.d/apex

#!/bin/bash
# chkconfig: 345 99 10
# Description: auto start apex listener
#
case "$1" in
 'start')
   su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";;
 'stop')
   echo "put something to shutdown or kill the process here";;
esac

これは、スクリプトがレベル3、4、および5で実行される必要があり、開始/停止の優先順位が99および10であることを示しています。

次に、ユーザーとして、起動時にスクリプトを有効または無効にするためにroot使用できます。chkconfig

chkconfig --list apex
chkconfig --add apex

そして、あなたは使用することができますservice start/stop apex

于 2014-06-20T07:27:59.403 に答える
30

cronを使用して入力してくださいsudo

sudo crontab -e

起動時に実行するコマンド(この場合はスクリプト)を追加します。

@reboot sh /home/user/test.sh

保存する:

ESCを押してから:xを押して保存して終了するか、ESCを押してからZZを押します(つまり、shift + zz)

テストテストテスト

  1. cronを使用せずにテストスクリプトを実行して、実際に機能することを確認します。

  2. コマンドをcronで保存したことを確認し、sudo crontab -e

  3. サーバーを再起動して、すべてが機能することを確認しますsudo @reboot

于 2017-10-25T05:14:37.667 に答える
17

crontabに行を追加するだけです。

ファイルが実行可能であることを確認してください。

chmod +x /path_to_you_file/your_file

crontabファイルを編集するには:

crontab -e

追加する必要のある行:

@reboot  /path_to_you_file/your_file

とても簡単です!

于 2016-11-10T13:55:19.300 に答える
12

もう1つのオプションは、crontabに@rebootコマンドを含めることです。

cronのすべてのバージョンがこれをサポートしているわけではありませんが、インスタンスがAmazon Linux AMIに基づいている場合は、機能します。

于 2013-11-10T19:07:06.173 に答える
9

nanoまたはエディタを使用してrc.localファイルを編集し、そのgedit中にスクリプトを追加します。ファイルパスはまたはである可能性があり/etc/rc.localます/etc/rc.d/rc.local

sudo nano /etc/rc.local

これは編集です:

#!/bin/sh
/path-to-your-script/your-scipt-name.sh

を押しctrl+oて更新したら、を押してからを押しEnterますctrl+x

ファイルを実行可能にします。

sudo chmod 755 /etc/rc.local

次に、rc-localサービスを開始して、起動中にスクリプトを実行します。

sudo systemctl start rc-local
于 2020-07-06T06:24:59.740 に答える
6

あなたはそれを行うことができます:

chmod +x PATH_TO_YOUR_SCRIPT/start_my_app 

次に、このコマンドを使用します

update-rc.d start_my_app defaults 100

Cyber​​citiのこのページをご覧ください。

于 2016-01-05T08:20:44.780 に答える
3

この単純なソリューションは、CentOSを実行しているAmazonLinuxインスタンスで機能しました。ファイルを編集して/etc/rc.d/rc.local、そこにコマンドを配置します。このファイルには、他のすべてのinitスクリプトの後に実行されることが記載されています。その点で注意してください。これは、ファイルが現在私を探す方法です。ここに画像の説明を入力してください。最後の行は私のスクリプトの名前です。

于 2016-12-27T11:02:13.850 に答える
3

独自の/init実行可能ファイルを作成する

これはあなたが望むものではありませんが、それは楽しいです!

任意の実行可能ファイル(シェルスクリプトも含む)を選択し、コマンドラインパラメーターを使用してカーネルを起動するだけです。

init=/path/to/myinit

ブートの終わりに向かって、Linuxカーネルは指定されたパスで最初のユーザースペース実行可能ファイルを実行します。

いくつかのプロジェクトはinit、systemdなどの主要なディストリビューションで使用される一般的な実行可能ファイルを提供します。ほとんどのディストリビューションでは、initは通常のシステム操作で使用される一連のプロセスをフォークします。

しかし、それを乗っ取っ/initて独自の最小限のスクリプトを実行し、システムをよりよく理解することができます。

再現可能な最小限のセットアップは次のとおりです:https ://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init

于 2017-10-01T18:29:47.637 に答える
3

起動時に何かを開始することについては多くの回答がありますが、スクリプトはネットワークなどに依存しているため、少し後で開始したい場合がよくあります。atこの遅延を追加するために使用します。例:

at now + 1 min -f /path/yourscript

これは/etc/rc.localに追加できますが、次のcronように追加することもできます。

# crontab -e
@reboot at now + 1 min -f /path/yourscript

cronとatを組み合わせるのは楽しいことではありませんか?情報はマニュアルページにありますman at

@rebootが広くサポートされていない可能性があるというコメントについては、試してみてください。/etc/rc.localは、ubuntuやraspbianなどのsystemdをサポートするディストリビューションでは廃止されていることがわかりました。

于 2020-10-08T23:33:23.117 に答える
3

それを終える複数の方法

  1. crontab
  2. rc.local
  3. init.d
  4. systemd
于 2021-09-17T08:42:12.473 に答える
2

私はこのブログを参照しました、常に良い選択に聞こえます

https://blog.xyzio.com/2016/06/14/setting-up-a-golang-website-to-autorun-on-ubuntu-using-systemd/

vim /lib/systemd/system/gosite.service

Description=A simple go website
ConditionPathExists=/home/user/bin/gosite

[Service]
Restart=always
RestartSec=3
ExecStart=/home/user/bin/gosite

[Install]
WantedBy=multi-user.target

systemctl enable gosite.service
于 2020-01-02T15:54:28.537 に答える
1

実行したいのが単純なスクリプト(または何か)だけである場合の絶対的に最も簡単な方法は、システム>設定を使用してからアプリを起動するGUIがある場合です。

必要なスクリプトを参照するだけで、そこに移動します。(スクリプトを実行可能にする)

于 2014-12-24T03:18:05.560 に答える
1

Debian 9については、https://askubuntu.com/questions/228304/how-do-i-run-a-script-at-start-upを参照してください。それは私を助けてくれます。Debian 9の短いバージョン:コマンドを(rootとして)/etc/rc.localに追加します

/path_to_file/filename.sh ||  exit 1   # Added by me
exit 0

おそらく、/ path_to_file / filename.shは実行可能である必要があります(私はそう思います)。

于 2017-04-13T05:13:06.050 に答える
1

Lubuntuでは反対の状況に対処しなければなりませんでした。起動後にSkypeの実行が開始され~/.config/autostart/、ファイルで見つかりましたskypeforlinux.desktop。ファイルの内容は次のとおりです。

[Desktop Entry]
Name=Skype for Linux
Comment=Skype Internet Telephony
Exec=/usr/bin/skypeforlinux
Icon=skypeforlinux
Terminal=false
Type=Application
StartupNotify=false
X-GNOME-Autostart-enabled=true

このファイルを削除することは私を助けました。

于 2019-02-02T17:52:07.810 に答える
1

これがもっと簡単な方法です!

最初に:シェルスクリプトを作成して保存します。ここに例を示します。

#!/bin/bash
Icoff='/home/akbar/keyboardONOFF/icon/Dt6hQ.png'
id=13
fconfig=".keyboard"
echo "disabled" > $fconfig
xinput float $id
notify-send -i $Icoff "Internal Keyboard disabled";

このスクリプトは、起動時に内部キーボードを無効にします。

2番目:アプリケーション「スタートアップアプリケーション設定」を開きます

ここに画像の説明を入力してください

ここに画像の説明を入力してください

3番目:[追加]をクリックします。4番目:[名前]セクションで名前を付けます。5番目:コマンドセクションで、.shを参照します。6番目:コマンドセクションを次のように編集します。

bash <space> path/to/file/<filename>.sh <space> --start

7番目:[追加]をクリックします。それでおしまい!終了した!

次に、PCを再起動して確認します。

乾杯!

于 2020-06-01T04:05:25.597 に答える
0
  • スクリプトを/etc/init.d/ディレクトリに追加します
  • rcの実行レベルを更新します。 $ update-rc.d myScript.sh defaults NNここで、NNは実行される順序です。たとえば99は、98より前の100より前に実行されることを意味します。
于 2016-08-20T08:44:47.213 に答える
0

痛みのない、最も簡単で最も普遍的な方法は、~.bash_profileまたは~.profile (bash_profileファイルがない場合)を使用して実行することです。

そのファイルの最後に実行コマンドを追加するだけで、システムの起動時に実行されます。

一番下に例があります。 ~\Desktop\sound_fixer.sh

于 2019-05-12T20:04:11.753 に答える
0

Python3マイクロサービスまたはシェルの操作。Ubuntu Server 18.04(Bionic Beaver)またはUbuntu 19.10(Eoan Ermine)またはUbuntu 18.10(Cosmic Cuttlefish)を使用する私はいつもこれらの手順が好きで、それも常に機能しました。

  1. 私の場合、p例「brain_microservice1.service」というマイクロサービスを作成します。

    $ nano /lib/systemd/system/brain_microservice1.service
    
  2. あなたがいるこの新しいサービスの内部:

    [Unit]
    Description=brain_microservice_1
    After=multi-user.target
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices    /microservice_1.py -k start -DFOREGROUND
    ExecStop=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful-stop
    ExecReload=/usr/bin/python3.7 /root/scriptsPython/RUN_SERVICES/microservices/microservice_1.py -k graceful
    PrivateTmp=true
    LimitNOFILE=infinity
    KillMode=mixed
    Restart=on-failure
    RestartSec=5s
    
    [Install]
    WantedBy=multi-user.target
    
  3. 権限を与える:

    $ chmod -X /lib/systemd/system/brain_microservice*
    $ chmod -R 775 /lib/systemd/system/brain_microservice*
    
  4. 次に、実行許可を与えます。

    $ systemctl daemon-reload
    
  5. 次に有効にすると、起動時に常に開始されます

    $ systemctl enable brain_microservice1.service
    
  6. 次に、それをテストできます。

    $sudoを今すぐ再起動します

  7. 終了=成功!!

これは、シェルを実行し、反応する同じ本体スクリプトで実行できます...データベース起動スクリプト...あらゆる種類のOSコード...これが役立つことを願っています...

..。

于 2019-12-26T06:26:17.357 に答える
-6

一部の人々にとって、これはうまくいくでしょう:

次のコマンドを[システム] → [環境設定] → [スタートアップアプリケーション]に追加するだけです。

bash /full/path/to/your/script.sh
于 2014-11-27T13:59:44.733 に答える