特定のシステムサービスのコンテキストでコマンドを実行する

特定のシステムサービスのコンテキストでコマンドを実行する

私はしばしば次の問題に直面しています。コマンドが私のユーザーシェルで実行されているのか、Systemdサービスの一部として実行されているのかによって、コマンドは異なる結果を生成します(例:ExecStart

できるだけ近くに特定のSystemdサービスを模倣するシェルでコマンドを実行する方法はありますかdhcpcd.service?同じ機能、環境変数、および利用可能なリソースを持つことが始まりです。

ip link現在の問題では、私の問題を再現するのに問題があります。しかし、ExectStartこれはdhcpcd.serviceシステムサービスをデバッグするのに非常に便利です。

ベストアンサー1

あなたはそれを使用することができますsystemd-run

# systemd-run ip link                                           
Running as unit: run-r2723175b10a543f38faddda99baa8ca3.service
# journalctl -u run-r2723175b10a543f38faddda99baa8ca3.service
-- Logs begin at Fri 2020-09-11 23:45:32 CEST, end at Fri 2020-09-18 15:33:51 CEST. --
Sep 18 15:33:51 w systemd[1]: Started /usr/bin/ip link.
Sep 18 15:33:51 w ip[3904]: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
...

-Eサービス環境を「模倣する」には、その他のフラグを使用してください。

おすすめ記事