Linux 常用命令
# 1、nohup
在工作中,我们可能经常要在服务器上跑程序,有可能要跑的程序耗时很长,需要运行一段时间,我们希望即使关闭终端,程序不受影响,继续运行。在Linux中的nohup
命令可以达到这种效果。
nohup
是英语 no hangup 的缩写,是不挂断的意思,也就是指程序不退出,用在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
接下来将详细介绍一下nohup
命令的具体用法。
命令语法:
nohup 命令 参数
nohup 选项
选项说明:
--help # 显示此帮助信息并退出
--version # 显示版本信息并退出
注意:使用nohup命令时,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:
nohup python3 test.py > out.txt &
如果想让程序真正的在后台运行,可以加上&
符号。
nohup python3 test.py > out.txt &
关闭终端,重新打开,使用ps
命令查一下进程,就会发现程序还在运行。
$ ps -aux | grep python
psh 36313 0.0 0.2 17768 8120 ? S 16:25 0:00 python3 test.py
这里如果想要把标准错误和标准输出都重定向到指定的out.txt文件中,可以使用2>&1
符号,2>&1
符号的意思是将将标准错误 2 重定向到标准输出 &1。
- 0 stdin (standard input,标准输入)
- 1 stdout (standard output,标准输出)
- 2 stderr (standard error,标准错误输出)
nohup python3 test.py > out.txt 2>&1 &
nohup
命令结合&
符号可以使进程在后台运行,即使关闭了终端依然不受影响。
# 2、screen
screen是一款用于命令行终端切换的工具,用户可以通过该工具同时连接多个本地或远程的命令行会话,并在其间自由切换。 在screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。
# 安装screen
在一些流行的Linux发行版上已经预装screen,可以使用screen -v
命令检查服务器上是否已经安装。
如果在没有安装screen,可以使用系统提供的包管理器进行安装。
CentOS:
yum -y install screen
Ubuntu:
apt-get -y install screen
# 使用
通常情况下,screen创建的终端,有两个工作模式。
- Attached:表示当前screen正在作为主终端使用,为活跃状态。
- Detached:表示当前screen正在后台使用,为非激发状态。
# 语法
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]
参数说明:
- -A 将所有的视窗都调整为目前终端机的大小。
- -d <作业名称> 将指定的screen作业离线。
- -h <行数> 指定视窗的缓冲区行数。
- -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
- -r <作业名称> 恢复离线的screen作业。
- -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
- -s 指定建立新视窗时,所要执行的shell。
- -S <作业名称> 指定screen作业的名称。
- -v 显示版本信息。
- -x 恢复之前离线的screen作业。
- -ls或--list 显示目前所有的screen作业。
- -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
# 操作
# 1.启动screen终端
# 使用 -S 创建一个叫name的screen终端
screen -S name
或
# 使用 -R 创建一个叫name的screen终端
screen -R name
之后,会新建一个空白的Terminal,这个就是新的screen终端了,可以在这个新终端里运行我们想要运行的程序或脚本等。
# 2.离开screen终端
要想离开当前的screen终端,回到主终端,可以按下Ctrl + a和d键,离开后,screen会话仍将是活跃的,之后可以随时重新连接。
# 3.重新连接到screen终端
screen -r
如果你有多个 screen 会话,你可以用 ls 参数列出它们。
screen -ls
There are screens on:
45214.session3 (2021年09月30日 10时19分41秒) (Detached)
45195.session2 (2021年09月30日 10时19分34秒) (Detached)
45132.session1 (2021年09月30日 10时19分13秒) (Detached)
3 Sockets in /run/screen/S-psh.
如上,有三个活跃的screen会话,如果想要重新连接到“session2”会话,可以执行:
screen -r 45195
或者
screen -r -S session2
# 4.中止screen终端
可以按下Ctrl+d,或者在命令行中使用exit
命令。
要查看screen命令所有的功能,你可以使用man screen
命令查看screen的man手册。
# 快捷命令
screen
=========================
1.创建screen会话
screen -S listener
2.暂时离开,保留screen会话中的任务或程序
Ctrl+a d(即按住Ctrl,依次再按a,d)
3.恢复screen会话
screen -r listener
4.关闭screen的会话
exit
常用screen参数
===================================================
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session
Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换