アップデート後に要リブートの場合はscreenのステータス行に通知 (11/11 .screenrc 単体版追記)
2012-11-10-1 / カテゴリ: [ubuntu][screen] / [permlink]
前から気になってたんだけど、GNOMEデスクトップで使ってたら問題ないんだけど、ssh接続のみとか画面なしでターミナルのみで使ってると、aptでカーネル込みで更新して要リブートの場合にsshで接続しなおさないと明示的にメッセージが表示されないのが不便だなーと何となくつぶやいたら、ざきさんからヒントが。
ファイルの中身を追っていくと、リブートが必要なときは /var/run/reboot-required の中身を表示していることが判明。しばらく点火していなくてカーネルの更新がありそうなノートに入れてる ubuntu で試したらビンゴ。普段は存在しないこのファイル、「*** システムの再起動が必要です ***」という中身が入ってた。
この状態を普段使ってる screen のステータス行に表示できたらスゲー捗るなと思って設定してみた。
こんな感じ(右下)。
.screenrc のみで構成できれば楽だったけどちょっとわからなかったのでスクリプト書いた。 ワンライナーも教わったので後述
んで .screenrc (抜粋)
面倒だったら /etc/update-motd.d/98-reboot-required を直接叩いても良いかもね。
というか、ツイートのサイト埋め込みに対応しないとダメだな(笑)
対応した [2012-11-11-1]
11/11 追記
ざきさんがここを見てくださったようで、.screenrc 単体で書けるシェルスクリプトを教えてもらったのでこんな感じになった。
というかmanちゃんと見ろよってね>自分
ので、~/bin/reboot-required.sh はポイーで。
@zaki_hmkc これかな /etc/update-motd.d/98-reboot-required
— @zaki50 さん (@zaki50) 11月 10, 2012
ファイルの中身を追っていくと、リブートが必要なときは /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!!"'
@zaki_hmkc backtick 0 60 60 /bin/sh -c 'if [ -f "/var/run/reboot-required" ]; then echo " !!REBOOT REQUIRED!!"; fi'
— @zaki50 さん (@zaki50) 11月 11, 2012
@zaki_hmkc スクリプトの部分は '[ -f "/var/run/reboot-required" ] && echo "!!REBOOT REQUIRED!!"' のほうが短いのでわたしならこっちで書くかな
— @zaki50 さん (@zaki50) 11月 11, 2012
というか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 はポイーで。
別ターミナルで動いているscreenに外部からコマンド実行
2007-03-16-2 / カテゴリ: [screen] / [permlink]
-X を使う。
Manpage of SCREENより。
ので
でも同時に実行できない…? (screen -X ... -X ... はダメだった)
注意点として、以降の新ウィンドウ生成は、ここで指定したディレクトリになってしまう。
ただし、生きている screen プロセスがない場合は、全部失敗する...
生きていても detach されていれば、atach せにゃ使えない...
ちなみに cygwin の場合、「ファイル名を指定して実行(R)...」からは、screen がコマンドプロンプト上からしか使えない(This is cannot be run in DOS mode)っぽいけど、
だいなとの連携はまた後で考えよう…
Manpage of SCREENより。
-X
動作中の screen セッションに特定のコマンドを送る。 -d や -r オプションを用いれば、アタッチされているセッションやデタッチされているセッションのみを探すよう、screen に伝えることもできる。ただしこのコマンドは、セッションがパスワードで保護されている場合には動作しないことに注意。
外部から新しいウィンドウを作る
% screen -X screen
外部から新しいウィンドウを作ってそこでプログラムを実行する
% screen -X screen lv /etc/hostsただし、プログラム終了でウィンドウは破棄される…
外部から指定したディレクトリをカレントとして新しいウィンドウを作る
多分そんな機能はない…ので
% screen -X chdir /path/to; screen -X screenchdir [path]で、新しいウィンドウを生成したときのカレントディレクトリを変更できる。んで、新しいウィンドウ生成コマンドを発行。
でも同時に実行できない…? (screen -X ... -X ... はダメだった)
注意点として、以降の新ウィンドウ生成は、ここで指定したディレクトリになってしまう。
ただし、生きている screen プロセスがない場合は、全部失敗する...
生きていても detach されていれば、atach せにゃ使えない...
ちなみに cygwin の場合、「ファイル名を指定して実行(R)...」からは、screen がコマンドプロンプト上からしか使えない(This is cannot be run in DOS mode)っぽいけど、
zsh -c "screen -X screen"で起動は可能(実行時にコマンドプロンプトが表示されるけど)
だいなとの連携はまた後で考えよう…
Cygwin に screen インストール(リベンジ)
2005-09-25-3 / カテゴリ: [win][cygwin][screen] / [permlink]
[2005-06-09-1]の続き。なんとなく再チャレンジ。
で、調べてみると、conftest プロセスが実行中で削除できないみたい。
rm は効かないが、mv は効くようなので、configure スクリプトで rm のところを mv に変えてみた。
変更点は、4263 行目付近の
すると、configure はとりあえず正常に終了した。
が、make すると、
…続く orz
configure: checking fifos... - your fifos are usable rm: cannot remove `conftest.exe': Permission deniedやっぱ同じところでエラーになり、conftest.exe が削除できない。
で、調べてみると、conftest プロセスが実行中で削除できないみたい。
rm は効かないが、mv は効くようなので、configure スクリプトで rm のところを mv に変えてみた。
変更点は、4263 行目付近の
fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f /tmp/conftest*の直後に
if [ -f conftest.exe ]; then mv conftest.exe /tmp/zzz fiと追加。
すると、configure はとりあえず正常に終了した。
が、make すると、
hmiyazaki@chaource:/usr/local/src/screen-4.0.2$ make CPP="gcc -E " srcdir=. sh ./osdef.sh AWK=gawk CC="gcc -g -O2" srcdir=. sh ./comm.sh AWK=gawk srcdir=. sh ./term.sh gcc -c -I. -I. -g -O2 screen.c gcc -c -I. -I. -g -O2 ansi.c gcc -c -I. -I. -g -O2 fileio.c gcc -c -I. -I. -g -O2 mark.c gcc -c -I. -I. -g -O2 misc.c misc.c: In function `xsetenv': misc.c:619: error: 関数 `setenv' への引数が少なすぎます make: *** [misc.o] エラー 1
…続く orz
Referrer (Inside):
[2007-03-16-1]
Cygwin に screen インストール
2005-06-09-1 / カテゴリ: [win][cygwin][screen] / [permlink]
パッケージはないのでソールから。
でも、./configure で
でも、./configure で
rm: cannot remove `conftest.exe': Permission deniedが、大量にでて、Makefile ができない…なんで? パーミッションは別におかしくないし…。でもシェル上から手動で rm も効かない。
Referrer (Inside):
[2005-09-25-3]
screen パスワード
2004-11-26-2 / カテゴリ: [linux][command][screen] / [permlink]
コマンドライン上の
プレーンな文字列をセットすると、resumeできなくなるので注意
なので、まずは、引数無しで
パスワードが screen のコピーバッファに入る(バージョンによっては
この時点でパスワードが設定される?)ので、次は
password [crypted_pw]は、crypt で暗号化されたパスワード を設定
プレーンな文字列をセットすると、resumeできなくなるので注意
なので、まずは、引数無しで
passwordを実行。パスワードを2回聞かれるので入力すると、cryptで暗号化された
パスワードが screen のコピーバッファに入る(バージョンによっては
この時点でパスワードが設定される?)ので、次は
password [screenバッファのpaste]を実行
screen 画面分割
2004-11-26-1 / カテゴリ: [linux][command][screen] / [permlink]
C-a Shift-s で分割
C-a shift-q で解除
C-a C-i でフレーム(?)移動
移動した後、C-a n/p でバッファ(?)切り替える必要あるけど
C-a shift-q で解除
C-a C-i でフレーム(?)移動
移動した後、C-a n/p でバッファ(?)切り替える必要あるけど
screen 使い方2
2004-06-16-1 / カテゴリ: [unix][linux][command][screen] / [permlink]
C-a C-c 新規ウインドウの生成・ウインドウ切り替え
C-a (num:0~9) ウインドウの切り替え
C-a C-n 次のウインドウに切り替え(C-a n / C-a SPC でもOK)
C-a C-p 前のウインドウに切り替え(C-a p / C-a h / C-a BS でもOK)
C-a N 現在のウインドウ番号の表示
C-a C-w ウインドウリストの表示
C-a C-k 現在のウインドウを破棄(C-a k でもOK)
C-a ? キーアサインの表示
C-a (num:0~9) ウインドウの切り替え
C-a C-n 次のウインドウに切り替え(C-a n / C-a SPC でもOK)
C-a C-p 前のウインドウに切り替え(C-a p / C-a h / C-a BS でもOK)
C-a N 現在のウインドウ番号の表示
C-a C-w ウインドウリストの表示
C-a C-k 現在のウインドウを破棄(C-a k でもOK)
C-a ? キーアサインの表示
screen インストール(Solaris)
2004-05-12-1 / カテゴリ: [unix][Solaris][command][screen] / [permlink]
src: ftp://ftp.uni-erlangen.de/pub/utilities/screen/
解説: http://www.kawaz.jp/pukiwiki/?screen など
解説: http://www.kawaz.jp/pukiwiki/?screen など
./configure --prefix=/export/home/miyazaki/local/screen-4.0.2
最終更新時間: 2013-05-02 16:12