私の状況

私の状況

私の状況

以下にいくつかの新しいデバイスファイルをインストールしました。$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すべてのディストリビューションの標準パスであるかどうかはわかりません。

おすすめ記事