networkmanagerを使用せずにwifiを自動的に有効にするスクリプトがありましたが、システムの起動中にrootとしてスクリプトを実行する方法がわかりません。ブート中にスクリプトを自動的に実行するにはどうすればよいですか?
networkmanagerを使用せずにwifiを自動的に有効にするスクリプトがありましたが、システムの起動中にrootとしてスクリプトを実行する方法がわかりません。ブート中にスクリプトを自動的に実行するにはどうすればよいですか?
回答:
実行するスクリプトを/etc/init.dディレクトリに配置し、スクリプトを実行可能にします。
chmod 755 myscriptそれが完了したら、使用したいランレベルディレクトリにシンボリックリンクを作成します。たとえば、Ubuntuのデフォルトランレベルであるグラフィカルランレベル2でプログラムを実行したい場合は、/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/rc2.d代わりにを使用する必要があることに注意してくださいrc3.d。rc2.dグラフィカルな実行レベルだけではないようです。
                    cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.dこれに行くことができます/etc/rc?.d、あなたのデフォルトのランレベルに対応するディレクトリ。
                    rc.local、名前が付けられている場合はS99rc.local、スクリプトをS99myscript。として追加する必要があります。」「最後に実行するスクリプトmyscriptが名前付きのS99myscript場合、スクリプトをS99myscript。として追加する必要があります。」???
                    にコマンドを含めます/etc/rc.local。ユーザーのランレベルが変更されるたびに実行されます。
注:/etc/rc.localの「exit 0」を含む最後の行の前にコマンドを配置する必要があります。
/etc/rc.local、その含まれています  exit 0
                    /etc/rc.localubuntu 15.10では、「このスクリプトは各マルチユーザーランレベルの最後に実行されます」というコメントがあります。そのため、起動中にスクリプトを数回実行できますか?
                    crontabオプションを使用して、再起動後にスクリプトを実行します。
あなたはcronで@rebootコードを追加することでそれを行うことができます
rootユーザーでcrontabを開きます。
$ sudo crontab -e下部に次のレコードを追加します。
@reboot yourScriptPath それはあなたが望むことをします。
crontab -eスーパーユーザー権限を必要としないcommandを使用するつもりですか?ルートとして実行する必要のあるスクリプトを実行できるかどうかは疑問です。
                    sudo crontab -e起動時にスクリプトをルートとして実行する必要があります。
                    /var/run/crond.reboot、そうでなければ、タスクを実行しません
                    これは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サービスを有効にするために実行します
systemctl enable disable_cdrom.service
                    スクリプトファイルに/etc/init.d/
実行可能権限を含めてから、異なる実行レベルを設定します
$ update-rc.d script-name defaultスクリプトを起動時に起動します。
update-rc.d script-name enableですか?
                    スクリプトの追加に注意してくださいrc.local- そのため、スプラッシュスクリーンで立ち往生しました。Alt+を押すとF1、スプラッシュスクリーンの背後で何が起こっているかがわかります(スクリプトrc.localが実行されていました)。
私はそれから抜け出すことができませんでした。
何も動作しません。
USB Ubuntuイメージから起動し、検索してrc.local、ファイルへのアクセス許可を付与し、削除する必要がありました。自分が何をしているのかわからない場合は、何もすべきではないと思います。
autostartマニフェストやで*.service同様のように、複数の場所にあるファイルinit.dまたはcrontab。これを参照してください:unix.stackexchange.com/a/525845/43233