動かざることバグの如し

近づきたいよ 君の理想に

特定の文字列を含むSystemctl serviceを一括再起動するコマンド

環境

やりたいこと

Ubuntuでは多くのサービスがsystemdで管理されている。たまに複数のサービスを一気に再起動したいときもある。

そこで特定の文字列を含むsystemdのserviceを一発で再起動させるコマンドがほしい

コマンド

例えば末尾に「puma」を含むサービスを一括再起動したい場合は以下

systemctl list-units --type=service --all | grep 'puma.service' | awk '{print $1}' | xargs -r systemctl restart

このコマンドは、まず systemctl list-units で全てのサービスをリストし、その中から puma.service を含むものを grep でフィルタリングする。 次に awk でサービス名を抽出し、xargs を使って systemctl restart コマンドを実行していく。