本文主要介绍linux在后台运行的几种方式(总结),通过示例代码介绍的非常详细,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。
1、nohup
以忽略挂起信号的方式运行程序。
附加备注
nohup命令可以通过忽略挂起信号来运行程序,运行程序的输出信息不会显示到终端。
无论nohup命令的输出是否被重定向到终端,输出都将被附加到当前目录中的nohup.out文件。
如果当前目录的nohup.out文件不可写,则输出被重定向到$HOME/nohup.out文件。
如果无法创建或打开文件进行追加,则无法调用command参数指定的命令。
如果标准错误是一个终端,由指定命令写入标准错误的所有输出都被重定向到与标准输出相同的文件描述符。
简单的例子:
nohup命令
指定输出实例。
nohup命令myout.file 21
其他相关命令
Ctrl z #可以把前台正在执行的命令放到后台,处于挂起状态。
Fg #将后台任务切换到前台。
Bg #更改在后台暂停的命令,以便在后台继续执行。如果后台有多个命令,可以使用bg %jobnumber调出所选命令。
Jobs #检查后台运行的状态,jobs -l选项可以显示所有任务的PID。
Ps -ef | grep命令或ps aux | grep命令#来查看该过程
Kill -9进程id #杀死相应的进程,
更高级的用法如下:
PS aux | grep command | grep-v grep | awk ' { print $ 1 } ' | xargs kill-9 #这意味着直接通过命令获取进程id并直接杀死。
2、screen
用于命令行终端切换
一、会话恢复
只要屏幕本身没有终止,在其中运行的会话就可以恢复。这对于远程登录的用户尤其有用。——即使网络连接中断,
用户不会失去对打开的命令行会话的控制。只要再次登录主机并执行screen -r,就可以恢复会话。
另外,当你暂时离开的时候,你可以执行detach命令来暂停屏幕(切换到后台),同时保证里面程序的正常运行。
b、多窗口
在屏幕环境中,所有会话都独立运行,并有自己的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口之间切换,
并且可以自由重定向每个窗口的输入和输出。Screen实现基本的文本操作,比如复制粘贴;它还提供了类似滚动条的功能,
您可以查看窗口状态的历史。还可以对窗口进行分区和命名,并且可以监视后台窗口的活动。共享会话屏幕允许一个或多个用户
从不同的终端多次登录会话,并共享会话的所有功能(例如,您可以看到完全相同的输出)。同时,它提供了窗口访问权限的机制,
该窗口可以设置密码保护。
C.屏幕的安装
yum安装-y屏幕
基础语法
Screen -AmRvx -[ls -wipe][-d作业名][-h行数][-r作业名][-s ][-S作业名]
选择权
-将所有窗口调整到当前终端的大小。
-d Job Name使指定的屏幕作业脱机。
-h lines指定窗口的缓冲行数。
-m强制创建新的屏幕作业,即使该屏幕作业当前正在运行。
-r Job Name恢复脱机筛选作业。
-R首先尝试恢复脱机作业。如果找不到离线作业,请创建新的屏蔽作业。
-s指定创建新窗口时要运行的shell。
-S job name指定屏幕作业的名称。
-v显示版本信息。
-x恢复之前脱机的屏幕作业。
-ls或- list显示所有当前屏幕作业。
-wipe检查所有当前屏幕作业,并删除不再可用的屏幕作业。
常用屏幕参数
screen-S yourname-创建一个名为your name的新会话。
列出所有当前会话。
screen-r your name-在本次会话中返回您的姓名。
screen-d your name-远程分离会话
screen-d-r your name-结束当前会话并返回到您的姓名会话。
在每个屏幕会话下,所有命令都以ctrl a(Ctrl a)开始。
Ctrl a?-显示所有密钥绑定信息。
创建一个新窗口来运行shell并切换到它。
下一步,切换到下一个窗口
Ctrl a p-Previous,切换到上一个窗口
Ctrl a 0.9-切换到0.第9个窗口
按顺序从窗口0切换到窗口9。
在两个最近使用的窗口之间切换。
要锁定当前窗口,你需要用用户密码解锁。
Ctrl a d-detach,暂时离开当前会话,将当前屏幕会话(可能包含多个窗口)抛到后台执行,它会恢复到进入屏幕前的状态。此时,在屏幕会话中,每个窗口中运行的进程(无论是前台/后台)继续执行,即使注销也不影响。
将当前会话放在后台,并使用shell的fg命令返回。
显示所有窗口的列表
Ctrl t-time,显示当前时间,以及系统的负载
ctrl+k-kill窗口,强制关闭当前窗口
进入复制模式,你可以像使用[vi]一样回滚,搜索和复制
向后翻页
向前,向下翻页
h(大写)高,移动光标到左上角。
L Low,将光标移动到左下角。
0移动到行首
行尾的$号
w前进一个字,在文字中前进。
后退一个单词,在单词中向后移动。
第一次按空格是标记区域的起点,第二次按空格是终点。
退出Esc复印模式
ctrl a]-粘贴,在复制模式下粘贴刚刚选中的内容。
请看https://wangchujiang.com/linux-command/c/screen.html的例子。
3、daemonize工具
# #安装
git克隆git://github . com/BMC/daemonize . git
sh配置make sudo make安装
-a #装载到输出文件,而不是刷新默认值。仅当指定了-e和/或-o时才适用。
-e #将输出标准错误重定向到指定的文件,而不是/dev/null。
-o #将输出标准重定向到指定的文件,而不是/dev/null。
-E name=value #向后台程序添加环境变量。此参数类型的格式必须为name=value。参数可以多次设置。
-c directory #在运行命令之前自定义目录。
-p pidfile #自定义您的pid存储位置。
-l lockfile #单个实例启动时将检查该文件。
-用户#定制程序以谁的身份运行?
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。