当需要类似屏幕/ tmux的解决方案时会发生什么(让流程长时间运行,但是因为可能需要交互而没有nohup) – 但是在给定的机器上没有screen / tmux,并且安装了屏幕/编译它不是一个解决方案?
问:是否有任何“短”perl脚本通常(或通常不会)用于实现此目标(在Linux / AIX /等上)?
只需要这个:
>启动perl脚本
>开始需要很长时间的特定事情
>从终端卸下,例如:因为工作笔记本需要关闭
下
>重新连接到控制台以查看/控制已启动的长时间运行
过程,就像屏幕一样
有人有像这样的perl脚本吗?
解决方法:
除非安装了IO :: Pty模块,否则perl可能不是最合适的.
首先,如果给定的东西需要很长时间(gtttlt)可以正常使用管道,也许你不需要任何复杂的东西.
mkfifo input
nohup gtttlt <> input > output 2>&1 &
启动gtttlt(从命名管道输入,输出到常规文件).然后你附上:
tail -f output & cat > input
如果管道不能做,你需要一个终端,那么你会想要使用一些可以启动伪终端的东西,比如expect,zsh的zpty,perl的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来进行调整).我们只是将所有数据传递到主机终端或从主机终端传递数据.