起動時にアプリケーションを自動的に起動する方法

起動時にアプリケーションを自動的に起動する方法

私はLinuxを初めて使用し、アプリケーションの実行を期待しています(10秒ごとにLEDを切り替えます)。アプリケーションを作成し、正常に動作しますが、起動時に自動的に起動したいと思います。

文書ここ起動スクリプトが/etc/init.dディレクトリにコピーされ、コピーされたスクリプトへのシンボリックリンクがディレクトリに作成されることを示しますrc.d

このスクリプトファイルの拡張子と名前は何ですか?シンボリックリンクを手動で追加できますかrc.d?それとも特別な手順がありますか?

実装方法の提案がありますか?

答え1

これはから抜粋したものです。http://www.debian-administration.org/articles/28これはあなたの質問に答えるようです。

注:以下のサンプルスクリプトのstart)「」部分に呼び出しを追加すると、プログラムは実際に起動します。システムを再起動せずにスクリプトの機能をテストできます。フルパスを使用してスクリプトを呼び出し、 " start"または" stop"パラメータを指定します。

スタート:

Debian は、Sys-V に似た init システムを使用して、システムの実行レベルが変更されたとき (たとえば、開始および終了時) コマンドを実行します。

コンピュータの起動時に起動する新しいサービスを追加するには、このディレクトリに必要なスクリプトを追加する必要があります/etc/init.d/。このディレクトリには、実行できる操作の例を提供する多くのスクリプトがすでにあります。

これは、常に実行されるコードと、「開始」または「停止」として呼び出されたときに実行されるコードの2つの部分に分かれた非常に単純なスクリプトです。

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

ファイルを正しい場所に保存し、「」を実行して実行可能であることを確認してくださいchmod 755 /etc/init.d/blah

その後、システムのシャットダウンまたは起動時にスクリプトが実行されるように適切なシンボリックリンクを追加する必要があります。

最も簡単な方法はDebian固有のコマンドを使用することですupdate-rc.d

root@skx:~# update-rc.d blah defaults
 Adding system startup for /etc/init.d/blah ...
   /etc/rc0.d/K20blah -> ../init.d/blah
   /etc/rc1.d/K20blah -> ../init.d/blah
   /etc/rc6.d/K20blah -> ../init.d/blah
   /etc/rc2.d/S20blah -> ../init.d/blah
   /etc/rc3.d/S20blah -> ../init.d/blah
   /etc/rc4.d/S20blah -> ../init.d/blah
   /etc/rc5.d/S20blah -> ../init.d/blah

答え2

最新バージョンのLinuxサポートする systemd(@AlexanderShcheblikinが言ったように)。 Debian専用のソリューションよりも多くの機能があり、移植性に優れています。

読んでください 本当に素晴らしいガイドです。

以下はクイックリファレンスです。最低限度で必要:

  1. 実行権限を持つスクリプト(例myscript.sh:)
  2. myservice.service/etc/systemd/systemスクリプトを実行するコマンドを含む拡張子「.service」と644権限を持つ単位ファイル(例)。例えば、

:

[Unit]
Description=Example systemd service.

[Service]
Type=simple
ExecStart=/bin/bash /path/to/myscript.sh

[Install]
WantedBy=multi-user.target
  1. sudo systemctl enable myservice起動時に起動するには、コマンドを実行します。

答え3

使いcrontabやすくなります。

crontab -eユーザーのcrontabを編集するために使用されます。
最後に次の行を追加します。

@reboot <command>

例:

  • @reboot my_script.sh
  • @reboot python my_script.py arg1 arg2

最後に、crontab -lスクリプトがリストに追加されていることを確認してください。


修正する:

たとえば、このライナーは再起動するたびにscript.shを実行するタスクを追加します。

crontab -l > file; echo "@reboot /home/user/script.sh" >> file; crontab file; rm file;

画像ソース:Gumby The Green 2019年7月16日10:20

https://stackoverflow.com/users/9364000/gumby-the-green

答え4

パラメータ管理とロギングを通じてアプリケーションを起動する効率的なプログラムであるSupervisorを使用してください。より多くの情報を知りたい場合http://supervisord.org/running.html(インストール手順に従ってください.

confファイルを作成します/etc/supervisor/conf.d/{PROGRAM_NAME}.conf。ここにコードがあります。

[program:{PROGRAM_NAME}]
command=/usr/bin/{PROGRAM_NAME} -arg1 -arg2
autostart=true  
autorestart=true  
stderr_logfile=/var/log/supervisor/{PROGRAM_NAME}.err.log  
stdout_logfile=/var/log/supervisor/{PROGRAM_NAME}.out.log  

次に、cmd行で実行します。

supervisorctl reload

関連情報