起動後にコマンドを実行するにはどうすればよいですか?


27

echo 1 > /proc/sys/kernel/sysrqsysrqキーを有効にするために、各ブートで単純なシェルコマンドを実行したいと思います。ブート時にこれを行う必要があり、それを行うスクリプトをどこに配置すればよいですか?


すべてのLinuxディストリビューションはすでに時間を設定しています。マザーボード上のRTCのバッテリーが低下している可能性がありますか?
一部のプログラマーの男

@JoachimPileborgは実際、私のマザーボードにはRTCがありません:)これはRTCのない組み込みシステムボードです。


2
@davidgo、違います。引用している参照は少し古いものです。crontabは機能しsystemdますが、/ etc / rc.localはArch Linuxのようなディストリビューションでは機能しません。それらを参照することにより、Demetriを野生のガチョウの追跡で送信している可能性があります。時々、いくつかの更新を行う必要があります。
MariusMatutiae

回答:


37

ディストリビューションに依存します。

Debian由来のディストリビューションを使用している場合、少なくとも2つの適切な場所、/ etc / rc.localとcrontabがあります。crontabをルートとして呼び出すことができますが、

   crontab -e

そして、この行を挿入します

   @reboot /home/my_name/bin/my_command

where my_commandは実行可能ファイル(chmod 755 my_command)です。

または、次のような行を配置することもできます

   /home/my_name/bin/my_command

/etc/rc.localにあり、これは最後に実行されます。いずれにせよ、plsはあなたがあなたではなくルート環境を使用していることを覚えています。また、このため、絶対パスを使用することをお勧めします。

あなたが上にある場合にsystemdディストリビューション(アーチのLinux、Fedoraの19、...)は、第2の1(/etc/rc.localのは)もはや存在しませんしながら、最初のオプション(crontabのは)、まだ有効です。この場合、で実行されるサービスを開始する方法を学習する必要systemctlがありますが、これは単純な質問で交渉した以上のことかもしれません。


1
Fedoraでこれを確認できますか?私の検索では、rc.localが存在し、実行可能であれば実行されますが、デフォルトでは設定されていません。rc.localが実行されないと、厄介な問題が発生します。(私はFedoraの18のために、このための参照を見つけることができる- forums.fedoraforum.org/showthread.php?t=291889を
davidgo

Fedora 19でも、本当に必要な場合は、まだ持っているかもしれません。しかし、それはもはやパッケージ化されていません、docs.fedoraproject.org / en-US / Fedora / 16 / html / Release_Notes /… bullet 3.2.4。また、Arch Linuxにはまったく存在しないため、そのことに関する警告を含めることは安全だと思いました。
MariusMatutiae

2
多分これは私にとっては未知のエイリアスですが@boot、存在しません @reboot 。debianhelp.co.uk/ crontab.htm
Zarathustra

19

システムがcronそれをサポートするバージョン(具体的にはVixie cron)を実行している場合@reboot、cronジョブで使用できます。

これは、サポートする8つの特殊文字列の1つです。

crontab(5)manページを引用する(私のUbuntu 12.04システムから):

最初の5つのフィールドの代わりに、8つの特殊文字列のいずれかが表示される場合があります。

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

起動@rebootに関しては、cron(8)デーモンが起動するときであることに注意してください。特に、一部のシステムデーモンまたはその他の機能が起動する前である可能性があります。これは、マシンの起動順序によるものです。

これはブート時に何かを実行する唯一の方法ではありませんが、代替手段です。


2
この回答は、元の質問の1年以上前にどのように書けますか?
MariusMatutiae


Vixie cronが必要であることを指定するための+1。
ハビエルアリアス

10

Linuxのほとんどすべての亜種(長いこと昔に遡ります)には、起動時に実行される/etc/rc.localファイルがあります-コマンドを追加するだけです。

そうは言っても、それをする必要さえありません。「正しい」方法は、kernel.sysrq = 1の行を/etc/sysctl.confに変更/追加することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.