SSH 常用的nohup和screen

nohup命令

nohup命令参考

nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

nohup的简单使用

在执行命令时在命令前面加上nohup,然后回车开始运行。

这时你会发现该有的输出其实并没有输出出来,这个时候不要方,这是因为nohup命令将你的所有输出都输出到了当前文件夹下的nohup.out文件中,自己可以使用vim指令进行一个查看。

nohup命令及其输出文件

  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

  该命令的一般形式为:nohup command &

  使用nohup命令提交作业

  如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

  nohup command > myout.file 2>&1 &

使用 jobs 查看任务。

使用 fg %n 关闭。

screen命令

简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。在screen中创建一个新的窗口有这样几种方式:

1.直接在命令行键入screen命令

$ screen

Screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切换到前一个窗口。

2.Screen命令后跟你要执行的程序。

$ screen 【后面跟你执行程序的命令】

Screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口/会话。

3.以上两种方式都创建新的screen会话。我们还可以在一个已有screen会话中创建新的窗口。在当前screen窗口中键入C-a c ,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口。

screen还有更高级的功能。你可以不中断screen窗口中程序的运行而暂时断开(detach)screen会话,并在随后时间重新连接(attach)该会话,重新控制各窗口中运行的程序。

screen的简单使用

在所要执行的指令前添加screen.然后程序的运行等一切正常。(nohup的输出是定向到了nohup.out文件中,然而screen指令的输出是直接输出到了屏幕上的)

这个时候如果ssh终端断开了连接。我们只需要再次连接服务器然后输入指令

screen -ls


然后会得到类似下面的结果:

There is a screen on:

27267.pts-19.TITAN-X (09/08/2017 03:49:10 PM) (Detached)

1 Socket in /var/run/screen/S-huanghailiang.

这里就会显示ssh断开之前的程序,其实断开后程序依然在后台在运行,只是我们这个时候需要将它放到前台来运行。这个时候我们们已经通过screen -ls查询到了线程号是27267了,所以我们只需要执行下面的指令即可恢复到前台了。

screen -r 27267

如果想杀掉终端可以执行

kill 27267

其他更多的指令可以通过screen --help来进行学习。

你可能感兴趣的:(SSH 常用的nohup和screen)