linux ubuntuで起動時にプログラムを自動的に実行する[終了]


140

ubuntu linuxを起動するたびにプログラムを実行する必要があります。だから私はそれを私のスタートアッププログラムリストに追加する必要があります。ただ1つの問題:私はターミナルを介してそれを行う必要があります。



23
@Flexoこの回答は、提供されたいずれのリンクにもありません。この質問と回答の+1
フランシスコバルデス

2
実際、ここでの答えは、これらの質問の最初から参照されています。
ウィルソンF

4
これを行うためのシンプルでポータブルな方法として、Cronを使用できます。実行crontab -eして、ユーザーのcrontabを編集します。各ブートで@reboot command実行するために追加しcommandます。
appas

2
...その重複かどうかは知らないが、それは最初のGoogleのヒットである
ウラジミールverleg

回答:


178
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 .


1
参考までに、オプション「デフォルト」は、スクリプトを実行レベル2、3、4、5で開始するリンクを配置します(
0、1、6で

5
Ubuntu Server 12.04 LTSでこれを試しましたが、12.04では/etc/init.dプレフィックスを付けることができません。それだけsudo update-rc.d filename defaultsです。
スティーブHHH

1
@pukハードリンクとシンボリックリンクの両方がこの方法で機能します
Dave Lasley

14
この場合、/ filenameを追加したいのは、initスタイルのスクリプトでなければなりません。独自のカスタム初期化スクリプトを開始するためのテンプレートを以下に示します。github.com
Charles Brandt

1
これを読む-unix.stackexchange.com/questions/28679/…-答えと一緒に役立つでしょう
Arjun Sreedharan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.