systemctlに初めて触れたので、centosを起動するときにコンソールに仮想マシンのIPアドレスを表示したいと思います。
サービスを作成して有効にしました。
[root@centos-3 system]# cat show-ip-on-boot.service
[Unit]
Description=Show IP of eno interface on boot
[Service]
Type=oneshot
ExecStart=/usr/bin/show-ip-on-boot.sh
[Install]
WantedBy=multi-user.target
"show-ip-on-boot.sh"スクリプトは次のとおりです。
#!/bin/sh
ip a | grep "inet" | grep "eno" | awk -F/ '{print $1}' | awk '{print $2}'
サービスを手動で開始すると、サービスが稼働していることをログで確認できます。
[root@centos-3 ~]# journalctl -u show-ip-on-boot
-- Logs begin at Thu 2016-10-06 13:59:38 CEST, end at Thu 2016-10-06 14:15:37 CEST. --
Oct 06 14:04:32 centos-3.localdomain systemd[1]: Starting Show IP of eno interface on boot...
Oct 06 14:04:32 centos-3.localdomain show-ip-on-boot.sh[2180]: 192.168.0.43
Oct 06 14:04:32 centos-3.localdomain systemd[1]: Started Show IP of eno interface on boot.
しかし、起動時にコンソールに表示されるものはどのように見えますか?スクリプトに追加する必要がありますか?
また、再起動すると、サービスは開始されますがコマンドを実行しないというログが表示されます。
[root@centos-3 ~]# systemctl status show-ip-on-boot.service
â show-ip-on-boot.service - Show IP of eno interface on boot
Loaded: loaded (/etc/systemd/system/show-ip-on-boot.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Thu 2016-10-06 13:33:55 CEST; 1min 52s ago
Process: 740 ExecStart=/usr/bin/show-ip-on-boot.sh (code=exited, status=0/SUCCESS)
Main PID: 740 (code=exited, status=0/SUCCESS)
Oct 06 13:33:54 centos-3.localdomain systemd[1]: Starting Show IP of eno interface on boot...
Oct 06 13:33:55 centos-3.localdomain systemd[1]: Started Show IP of eno interface on boot.
システムの概念から何かが欠けている可能性があります。この問題についてのヒントをいただけますか?ありがとうございます。
答え1
systemdはサービスの出力を収集してそれを記録します(通常これはユーザーが望むものであるため、サービスの出力は永続的です)。
StandardOutput
次の設定とオプションを使用して、特定のStandardError
サービスの動作を変更できます。システムの実行(5)マニュアルページには次のように記載されています。
StandardOutput=
実行されたプロセスのファイル記述子1(STDOUT)が接続される場所を制御します。継承、null、tty、ジャーナル、syslog、kmsg、ジャーナル+コンソール、syslog+コンソール、kmsg+コンソール、またはソケットのいずれかを使用します。
[...]
journal+console
、syslog+console
これはkmsg+console
上記の3つのオプションと同様に機能しますが、出力をシステムコンソールにコピーすることもできます。
したがって、理論的には次の方法が必要です。
[Service]
Type=oneshot
ExecStart=/usr/bin/show-ip-on-boot.sh
StandardOutput=journal+console
答え2
サービスは必要ありません。 /etc/issue ファイルに 1 行を追加するだけです。私の/etc/issueファイルの下:
\S
カーネル\rは\mにあります。
私のIPアドレス:\ 4 {enp0s3} <-----行を追加、
VirtualBoxでCentos 7を使用します。
「enp03s」はIPを知りたいネットワークインターフェースカードです。