刚开始使用linux作为跑代码的服务器,生疏的背景让我吃了不少亏。记录一下一般用于在linux服务器上跑大型程序的方法。
这个“大型程序”的定义是:程序的run time很长。
方法一:screen 或者 tmux。
都可以用来创建一个会话,将大型程序在会话中运行,当遇到退出终端、网络中断等情况,程序不受影响。
大多数都自带screen工具的吧,tmux需要安装。我目前用的就是screen。
screen [-S sessionName]
创建一个会话,可选参数-S,给新建的会话命名
screen -r sessionName | pid
attach一个会话到当前窗口
screen -d pid
从当前窗口detach当前会话
screen -ls
查看所有screen会话
另:screen工具还自带ctrl + a + ?组合键来实现操作,我一般就用ctrl+a+d来实现detatch功能。
方法二: “command” + “&”
“&”表示将前面的指令放到后台去运行,不占用前景窗口
方法三:ctrl+z暂停程序,可以临时去做其它事情,然后再恢复运行程序。但是此操作不保险,因为有一些程序可能有时间限制等因素导致暂停后会无法再启动的问题。
暂停程序后,可以通过jobs查看后台的程序。例如结果如下:
[1]- Stopped sh myscript.sh
[2]+ Stopped vi mynote
其中,“+”表示最近一次操作的任务。“-”表示第二个最近操作的任务。
如果想看到任务对应的PID,就用 jobs -l
fg pid | %jobid
将后台程序调到前台来运行
bg pid | %jobid
将后台的程序在后台运行起来
最后,想要说的是kill来管理后台程序。
因为用ctrl+z是暂停了程序,后头你也不再需要重启这个任务,可以用kill来做清理。
kill -signal pid | %jobid
signal参数可以由kill -l查看到。如下:
signal :代表給予後面接的那個工作什麼樣的指示囉!用 man 7 signal 可知:
-1 :重新讀取一次參數的設定檔 (類似 reload);
-2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
-9 :立刻強制刪除一個工作;
-15:以正常的程序方式終止一項工作。與 -9 是不一樣的。
后期再发现好的方法,再来更新。。。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于