linux-doc-程序与进程管理命令

nohup

后台运行命令,即使端口ssh,程序依旧运行。
此种方式的缺点是,应用程序没有交互界面了,程序的输出将会输出的一个xxx.out文件中,而且以后无法在界面控制程序的结束。必须通过kill的方式。所以这种方式显得很简单粗鲁,很少使用。

1
nohup 应用程序名 &

常用

1
nohup ./xxx >output 2>&1 &

screen

Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

安装

1
yum install screen

语法

1
2
3
4
5
6
7
8
9
10
11
12
13
# -A  将所有的视窗都调整为目前终端机的大小。
# -d <作业名称>  将指定的screen作业离线。
# -h <行数>  指定视窗的缓冲区行数。
# -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
# -r <作业名称>  恢复离线的screen作业。
# -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
# -s  指定建立新视窗时,所要执行的shell。
# -S <作业名称>  指定screen作业的名称。
# -v  显示版本信息。
# -x  恢复之前离线的screen作业。
# -ls或--list  显示目前所有的screen作业。
# -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

常用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 进入screen
screen

# 后台运行
screen ./xxxx &

# 新建一个叫sessionName的session
screen -S sessionName

# 列出当前所有的session
screen -ls

# 进入session会话
screen -r sessionName

# 远程detach某个session
screen -d sessionName

# 结束当前session并回到sessionName这个session
screen -d -r sessionName

# 关闭会话
screen -X -S session

快捷键

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 暂离当前会话
Ctrl + a, d

# 在当前screen会话中创建一个子会话
Ctrl + a, c

# 子会话列表
Ctrl + a, w

# 上一个子会话
Ctrl + a,p

# 下一个子会话
Ctrl + a,n
# 在第0窗口至第9子会话间切换
Ctrl + a,0-9

jobs

查看当前终端后台运行的任务,但是换了终端就看不到

1
2
# 显示当前终端所有任务的PID,jobs的状态可以是running,stopped,Terminated。+ 号表示当前任务,- 号表示后一个任务。
jobs -l

bg

将一个在后台暂停的命令,变成在后台继续执行

1
2
# 将编号为n的任务转后台运行
bg %n

fg

将后台中的命令调至前台继续运行

1
2
# 将编号为n的任务转前台运行
fg %n

ctrl+z

将一个正在前台执行的命令放到后台,并且处于暂停状态

进程

查看进程所在目录

1
2
3
4
5
6
7
8
9
# 获取进程id
使用ps -aux | grep 进程名称

# 进入到/proc/{进程ID}
# 执行 ls -ail
# 重点查看:cwd 和 exe 对应的链接地址。

cd /proc/11010
ll | grep -E -i 'cwd|exe'