web-dev-qa-db-ja.com

起動時に「rc.local」を実行するにはどうすればよいですか?

システムの起動時に実行したいスクリプトがあります。 「rc.local」に配置しましたが、機能しません。起動時に実行できるようにするにはどうすればよいですか?

74
pedroo

スクリプトを手動で実行できますか?そうでない場合、それはそのスクリプトの問題です。それ以外の場合は、rc.localをご覧ください。 (そのスクリプトをrootとして実行する必要がある場合は、Sudoを使用して手動で実行する必要があります。)

/etc/rc.localが実行可能であり、それが呼び出すスクリプトも実行可能であることを確認してください。

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

Rc.localにShebang行があることを確認します(これはデフォルトです)。

$ head -n1 /etc/rc.local
#!/bin/sh -e
55
Roger Pate

私の場合、どの指示も完璧な解決策ではありませんでした。あなたが私と同じくらい不運だったなら、この詳細なものを試してください

  1. 実行コードをすべて、foo.shなどの任意の名前を持つ別のテキストファイルに入れて、任意の場所に保存します。
  2. 追加

    #!/bin/sh
    

    コードの最初の行として。

  3. Foo.shを実行してみてください

    Sudo foo.sh
    

    エラーがないことを確認します。

  4. Shコマンドの後に、作成したスクリプトのフルパスと名前を/etc/rc.localスクリプトに提供します

    sh '/path/to/your/script/foo.sh'
    
  5. 上記の行をコードの最後の行の前に置くことを忘れないでください

    exit 0
    

    /etc/rc.localスクリプトの最後。

  6. /etc/rc.localの最初の行を確認してください

    #!/bin/sh -e
    
  7. /etc/rc.localを実行可能にします(まだ実行可能でない場合)

    Sudo chown root /etc/rc.local
    Sudo chmod 755 /etc/rc.local
    
  8. 実行してすべてが正常に動作することを確認します

    Sudo /etc/init.d/rc.local start
    
  9. システムをテスト再起動します。
53
shvahabi

新しいUbuntuバージョンsystemdが使用され、/etc/rc.localはデフォルトで常にロードされません。

互換性サービスがロードされているかどうかを確認します

systemctl status rc-local.service

screenshot

active(exited)が含まれている場合、設定は問題ないようで、/etc/rc.localファイルに別のエラーがある可能性があります(これは、たとえば失敗します)。

27
rubo77

2つの提案。

  1. ターゲットスクリプトファイルも実行可能としてマークされていることを確認します。
  2. ターゲットスクリプトはSudoコマンドを実行していますか?その場合、Sudoパスワードを提供する必要があります。

私の悪い。次にチェックしてください。補正enzotibをありがとう:)

3
Ankit