私の状況
以下にいくつかの新しいデバイスファイルをインストールしました。$HOME/.local/share/systemd/user/
ls -1 $HOME/.local/share/systemd/user/
some.service
some.timer
some_other.service
正しくロードするために、次のコマンドを実行しました。systemctl --user daemon-reload
オートコンプリートに表示されますsystemctl --user enable <tab> <tab>
。私が探しているのは、後でスクリプトを書く方法です。接着剤有効にするには、現在有効になっていないデバイスのリストを表示してください。
私の質問
ls -1 $HOME/.local/share/systemd/user/
私が探しているリストを取得するよりも良い方法がありますか?
systemctl
オートコンプリートでユニットについて学びます。しかし、かなり簡単な質問のように見えるので、それほど深く入りたくありません。私が探していますsystemctlは、利用可能なすべてのサービス(無効化を含む)を一覧表示します。とSystemdドキュメントの一部がありますが、目的のものが見つかりません。完璧である必要はありません。オートコンプリートリストには、フィルタリングできる他の項目があります。これは私にとって問題ではありません。
ベストアンサー1
通常、systemctl --user list-unit-files
すべてのユーザーサービスのリストが表示されます。
したがって、次のコマンドを実行して無効なユーザーサービスのリストを取得できます。
systemctl --user --full --no-legend --no-pager list-unit-files --state=disabled
ところで、あなたは見ることができますbashファイルの完成 無効なサービスのリストを取得する方法を確認してくださいsystemctl
。非常に似ています。
__systemctl() {
local mode=$1; shift 1
systemctl $mode --full --legend=no --no-pager --plain "$@" 2>/dev/null
}
[...]
__get_disabled_units() { __systemctl $1 list-unit-files "$2*" \
| while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }
ローカルコンピュータでもファイルを見つけることができます。私の場合はlocatedでしたが、/usr/share/bash-completion/completions/systemctl
すべてのディストリビューションの標準パスであるかどうかはわかりません。