ログイン時ではなく起動時にスクリプトを実行する


11

マシンが起動するたびに、ログインする前に、特定のスクリプトを実行する(できればスーパーユーザーではない)方法を教えてください。ブート時に実行するのが最後になる可能性があります。ほとんどの場合、ユーザーがログインしていなくてもスクリプトを機能させたいだけです。


1
> -この一見取る@bruce askubuntu.com/questions/9382/...
hhlp

1
upstartまたはcronを使用することも、他の方法を使用することもできます。知っておくべき重要なことの1つは、どれだけ早く実行できるかということです。たとえば、特定のファイルシステムをマウントする必要があるか、Xを実行する必要があるか、DBusが必要か、ネットワークが必要か、またはより一般的には、存在するリソースが必要か?
JanC

@JanC:はい、実際には、あなたが尋ねたすべてのもの(Xを除く)だけが必要です。そのため、最後に実行したいのです。早期に実行する理由もまったくありません。
Malabarba、

@hhlp:かっこいい、ありがとう。しかし、その方法を使用した場合、スクリプトはどのくらい早く実行されますか?上で述べたように、それが(ログイン前の)最後のことの1つである場合が最善です。
Malabarba、

まあ、ターミナルサーバーにログインしたい場合や、ネットワーク共有に$ HOMEがある場合を除いて、ログインにネットワークは必要ありません... ;-)
JanC

回答:


8

の使用をお勧めしcronます。の特別な時間値は@reboot、ユーザーとして再起動するたびにジョブを生成します。たとえば、次のコマンドを実行crontab -eして使用します。

@reboot /home/yourself/bin/some_script_to_run

特殊な時刻形式の詳細については、以下を参照してください。 man 5 crontab


ありがとう、それは十分に簡単に思えます。これは、cronjobを作成したユーザーに依存しませんか?ログインに関係なく、ブートの最後に実行されますか?
Malabarba、

誰がcronjobを作成したかに完全に依存します-そのユーザーとして実行されます。しかし、それは、ログインするためにそれらに依存しない。
キース・クック

これは、cronデーモンが開始されたときにスクリプトを実行するため、必要な他のシステムがまだ準備されていない可能性があることに注意してください。
PhoneixS

4

1つの可能性は、Upstartを使用することです。これにより、依存関係の観点からスクリプトを実行するタイミングを指定できます。たとえば、「ファイルシステムがマウントされ、ネットワークインターフェースeth0が稼働しているとき」などです。ファイルを作成し/etc/init/bruce_script.conf、このようなものを含む(あなたがrootとしてファイルを作成する必要があります):

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

詳細については、upstartのドキュメントをinit(5)参照してください。特に、構成ファイルに入力できる内容のリストについては、マニュアルページ参照してください


使用できるアップスタートイベントのリストはありますか?
サンサイド

@Markus:私が知っていることではありません。標準イベントのセクション7(so dpkg -L upstart |grep /man7/)にマニュアルページがあり、の既存のスクリプトによって発行され、トリガーとして使用されるイベントを確認できます/etc/init
Gilles「SO-悪をやめる」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.