screen / tmuxなどのソリューションが必要な場合(プロセスを長時間実行してもnohup
対話が必要な場合がないため) - 特定のシステムでscreen / tmuxを使用できず、screen / tmuxをインストールすることができない場合に発生します。解決策?
Q:これを達成するために(Linux / AIX /などで)普遍的に(または普遍的に)使用できる「短い」Perlスクリプトはありますか?
これが必要です:
- Perlスクリプトの起動
- 時間がかかる特定のタスクを開始する場合
- たとえば、仕事用ノートブックを閉じる必要があるため、ターミナルを切断します。
- コンソールに再接続画面と同様に実行される長期実行プロセスの表示/制御
そのようなPerlスクリプトを持っている人はいますか?
ベストアンサー1
perl
IO::Pty
適切なモジュールが取り付けられていない場合は、最適ではない可能性があります。
まず、時間がかかる特定のタスク(gtttlt)がパイプとうまく機能する場合、おそらく複雑なことは必要ありません。
mkfifo input
nohup gtttlt <> input > output 2>&1 &
開始gtttlt
(名前付きパイプから入力、通常ファイルとして出力)。だからあなたは添付次に変更してください:
tail -f output & cat > input
expect
配管が機能せず、端末が必要な場合は、疑似端末を起動する項目(例:、zsh
s zpty
、perl
's、IO::Pty
または次)を使用する必要がありますsshd
。
mkfifo input
nohup ssh -tt localhost gtttlt <> input > output 2>&1
そして添付:
stty raw -echo; tail -f output & cat > input
screen
これはまたは実装とは異なりますtmux
。screen
そして、tmux
端末エミュレータを実装します。再接続すると、端末エミュレータの画面内容が表示されます。ここで再接続すると、出力の最後の10行だけが表示されます(オプションをに渡して-n 123
調整できますtail
)。すべてのデータをホスト端末とやり取りするだけです。