Linux 任务控制
Linux/Unix 提供了不同与 windows 的多任务处理,也提供一套用来切换前后台任务的命令
bg fg & Ctrl+z nohup sitsid
- Ctrl-Z 挂起程序
user@ae01:~$ ./test.sh
^Z
[]+ Stopped ./test.sh
user@ae01:~$当作业在运行期间,执行 Ctrl-Z 暂挂起该作业并返回该作业的 JobID 等信息,类似于使用 jobs 命令返回的信息
- bg 后台执行
user@ae01:~$ jobs
[]+ Stopped ./test.sh、
user@ae01:~$ bg
[1]+ ./test.sh &
user@ae01:~$bg 将暂挂的作业作为后台作业运行来在当前环境中重新执行这些作业,如果指定的作业已经在后台运行,bg 命令不起作用并成功退出。如果未提供 JobID 参数,bg 命令会使用最近暂挂的作业
- fg 前台运行作业
user@ae01:~$ jobs
[]+ Stopped ./test.sh、
user@ae01:~$ fg
./test.sh
user@ae01:~$fg 使用 JobID 参数来指明在前台下要运行的特定作业。如果提供 JobID,fg 命令使用最近在后台被暂挂的作业
- & 把作业放到后台执行
user@ae01:~$ ./test.sh &
[]
user@ae01:~$当在前台运行某个作业时,终端被该作业占据;可以使用&命令把作业放到后台执行,而在后台运行作业时,它不会占据终端。实际上,这样是将命令放入到一个作业队列中了。作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:command >out.file 2>&1 &
- nohup 忽略挂断信号
user@ae01:~$ nohup ./test.sh > test.log >& &
[]
user@ae01:~$ jobs在执行作业时,可以使用小括号() 执行后台作业也能做到类似 nuhup 的效果,使得 当前 Shell 关闭后,作业仍能正常运行。原理同 setsid 和 disown
user@ae01:~$ (./test.sh &) user@ae01:~$ ps -ef | grep test
: ? :: /bin/sh ./test.sh
: pts/ :: grep test使用 & | bg 运行后台命令时,其父进程还是当前终端 shell 的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者使用setsid将父进程设为init进程(进程号为1),也可以使用 disown 命令
- setsid
user@ae01:~$ ps -ef | grep test
: pts/ :: /bin/sh ./test.sh
: pts/ :: grep test
user@ae01:~$ setsid ./test.sh &
[]
user@ae01:~$ ps -ef | grep test
: ? :: /bin/sh ./test.sh
: pts/ :: grep test对于已经执行的前台作业,setsid 可以将当前作业的父进程设置为1,但对于已经是后台运行的命令我们需要使用 disown 命令
- disown
user@ae01:~$ ./test.sh &
[]
user@ae01:~$ jobs -l
[]+ Running ./test.sh &
user@ae01:~$ disown -h %
user@ae01:~$ ps -ef | grep test
: ? :: /bin/sh ./test.sh
: pts/ :: grep test对于已经执行的后台作业,disown 可以将当前作业的父进程设置为1
- setsid
Linux 任务控制的更多相关文章
- linux 终端控制-- 多彩输出 格式排版
linux 终端控制-- 多彩输出 格式排版 在unix/linux的终端下,怎么控制终端输出的颜色和格式呢,当然了有专门的工具,tput,但是能被terminal直接读懂的格式化字符串更通用. 先来 ...
- (转)linux下控制帐户过期的多种方法
linux下控制帐户过期的方法:原文:http://blog.51cto.com/oldboy/1289144企业里一般给无人管理的角色账户或开发人员临时需求等可以设定账户有效期,提升安全!法一:添加 ...
- 资源限制 ( resource limit 或 rlimit ),是 Linux 内核控制 用户 或 进程 资源占用的机制。
###### https://learn-linux.readthedocs.io/zh_CN/latest/administration/kernel/rlimit.html ########### ...
- Linux资源控制-CPU和内存
主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进程能够占用CPU多长时间, 什么时候能够占用CPU是和系统的调度密切相关的. Linux系统中有多 ...
- linux pam 控制模式
工作类别(type).流程栈(stack)和控制模式(control) Linux-PAM 工作的"类别"(type) PAM 的具体工作主要有以下四种类别(type):accou ...
- Linux资源控制-CPU和内存【转】
转自:http://www.cnblogs.com/wang_yb/p/3942208.html 主要介绍Linux下, 如果对进程的CPU和内存资源的使用情况进行控制的方法. CPU资源控制 每个进 ...
- Linux进程控制(三)
1. 进程间打开文件的继承 1.1. 用fork继承打开的文件 fork以后的子进程自动继承了父进程的打开的文件,继承以后,父进程关闭打开的文件不会对子进程造成影响. 示例: #include < ...
- Linux进程控制(二)
1. 进程的创建 Linux下有四类创建子进程的函数:system(),fork(),exec*(),popen() 1.1. system函数 原型: #include <stdlib.h&g ...
- Linux进程控制(一)
1. Linux进程概述 进程是一个程序一次执行的过程,它和程序有本质区别.程序是静态的,它是一些保存在磁盘上的指令的有序集合:而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建.调度 ...
- Linux进程控制——exec函数族
原文:http://www.cnblogs.com/hnrainll/archive/2011/07/23/2114854.html 1.简介 在Linux中,并不存在exec()函数,exec指的是 ...
随机推荐
- cinnamon桌面安装在其他目录下
cinnamon桌面还不错,不过默认只能安装在/usr目录下 有很多脚本中写死了是/usr目录 编译时如下模块需要打补丁: 1.cinnamon中,需要执行 sed -i 's|usr/share|u ...
- 好用的开源web系统总结
1.论坛 phpwind 一个用wind框架写的论坛 discuz 社区动力 论坛 2.商城 Ecshop 商城腾讯的开源商城项目 一款B2C独立网店系统,系统是基于PHP语言及MYS ...
- 面试题目——《CC150》智力题
面试题6.1:有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸.给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次. 思路:第1瓶取1颗,第2瓶取2颗....最 ...
- [Unity3D] Normal map、Diffuse map 和 Speculer map
Normal map : Normal map (法线贴图) 它的作用是模拟出高模上的一些细节纹理,特别是将高模上的圆滑和粗糙度投射到低模上,让低模也有高模的效果. 因为高模的面数非常多,导入引擎后电 ...
- [Head First设计模式]生活中学设计模式——外观模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- zend studio汉化
在help菜单中选择Install New Software,在 work with栏中添加上这样的地址 http://archive.eclipse.org/technology/babel/upd ...
- sql clear dblog
USE [master]GOALTER DATABASE ndFlightPolicy SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE ndFligh ...
- 常用的Mysql数据库操作语句大全
一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...
- 为C#自定义控件添加自定义事件
这里的自定义控件是由普通控件组合而成的. 希望事件响应代码推迟到使用自定义控件的窗体里写. 步骤一:新建一个用户控件,放两个按钮,Tag分别是btn1,btn2. 这两个按钮的共用单击事件处理代码如下 ...
- ASP.NET Core--基于授权的视图
翻译如下: 开发人员通常希望基于当前用户身份显示,隐藏或以其他方式修改UI. 您可以通过依赖注入访问MVC视图中的授权服务. 将授权服务注入Razor视图,请使用@inject指令,例如: @inje ...