后台运行程序 - Tmux及问题记录

20220826 -
20230314 -

0. 引言

平时进行研究性东西的时候,比较喜欢jupyter-notebook的形式,比如进行数据分析或者模型初期构造的时候,这样能够避免一些繁琐的内容;后来,如果程序固定之后,需要批量化进行实验的时候,就喜欢改成脚本的形式,这样直接跑。

但是平时的时候,喜欢利用实验室的服务器来进行任务,那么远程ssh就成了主要的链接手段。为了批量化进行任务,就需要长时间保持链接,电脑不关机,但是有时候也会因为各种原因,偶尔掉线,那么就导致自己的程序没了。

再后来,就采用nohup的形式,在命令前面带上这个命令,就可以一直跑,不会收到SSH断开链接的问题,但是这种形式的话,就不能实时查看命令的输出状态,当然,可以通过输出日志的形式来看,但总归不是那么方便,毕竟如果想杀死这个进程,好像只能通过kill,不能直接ctrl+C。

最后的时候,选择使用了tmux,其实tmux并不是主要为了后台运行,而是类似一个终端管理页面,同时可以生成跟vim一样的划分页面这样的形式。之前的时候,使用tmux仅仅是类似创建一个新窗口,然后跑了命令就走了,不过今天具体看了看这个工具的命令[1],可以创建窗口,也可以划分页面,这样就可以不用跟之前一样,执行命令之后再退出去进行别的事情更加方便。

进一步,简单查看了linux环境下,其他进行后台运行程序的命令,见文章[2],还有一个ctrl+z的方式,之前也使用过,不过这种命令退出终端就取消了。感觉这几种命令,应该根据自己的需求来看,tmux应该来说比较方便的。哦,之前的时候还使用过screen这种方式,但也仅仅停留在执行命令一下。

1. 使用过程

1.1 注入脚本使用Tmux

平时如果是完全执行tmux,那没什么问题,就是正常跑就可以,跑上,挂上就完事;但是有时候,把命令挂载到tmux,同时我不用跑进去手动执行,就比如远程跑一下就走这种情况。那么就需要在启动的时候注入脚本命令,在问答[3]中给出了答案:
在这里插入图片描述
因为我思考的这个场景是,我在远程通过SSH来部署任务;这里是不是执行SSH命令就可以,而另外一方面,如果过这样执行,可能还要等脚本执行完成,SSH才会结束?!这些问题暂时还没有具体考虑。如果是直接登录终端,那么就没有这个顾虑。另外,是不是还有方式能够直接注入执行脚本到正在运行的tmux呢?

1.2 调整tmux窗口大小

经常调换显示器,或者调整终端大小的话,会把tmux的窗口变得不太适配。特别是我最近使用tqdm来打印进度的时候;又或者我使用了手机登录tmux,这样的结果就是显示终端非常难看。这部分可以看[4]中的解答:

在这里插入图片描述

参考

[1]A Quick and Easy Guide to tmux
[2]How to Run Linux Commands in the Background
[3]How to write a shell script that starts tmux session, and then runs a ruby script
[4]Is there any way to redraw tmux window when switching smaller monitor to bigger one?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值