sshで直接コマンドを実行して、プロセスを残さない(?)
sshコマンドからプロセスが残るような(tail -fとか)コマンドを実行して、sshを終了(ctrl+c)させてプロセスが残っていた。
とくにmultitailで複数の「ssh host tail -f」を同時実行して、ログの数だけプロセスがホストに残ったり。
一度リモートでログインしてから実行する……という真面目な方法で回避していたけど、ログの監視だけとか連日だったので、ちゃんと調べてみた。
で、「ssh -t」で強制的に仮想端末(疑似tty)を割り当てれば、ローカル側の制御端末から、ctrl+cでプロセスをちゃんと終了できる。
↑ちゃんと理解できてないから、あやふや
#!/bin/sh SSH="/usr/bin/ssh" SRVTAIL="/usr/bin/tail" HOST="hoge" LOG="/var/log/error-log" LINE=100 $SSH -t $HOST "${SRVTAIL} -n ${LINE} -f ${LOG}"
とか
#!/bin/sh SSH="/usr/bin/ssh" HOST="hoge" SRVFREE="/usr/bin/free" INTERVAL=5 $SSH -t $HOST "${SRVFREE} -m -s ${INTERVAL}"
ttyとか、ぜんぜん理解できてない……