Linux 后台运行程序

在 linux 系统中的终端工作时,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重新开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令。
jobsjos 命令用于显示 linux 中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。
&如果需要在后台运行一个进程,可以在运行的命令后边加上 &。这样做只能让进程让出当前的终端以便做其他的事,但如果后台运行的进程有输出,仍然会打印到屏幕上,这样会干扰当前的工作。而且即使进行在后台运行,如果终端被关闭,该进程仍然会被杀掉。
‘ctrl-z’ 和 ‘bg’ 将进程放入后台bg 命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号 & 的效果是相同的,都是将其放到系统后台执行。快捷键 ctrl-z 也能将进程放到后台运行,该快捷键用于将正在运行的进程放到后台运行是非常方便的。
fgfg 命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。与 bg 命令一样,若后台任务中只有一个,则使用该命令时,可以省略任务号。
nohup当用户注销(logout)或者网络断开时,终端会收到 hup(hangup)信号从而关闭其所有子进程。也就是任何在终端启动的正在运行的进程都会停止。很多时候,我们会通过 ssh 远程连接服务器来工作,在网络状况很糟糕的情况下,一段网络中断我们的工作就会被打断。如果我们正在进行一项很重要的工作,这无疑是个灾难。
nohup 命令可以让提交的命令忽略 hangup 信号。标准输出和标准错误缺省会被重定向到 nohup.out 文件中。但是用 nohub 启动的进程任然在前台运行,不会让出终端。
一般我们可在结尾加上 & 来将命令同时放入后台运行,也可用 >filename 2>&1 来更改缺省的重定向文件名。这样进程既可以不被 hangup 信号打断,又能够将终端让出。例如在后台执行耗时的 du 命令:
nohub du sh /*sort -h > /tmp/du.log 2>&1 &nohup 无疑能通过忽略 hup 信号来使我们的进程避免中途被中断。2>&1 的作用是将标准错误 2 重定向到标准输出 1 中。此处 1 前面的 & 就是为了让 shell 将 1 解释成标准输出而不是文件 1。
在 shell 中 0,1,2 三个数字分别代表 stdin_fileno、stdout_fileno、stderr_fileno,即标准输入(一般是键盘),标准输出(一般是显示屏,准确的说是用户终端控制台),标准错误(出错信息输出)。
默认输入只有一个输入(0,stdin_fileno),而默认输出有两个(标准输出1 stdout_fileno,标准错误2 stderr_fileno)。因此默认情况下,shell 输出的错误信息会被输出到 2,而普通输出信息会输出到 1。
setsid如果我们的进程不属于接受 hup 信号的终端的子进程,那么自然也就不会受到 hup 信号的影响了。setsid 就能帮助我们做到这一点。setsid 用于在一个新的会话中运行程序, 其父进程为 init。
示例:
setsid ping www.baidu.com
disown如果事先在命令前加上 nohup 或者 setsid 就可以避免 hup 信号的影响,但是如果我们未加任何处理就已经提交了命令,该如何补救才能让它避免 hup 信号的影响呢?
这种情况我们可以用 disown 并配置作业调度来让进程忽略 hub 信号。使用方法:
disown -h %1 使某个作业忽略 hup 信号, 1 为作业号。disown -ah 使所有的作业都忽略 hup 信号。disown -rh 使正在运行的作业忽略 hup 信号。
screenscreen 是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。screen 中有会话的概念,会话可以保持你的工作,即使网络断开会话仍然被保存,这样便可以保证运行的程序不被打断。而且还可以创建多个会话,并在不同会话间切换。类似的工具还要 tmux、dvtm、splitvt、byobu 等。

分析逆变器售后的光伏系统常见问题介绍和解决
英创信息技术移植Real Time Linux到英创工控主板简介
2019年政府项目如何影响大数据和物联网
在温度变送器中PIC单片机有什么应用?
ic设计是什么意思_ic设计工程师吃香吗
Linux 后台运行程序
多事之夏,华为P10内存爆问题!官方给换新机?
高质量的陪伴用佳能HF R86跟孩子一起成长:小机身 大智慧
使用CUDA流顺序内存分配器助于提高现有应用程序的性能
德承DS-1101强固型嵌入式电脑在地铁自动售票机的应用
通过实际测评,让你了解戴尔游匣G15游戏本AMD版的优点!
联想Z5s怎么样 一款综合表现不错的千元机
搭载传感器的智能仪器仪表应用愈发广泛
在整个PCBA开发过程中保持设计意图
物联网还有多大的投资机会
充电宝口碑最好的牌子,2020口碑好的充电宝牌子
SDS5054X数字荧光示波器和SVA1032X频谱&矢量网络分析仪对比演示
消息称苹果公司聘请宝马前高管Ulrich Kranz加入其汽车团队
模拟万用表与数字万用表工作原理是否一样?
“碰一碰”就能支付!华为联合银联推出黑科技