最近の Linux では、systemd というツールが導入されています。
systemd にはいろいろな役割があるのですが、その中でも大きいのが「各サービスの管理(操作)」です。 本記事は、この操作を行うコマンドについて、私が面倒に思っていることを書きます。(最初に書いておきますが、大した話しではありません)
systemd を使ったサービスの操作
systemd でサービスを操作する場合、systemctl
コマンドを使用します。
例えば、sshdサービスを開始するのであれば、
systemctl start sshd
sshdサービスを停止するのであれば、
systemctl stop sshd
といったコマンドを実行します。
ご覧頂いた通り、このコマンドは
という順番になっています。
systemd 以前に導入されていた SysVinit
Linux で systemd がよく利用されるようになる前は、SysVinit という管理ツールが一般的でした(Upstart というのもありました)。
こちらのツールで、先ほどと同じ操作を実行しようと思うと、
# sshd サービスをスタートする
service sshd start
# sshd サービスを停止する
service sshd stop
といったコマンドになります。
こちらの場合ですと、引数の順番は
であり、systemd の時と比べると「サービス名」と「操作名」の位置が逆になっています。
どちらのコマンドが便利なのか?
SysVinit に慣れていると、
という発想になっていると思います。
しかし、systemd では、
という順番になります。英語の文法に沿った順番ですね。
これだけでも最初は随分違和感があったのですが、もう一つ困ったことが起きました。
「コマンド実行履歴を使ってコマンドを入力する操作が少し面倒になった」のです。
例えば、「sshd サービスを止めたい」と思った場合(つまり、「systemctl stop sshd
」というコマンドを実行したい)を考えます。
この時、「“stop” という単語よりも、具体的なサービス名である “sshd” でコマンドを探した方が候補を絞りやすいだろう」と考えますので、”sshd” でコマンド履歴を検索するのが普通だと思います。(操作名のところは start
, stop
以外にもいろいろ用意されており、それらをハッキリ記憶しておくのが面倒というのもあります。)
この場合、Ctrl + r キーを押してから(コマンド履歴を検索するキーです)、”sshd” と入力すると、
systemctrl start sshd
が最初にサジェストされ、これを選んだとします。
すると、この3つの単語の中の真ん中にある start
を stop
に修正することになり、カーソルを真ん中まで移動する必要があるのです。 SysVinit の場合であれば、start
の部分は末尾であるため Ctrl + e キーでカーソルを末尾に移動させ、そこから stop
に修正するのにあまりストレスを感じませんでした。しかし、カーソルを真ん中まで移動させるのが微妙なストレスになるのです。私だけですかね?
まとめ
大した話ではないのですが、皆さんどうしているでしょうか?
何かよい方法、考え方ってあるのでしょうか。