複数のexecStartを持つSystemd [終了しました]。
2023-09-07 08:36:14
質問
同じスクリプトを異なる入力パラメータで開始するサービスを作成することが可能かどうか知りたいです。 例えば、次のようなものです。
[Unit]
Description=script description
[Service]
Type=simple
ExecStart=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
ということは、シリアルモードで起動するのでしょうか? それとも2つのプロセスに分けるのでしょうか?
どのように解決するのですか?
もし
Type=simple
を指定した場合、ExecStartは1つしか指定できませんが、ユニットファイルにはいくつでも
ExecStartPre
,
ExecStartPost
しかし、これらは連続的に実行され、一回起動したものはすべて次のコマンドを起動する前に kill されるため、長時間実行するコマンドには適していません。
もし
Type=oneshot
の場合、複数の ExecStart を指定しても、それらは並列ではなく、連続的に実行されます。
複数のユニットを並列に実行したい場合、いくつかできることがあります。
1つのパラメータで異なる場合
テンプレートユニットを使用することができますので、テンプレートユニットを作成する際に
/etc/systemd/system/[email protected]
.
ノート
(その
@
が重要)。
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
そして、実行する。
$ systemctl start [email protected] [email protected]
または...
対象の依存関係
1つのターゲットにリンクするユニットを複数作成することができます。
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
そして、.serviceユニットを以下のように変更します。
WantedBy=bar.target
のようにします。
#/etc/systemd/system/[email protected]
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
そして、並行して必要なfooサービスを有効にし、barターゲットをこのように起動するだけです。
$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target
注意 これはテンプレートユニットだけでなく、あらゆるタイプのユニットで動作すること。
関連
-
LinuxでSteamをダウンロードしインストールする方法
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
deepin20を使って、ドローイングボードで画像を開くには?deepinのお絵かき掲示板で画像を開く2つの方法
-
deepin20のデスクトップアイコンのスタイルを変更する方法は?deepinのアイコンテーマを変更するためのヒント
-
[解決済み] ビーコン待ちでハングアップしたリーバー
-
[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] LinuxでJavaアプリケーションをサービスとして動作させる
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
deepin linuxでroot権限に切り替えるには?Deepinでrootに切り替えるためのヒント
-
deepin20のデフォルトブラウザを設定するには?deepinにデフォルトブラウザを追加するためのヒント
-
Deepin20システムのフォントを設定するには?Deepin端末のフォントサイズを設定する方法
-
ubuntu 12.04 eclipse でプログラム g++ がパスに見つからなかったと報告される。
-
apache startup error (98) Address already in use: make_sock: could not bind to...
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] エクスポートあり/なしの変数の定義
-
[解決済み] 特定のファイル/フォルダを除外してディレクトリをtarするシェルコマンド