web-dev-qa-db-ja.com

ルートとしてブート中にスクリプトを実行する方法

Networkmanagerを使用せずにwifiを自動的に有効にするスクリプトがありましたが、システムの起動中にrootとしてスクリプトを実行する方法がわかりません。ブート中にスクリプトを自動的に実行するにはどうすればよいですか?

56
user128712

実行するスクリプトを/etc/init.dディレクトリに配置し、スクリプトを実行可能にします。

chmod 755 myscript

それが完了したら、使用したいランレベルディレクトリにシンボリックリンクを作成します。たとえば、グラフィカルランレベル2でプログラムを実行したい場合、Ubuntuのデフォルトランレベルである場合、/etc/rc2.dディレクトリに配置します。単にディレクトリに配置することはできません。起動時に「S」で示すことで実行されることを示す必要があり、実行順序が重要です。番号を大きくすることにより、ディレクトリにある他のすべての後に配置します。

最後に実行するスクリプトがrc.localで、S99rc.localという名前の場合、スクリプトをS99myscriptとして追加する必要があります。

ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript

下位互換性のある各/etc/rc*.dディレクトリには、/etc/init.d/ディレクトリへのシンボリックリンクがあります。

53
Radu Rădeanu

/etc/rc.localにコマンドを含めます。ユーザーのランレベルが変更されるたびに実行されます。

注:/etc/rc.localの「exit 0」を含む最後の行の前にコマンドを配置する必要があります。

25
thefourtheye

crontabオプションを使用して、再起動後にスクリプトを実行します。

cron@rebootコードを追加することで実行できます

@reboot yourScriptPath 

それをします

15
hs.chandra

これはUbuntu 17.04で私のために働いた:

  1. disable_cdromのようなツアースクリプトファイルを作成します。私の場合、home/yterle/disable_cdrom。私の場合:

    #!/bin/sh
    eject /dev/sr0 -i 1
    
  2. 実行可能にするchmod 775 disable_cdrom

  3. /etc/systemd/systemに移動して、そこにserviceファイルを作成します。たとえば、Sudo gedit /etc/systemd/system/disable_cdrom.service

私のdisable_cdrom.serviceは次のようになります。

[Unit]
Description=Disable cdrom

[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom

[Install]
WantedBy=multi-user.target

ExecStartは、/bin/shを使用してスクリプトを実行することを指します

次に、systemctl enable disable_cdrom.serviceを実行してsystemdサービスを有効にします

8
YTerle

スクリプトファイルを/etc/init.d/に実行可能権限で含めてから、異なる実行レベルを設定します

$ update-rc.d script-name default

スクリプトを起動時に起動します。

5
M S Parmar

/etc/cron.d/に次のようなテキストファイルを作成します。

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

@reboot   root    yourScriptPath

yourScriptPathを、実行するスクリプトへのパスに置き換える必要があります。)

4
jarno