2012-11 / 2012-11-10

前のエントリ: CSファーストステージ2戦目 / 西武ライオンズ戦@西武ドーム [diary]
次のエントリ: ツイートのサイト埋め込み [chalow]

アップデート後に要リブートの場合はscreenのステータス行に通知 (11/11 .screenrc 単体版追記)
2012-11-10-1 / カテゴリ: [ubuntu][screen] / [permlink]

前から気になってたんだけど、GNOMEデスクトップで使ってたら問題ないんだけど、ssh接続のみとか画面なしでターミナルのみで使ってると、aptでカーネル込みで更新して要リブートの場合にsshで接続しなおさないと明示的にメッセージが表示されないのが不便だなーと何となくつぶやいたら、ざきさんからヒントが。


ファイルの中身を追っていくと、リブートが必要なときは /var/run/reboot-required の中身を表示していることが判明。しばらく点火していなくてカーネルの更新がありそうなノートに入れてる ubuntu で試したらビンゴ。普段は存在しないこのファイル、「*** システムの再起動が必要です ***」という中身が入ってた。

この状態を普段使ってる screen のステータス行に表示できたらスゲー捗るなと思って設定してみた。
こんな感じ(右下)。


.screenrc のみで構成できれば楽だったけどちょっとわからなかったのでスクリプト書いた。 ワンライナーも教わったので後述
#!/bin/sh

FILE=/var/run/reboot-required

if [ -f ${FILE} ]; then
echo " !!REBOOT REQUIRED!!"
fi

んで .screenrc (抜粋)
hardstatus alwayslastline "%{= kw}%-w%{= rw}% %t%{= kw}%+w %=%H %c / %l%0`"

backtick 0 60 60 /home/zaki/bin/reboot-required.sh
外部コマンドの実行結果を表示するには、%0` の部分。
%id`
で、後述の
backtick id lifespan autorefresh cmd
のコマンドを実行・結果表示する。man参照
面倒だったら /etc/update-motd.d/98-reboot-required を直接叩いても良いかもね。

というか、ツイートのサイト埋め込みに対応しないとダメだな(笑)
対応した [2012-11-11-1]



11/11 追記
ざきさんがここを見てくださったようで、.screenrc 単体で書けるシェルスクリプトを教えてもらったのでこんな感じになった。
backtick 0 60 60 /bin/sh -c '[ -f "/var/run/reboot-required" ] && echo " !!REBOOT REQUIRED!!"'




というかmanちゃんと見ろよってね>自分
           -c               Read commands from the command_string operand
                            instead of from the standard input.  Special
                            parameter 0 will be set from the command_name op‐
                            erand and the positional parameters ($1, $2, etc.)
                            set from the remaining argument operands.

ので、~/bin/reboot-required.sh はポイーで。
前のエントリ: CSファーストステージ2戦目 / 西武ライオンズ戦@西武ドーム [diary]
次のエントリ: ツイートのサイト埋め込み [chalow]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12