回答:
スケジュールを設定して、適切なユーザーのcron
テーブル(つまりcrontab)にスクリプトを配置します@reboot
。
ユーザーはでcron
表を編集できますcrontab -e
。
/path/to/script.sh
起動時に実行される例:
@reboot /path/to/script.sh
ルートとして実行する必要がある場合は、使用しないでください@reboot sudo /path/to/script.sh
。ルートのcrontabを編集
するsudo crontab -eu root
ために使用します。
参照: crontab(1)、cron(8)、crontab(8)
Ubuntu 15.04 systemd
以降では、デフォルトでスタートアップサービスと手順を自動化する(ある種の)プログラムと呼ばれるものを使用します。独自のサービスを作成し、ほんの少しの努力でスタートアップサービスのリストに追加できます。
基本的なシステムサービス
これは.service
、python guiサーバーの起動に使用できるベアボーンファイルです(シェルスクリプトである可能性がありますが、重要ではありません)。
[Unit]
Description=Python GUI Server
[Service]
ExecStart=/home/pi/software/GUI_POE.py &
[Install]
WantedBy=multi-user.target
Description
オプションサービスがあるか、何を説明した任意の文字列です。
このExecStart
オプションは、実行するコマンドを指定します。ここでは、実行可能なpythonスクリプトへのパスを指定し、&
トークンを使用してバックグラウンドで実行します。
このWantedBy
オプションは、このサービスを使用するターゲットに基づいて優先順位を指定します。特定の時間にサービスを実行する必要がない場合は、に設定するだけmulti-user.target
です。
基本手順
nano
または、選択した任意のエディターを使用して、起動時に実行するスクリプトを作成します。ファイルの最上部に適切なシェバンを含めて(#!/bin/bash
bashスクリプト用)、必ず実行可能なアクセス許可を付与してくださいchmod
。
my_service.serviceという名前のファイルにサービスを記述し、を使用して適切なディレクトリにコピーしcp my_service.service /lib/systemd/system/
ます。
サービスを開始しますsudo systemctl start my_service.service
。これにより、サービスに実行するように指示したスクリプトが起動されます。startの代わりに「stop」を使用した同じコマンドは、それをオフにします。
スタートアッププロセスにサービスを追加しますsudo systemctl enable my_service.service
。削除するには、同じコマンドで「enable」を「disable」に置き換えるだけです。
以上です!systemdサービスではデフォルトであるため、スクリプトはroot権限で自動的に実行されることに注意してください。
私の簡単な例(フル)
参考までに、Dashを使用して簡単なPython GUIサーバーを起動する簡単なsystemdサービスを次に示します。
[Unit]
Description=Python GUI Server
After=network-online.target
[Service]
Type=simple
WorkingDirectory=/home/pi/software
ExecStart=/home/pi/software/GUI_POE.py &
Restart=always
RestartSec=15s
KillMode=process
TimeoutSec=infinity
User=pi
Group=pi
[Install]
WantedBy=multi-user.target
このサービス例ではPython3スクリプトを使用していますが、式はシェルスクリプトの場合とまったく同じです。
詳細については、DigitalOceanによるこの優れたチュートリアルと、systemdの学習に役立った優れた回答を含むこのAskUbuntuスレッドを参照してください。お役に立てれば!