🧠 概要:
概要
この記事では、Linuxのsystemdを利用して自動起動プログラムやタスクスケジュールを簡単に追加・設定するための支援スクリプト「Rcat999」を紹介しています。このスクリプトを使うことで、任意のプログラムを起動時に実行したり、特定の時刻に実行する設定を効率よく行うことができます。
要約ポイント
- スクリプト目的: Linuxのsystemdを利用して、自動起動プログラムやタスクスケジュールの設定を支援する。
- 基本機能:
- 任意のプログラムを起動時に実行
- 特定の時刻にプログラムを実行
- パッケージ内容:
- シェルスクリプトをサービスとして登録する支援
- サービスファイルの登録と削除スクリプト
- 利用方法:
- エイリアス登録を行い、簡単にコマンドを実行できるように設定する。
- サービスファイルを作成し、systemdに登録するプロセスが説明されている。
- タイマー設定:
- 特定の時刻や曜日にプログラムを定期的に実行するためのタイマー作成手順も含まれる。
- サービスの削除:
- 簡単にサービスやタイマーを削除できるスクリプトがある。
- 配布情報: スクリプトは指定されたURLからダウンロード可能で、利用規約に同意が必要。
この記事は、Linux環境でのプログラム自動実行の手助けとなるツールとして、特にスクリプトに慣れていないユーザーにとって有用です。
こんにちはRcatです。
今回は過去に以下の記事で紹介しました。Linuxのsystemdへのスクリプト追加やタイマーの追加を支援するスクリプトを紹介するコーナーを、個別で作成することにしました。
なんだかんだでいろんなところで使っているので、私が紹介で使い回したいからです。
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください
概要
概要
本スクリプトはLinuxでのスタートアッププログラムというか、タスクスケジュールの位置づけであるSystemdを使って任意のプログラムを起動時に実行したり、特定の時刻に実行したりする設定を簡単に行うための支援スクリプトです。
支援ツールを導入する
パッケージ内容
パッケージ内容は以下の通りです。好きなところに格納してください。コマンドとして使うためにはエイリアスの登録する必要があります。
参考のデータを入れておきますので、登録してください。
エイリアス登録
サンプルのエイリアスの中身はこんな感じです。
alias CreateService-sh='sudo python3 /home/rcat/ドキュメント/scripts/CreateService_sh.py'alias CreateService-py='sudo python3 /home/rcat/ドキュメント/scripts/CreateService_py.py'alias ServiceAdd='sudo /home/rcat/ドキュメント/scripts/ServiceAdd.sh'alias ServiceRemove='sudo /home/rcat/ドキュメント/scripts/ServiceRemove.sh'
systemctlを扱うのにルート権限がいるので、このエリアの段階でsudoをつけておきます。
-
CreateService_sh
シェルスクリプトをサービスとして登録するのを支援するスクリプトです。今回のメインコンテンツです。 -
CreateService_py
データとしては入っていますが、アップデートはしていないので非推奨です。 -
ServiceAdd
出来上がったサービスファイルをsystemd登録するスクリプトです。 -
ServiceRemove
登録済みのサービスを削除するスクリプトです。
支援スクリプトを使ってサービスを作成する
前提条件
まず、最初に自動起動を実現するために必要な設定ファイルであるサービスファイルを作ります。
基本的にはシェルスクリプトを起動する前提で話を進めていきます。
なので、Pythonを起動したいっていう人は、Pythonを起動するシェルスクリプトを用意する必要があります。
Pythonを起動するシェルスクリプトはこちらで作成しました。参考にしてください。
前提はこんな感じです。バックアップアプリの自動起動と、タイマー起動をやっていきます。
$ lsconfig.json create.sh main.py requirements.txt start.sh venv
まず最初にサービスを作ります。
この中での起動スクリプトは”start.sh”なのでこれを対象にします。
ユニットファイルの作成
まずはコマンドを起動します。今回は何もないので1番を選択
次にスクリプトのパスを入力します。この時”start.sh”という名前にしておくと自動的に検索されます。
今回はこのままにしてあるので空欄でエンター
続いて引数の入力です。特に受け付けないので、空欄でエンター。その後、サービス名を聞かれるので必ず英数字だけに入力してください。
名前に利用可能な文字はsystemdの仕様を確認するようにしてください。
名前の入力が終わると次は起動条件です。ネットワークのオンライン判定ができます。今回はサーバーなのでYESです。
次にログの出力を聞かれていますが、Pythonの方でloggingしているので、標準出力をファイルに出力する必要はありません。NOです。
全ての入力が終わるとサービスファイルのプレビューが表示されます。
この内容で問題がなければ、Yを押して確定します。
確定するとタイマーを作成するかどうか聞かれます。
定期的な実行をしたい。サービスの場合はこのままタイマーの作成に移ります。なお、ここで作らないを選択してもタイマーだけ作成はできますのでご安心ください。
こんな感じでサービスファイルが完成します。
$ lsR_AutoBackUP.service config.json create.sh main.py requirements.txt start.sh venv
中身はプレビューと同じです。
もし細かい点を書き換えいただければ、登録前に書き換えてしまってください。例えばrootで実行したい場合はユーザーの行を消してください。
自動起動へ登録
出来上がったサービスファイルはServiceAddコマンドを使ってサービスに登録することができます。
サービスに登録したら、自動起動の有効化及び今すぐ実行などを行います。
※タイマーを使う場合はここでは何もしないでください。
$sudo systemctl enable R_AutoBackUP.service$sudo systemctl restart R_AutoBackUP.service
支援スクリプトを使ってタイマーを作成する
次に先ほど作成したサービスを特定の時刻や日付曜日などで定期的に実行できるタイマーを登録していきます。
ユニットファイルの作成
もう一度、先ほどのスクリプトを起動して2を選択するか、中断していない場合は、続けてタイマーの作成をしてください。
まず最初に時刻の入力です。
指示されたフォーマット通りに入力します。
その次に日付を聞かれます。
日付は登録してしまうと月1になってしまうので、基本的には*をお勧めします。
次に曜日の選択です。ここでは各曜日に0から6までの数値が対応つけられており、その数値を入力するとフラグが反転します。フラグを反転させるには、数値を入力してエンターです。
何も入力せずにエンターを押すと入力が確定します。
月、水、金の場合
曜日の入力が終わると確認画面が出ます。今回は毎日23時に実行ですね。
問題がなければYをして確定します。
作成後はこんな感じ。
$ lsR_AutoBackUP.service R_AutoBackUP.timer config.json create.sh main.py old requirements.txt start.sh venv
自動起動の登録
出来上がったユニットファイルをServiceAddを使い登録します。
タイマーで起動する場合はタイマーの方を有効化します。
$ sudo systemctl enable R_AutoBackUP.timerCreated symlink /etc/systemd/system/timers.target.wants/R_AutoBackUP.timer → /etc/systemd/system/R_AutoBackUP.timer.$ sudo systemctl start R_AutoBackUP.timer
ステータスを確認するとこんな感じになっていればOKです。
上の段がサービスの実行状態。タイマーなので止まっているはずです。
下がタイマーの稼働状況。タイマーが待ちになっているはずなので、緑になっているはずです。
これで完了です。
あとは時刻が来た時に本当に動いているか確認してみましょう。
サービスを削除する
ServiceRemoveを使って簡単に削除できます。
タイマーをセットした場合は、先にタイマーを削除してからサービスを削除してください。
$ ServiceRemove R_AutoBackUP.timerR_AutoBackUP.timerFile OKRemoved /etc/systemd/system/timers.target.wants/R_AutoBackUP.timer.$ ServiceRemove R_AutoBackUP.serviceR_AutoBackUP.serviceFile OKRemoved /etc/systemd/system/network-online.target.wants/R_AutoBackUP.service.Removed /etc/systemd/system/multi-user.target.wants/R_AutoBackUP.service.
まとめ
今回はSystemdの簡単追加スクリプトを紹介しました。
ユニットファイルの作成は他のプログラムから使い回してもいいですが、やる回数も多くないので省略している記述があった場合、入力し忘れる恐れがあります。
そのため、今回のような支援ツールを使うことで、毎回同じ品質で作ることができます。
タイマーをつけることはさらに少ないと思うので、使い回すにしてもあれどこをやったかな?みたいな感じになると思います。
追加や削除の方も、そんなに頻繁にやるわけではないですし、中身を見ればわかりますが、特定のディレクトリにデータをコピーしたり、有効化したりと毎回同じことをやらされるんですね。
というわけでこの辺まるっとまとめて支援ツールという感じにしていい感じに収めてみました。
お役に立てば幸いです。
配布情報
配布URL
以下のURLより配布しています。
利用規約に同意の上ご利用ください。
Views: 0