ubuntu linuxを起動するたびにプログラムを実行する必要があります。だから私はそれを私のスタートアッププログラムリストに追加する必要があります。ただ1つの問題:私はターミナルを介してそれを行う必要があります。
crontab -e
して、ユーザーのcrontabを編集します。各ブートで@reboot command
実行するために追加しcommand
ます。
ubuntu linuxを起動するたびにプログラムを実行する必要があります。だから私はそれを私のスタートアッププログラムリストに追加する必要があります。ただ1つの問題:私はターミナルを介してそれを行う必要があります。
crontab -e
して、ユーザーのcrontabを編集します。各ブートで@reboot command
実行するために追加しcommand
ます。
回答:
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename
sudo update-rc.d filename defaults
スクリプトは起動時に開始するはずです。この方法は、ハードリンクとシンボリックリンクの両方でも機能することに注意してください(ln
)。
ブートプロセスのこの時点ではまだPATHが設定されていないため、全体で絶対パスを使用することが重要です。しかし、Steve HHHのコメントで指摘されているよう/etc/init.d/filename
に、update-rc.dコマンドの完全なファイルパス()を明示的に宣言することは、ほとんどのバージョンのLinuxでは無効です。ごと更新rc.dのためのマンページ、2番目のパラメータはにあるスクリプトです/etc/init.d/*
。これを反映するために上記のコードを更新しました。
また、(Charles Brandtによる)コメントで指摘されている/filename
ように、initスタイルのスクリプトでなければなりません。良いテンプレートも提供されました-https://github.com/fhd/init-script-template。
リンクの腐敗の可能性を回避するためだけの別の記事への別のリンク(GitHubが停止すると悲しくなりますが)-http ://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts
コメント(Russell Yanによる)で指摘されているように、これはupdate-rc.dのデフォルトモードでのみ機能します。
update-rc.dのマニュアルによると、「レガシーモードを使用するマシンにはファイルがあります/etc/init.d/.legacy-bootordering
」という2つのモードで実行できます。この場合、コマンドライン引数を通じてシーケンスとランレベルの構成を渡す必要があります。
上記の例に設定されている同等の引数は次のとおりです。
sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .
sudo update-rc.d filename defaults
です。