他の既存のシステムセッションまたはスコープでコマンドを実行するには?
私が知る限り、プロセスが2つのうちの1つにある限り、セッションとセッションの範囲単位の間に違いはありません。
この問題は、Gnomeの端末で実行されるコマンドですgnome-terminal-server.service
。session-xx.scope
(注:これは反対です。これ既存のプロセスの新しい範囲を作成する必要がある問題。 )
答え1
@ガンマ関数正しい方向を指し、次のコマンドを正常に使用しました。
$ systemd-run --user --scope --unit="app-sleep" --property=Delegate=yes sleep 9999 &
$ disown
$ sleep 8888 &
$ pid=$(jobs -p)
$ busctl --user call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager AttachProcessesToUnit ssau "app-sleep.scope" / 1 "$pid"
ここssau
(私の意見ではstring
、、string
)はarray of unsigned
関数に渡されたパラメータの種類を表しAttachProcessesToUnit
、この関数のドキュメントはにありますman:org.freedesktop.systemd1(5)
。
メモ:
- 接続する機器を設定する必要があります
Delegate=yes
(参照man:systemd.resource-control(5)
)。 - pid配列を渡すには、pidの前に配列の長さ(上記の例では1)を渡す必要があります。
指定した範囲に接続した後、またはを介してsystemd-cgls
範囲の子プロセスを表示できますsystemctl --user status app-sleep.scope
。