linux后台运行的几种方式(小结)
1、nohup
将程序以忽略挂起信号的方式运行起来
补充说明
nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将nohup命令的输出重定向到终端,输出都将附加到当前目录的nohup.out文件中。
如果当前目录的nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。
如果没有文件能创建或打开以用于追加,那么command参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
简单实例:
nohupcommand&
指定输出实例
nohupcommand>myout.file2>&1&
其他相关命令
ctrl+z#可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
fg#将后台任务切换到前台执行
bg#将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg%jobnumber将选中的命令调出
jobs#查看后台运行的状态,jobs-l选项可显示所有任务的PID
ps-ef|grepcommand或者psaux|grepcommand#查看进程
kill-9进程id#杀掉对应的进程,
更高级的用法如下:
psaux|grepcommand|grep-vgrep|awk'{print$1}'|xargskill-9#这个表示直接通过command获取进程id并直接kill掉
2、screen
用于命令行终端切换
a、会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,
用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen-r就可以恢复会话的运行。
同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)
b、多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,
并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,
可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。会话共享Screen可以让一个或多个用户
从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,
可以对窗口进行密码保护。
c、screen的安装
yuminstall-yscreen
基本语法
screen-AmRvx-[ls-wipe][-d<作业名称>][-h<行数>][-r<作业名称>][-s][-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作业。
常用screen参数
screen-Syourname->新建一个叫yourname的session
screen-ls->列出当前所有的session
screen-ryourname->回到yourname这个session
screen-dyourname->远程detach某个session
screen-d-ryourname->结束当前session并回到yourname这个session
在每个screensession下,所有命令都以ctrl+a(Ctrl+a)开始。
Ctrl+a?->显示所有键绑定信息
Ctrl+ac->创建一个新的运行shell的窗口并切换到该窗口
Ctrl+an->Next,切换到下一个window
Ctrl+ap->Previous,切换到前一个window
Ctrl+a0..9->切换到第0..9个window
Ctrl+a[Space]->由视窗0循序切换到视窗9
Ctrl+aCtrl+a->在两个最近使用的window间切换
Ctrl+ax->锁住当前的window,需用用户密码解锁
Ctrl+ad->detach,暂时离开当前session,将目前的screensession(可能含有多个windows)丢到后台执行,并会回到还没进screen时的状态,此时在screensession里,每个window内运行的process(无论是前台/后台)都在继续执行,即使logout也不影响。
Ctrl+az->把当前session放到后台执行,用shell的fg命令则可回去。
Ctrl+aw->显示所有窗口列表
Ctrl+at->time,显示当前时间,和系统的load
Ctrl+ak->killwindow,强行关闭当前的window
Ctrl+a->进入copymode,在copymode下可以回滚、搜索、复制就像用使用[vi一样
C-bBackward,PageUp
C-fForward,PageDown
H(大写)High,将光标移至左上角
LLow,将光标移至左下角
0移到行首
$行末
wforwardoneword,以字为单位往前移
bbackwardoneword,以字为单位往后移
Space第一次按为标记区起点,第二次按为终点
Esc结束copymode
Ctrl+a]->paste,把刚刚在copymode选定的内容贴上
操作示例见:https://wangchujiang.com/linux-command/c/screen.html
3、daemonize工具
##安装 gitclonegit://github.com/bmc/daemonize.git shconfigure&&make&&sudomakeinstall
-a#挂载到输出文件,而不是冲掉默认值。只有应用了-eand/or-o被指定的情况。
-e#重定向输出标准错误到指定的文件中,替代/dev/null
-o#重定向输出标准到指定的文件中,替代/dev/null
-Ename=value#增加环境变量给给后台程序。这个这个参数类型一定要是name=value格式。参数可以设置多次。
-cdirectory#定制运行命令前的目录。
-ppidfile#定制自己的pid存放位置。
-llockfile#单实例启动时将会检查这个文件。
-uuser#定制程序以谁的身份运行的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。