Networkmanagerを使用せずにwifiを自動的に有効にするスクリプトがありましたが、システムの起動中にrootとしてスクリプトを実行する方法がわかりません。ブート中にスクリプトを自動的に実行するにはどうすればよいですか?
実行するスクリプトを/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/
ディレクトリへのシンボリックリンクがあります。
/etc/rc.local
にコマンドを含めます。ユーザーのランレベルが変更されるたびに実行されます。
注:/etc/rc.localの「exit 0」を含む最後の行の前にコマンドを配置する必要があります。
これはUbuntu 17.04で私のために働いた:
disable_cdrom
のようなツアースクリプトファイルを作成します。私の場合、home/yterle/disable_cdrom
。私の場合:
#!/bin/sh
eject /dev/sr0 -i 1
実行可能にするchmod 775 disable_cdrom
/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サービスを有効にします
スクリプトファイルを/etc/init.d/
に実行可能権限で含めてから、異なる実行レベルを設定します
$ update-rc.d script-name default
スクリプトを起動時に起動します。
/etc/cron.d/
に次のようなテキストファイルを作成します。
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@reboot root yourScriptPath
(yourScriptPath
を、実行するスクリプトへのパスに置き換える必要があります。)