Linux 前台 和 后台进程 说明
一. 有关进程的几种常用方法
1.1 & 符号
在命令后面加上一个 & 符号,表示该命令放在后台执行,如:
[oracle@singledb ~]$ crontab -l
20 17 * * * /u02/rman_incremental_backup.sh &
1.2 Jobs 命令
该命令可以查看当前有多少在后台运行的命令,jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息。
jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息。 如:
[oracle@singledb ~]$ jobs
[1]+ Running /u02/rman_incremental_backup.sh &
在这里讲一个概念:当前任务
如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。
1.3 fg 命令(foreground)
该命令将后台运行的进程调到前台来运行。 具体用法: fg %n。
这里的N 是jobs 看到的jobnumber。 如:
[oracle@singledb ~]$ fg %1
-bash: fg: job has terminated
[1]+ Exit 1 /u02/rman_incremental_backup.sh > /u02/rman.log 2>&1
1.4 ctrl + z 组合键
该命令将一个正在前台执行的命令放到后台,并且暂停。
1.5 bg命令(background)
该命令将一个在后台暂停运行的命令,变成继续在后台执行的命令。
用法:bg %n。 N 是jobs命令查看到的jobnumber。 如:
[oracle@singledb ~]$ /u02/rman_incremental_backup.sh
[1]+ Stopped /u02/rman_incremental_backup.sh
-- 我们运行备份命令,然后按下CTRL+Z
[oracle@singledb ~]$ jobs
[1]+ Stopped /u02/rman_incremental_backup.sh
--用jobs查看进程状态
[oracle@singledb ~]$ fg %1
/u02/rman_incremental_backup.sh
--用fg将进程调到前台运行
[1]+ Stopped /u02/rman_incremental_backup.sh
--按下ctrl+z
[oracle@singledb ~]$ bg %1
[1]+ /u02/rman_incremental_backup.sh &
--用bg将后台暂停的进程继续执行,这里自动加了一个& 符号
[oracle@singledb ~]$ jobs
[1]+ Running /u02/rman_incremental_backup.sh &
--查看job 状态
1.6 结束正在运行的进程
1.6.1 结束前台进程
这种只需要按下组合键: ctrl + c 即可。
1.6.2 结束后台运行的进程
这种情况下也有两种方法:
(1)用jobs查看进程的jobnumber,然后用命令:kill %n 来结束。
(2)用ps 查看进程的pid,然后用命令:kill pid 来结束。
这里对kill 做点说明,kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
[oracle@singledb ~]$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
1.7 ps 命令
该命令用户列出系统中正在运行的进程。 常用的参数:ps -ef
关于这2个参数含义,参考ps 命令的帮助:
[oracle@singledb ~]$ ps --help
********* simple selection ********* ********* selection by list *********
-A all processes -C by command name
-N negate selection -G by real group ID (supports names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options ***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
二. 前台进程和后台进程的一点讨论
整理这篇文章的目的就是弄清楚在实际使用中这两种进程的区别。 一般情况下,我们都是通过shell 连接到linux 服务器上,那么,假如我们在这个shell 窗口执行一个备份或者其他命令,即前台命令。 在这个时候,前台命令没有执行完,我们把这个终端关闭了,那么这个命令也就会中断。 即使我们在执行命令时加了& 符号,让进程在后台执行,终端的关闭也会造成命令的结束。
解决这个问题有两种方法:
(1)将命令添加到crontab里,让系统自己调用。
这种方法将使命令在服务器端执行,这样即使终端关闭,也不影响命令的执行。
(2)使用nohup命令(no hang up)。
该命令用于保证不挂断地运行命令。如:
[oracle@singledb ~]$ nohup /u02/rman_incremental_backup.sh &
[1] 4409
[oracle@singledb ~]$ jobs
[1]+ Running nohup /u02/rman_incremental_backup.sh &
这里要注意:
运行nohup命令后,按任意键返回shell 窗口,然后输入exit退出终端,不能直接关闭窗口,直接关闭窗口的话,还是会造成命令进程和终端一起结束。
在Unix中永久的后台进程称为守护进程(daemon)。守护进程通常从系统启动时自动开始执行,系统关闭时才停止。而nohup 启动的进程虽然也是不中断的执行,但是当进程执行完毕后就会退出。
Linux 前台 和 后台进程 说明的更多相关文章
- Linux下对后台进程通过kill传递信号不起作用的问题
在阅读APUE信号一章时,我遇到Linux下对后台进程通过kill传递信号不起作用的问题 具体情形与如下链接中的老兄一致: http://bbs.csdn.net/topics/390335913?p ...
- Linux 普通进程 后台进程 守护进程
一.普通进程与后台进程 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'& ...
- Linux 普通进程 后台进程 守护进程(转)
一.普通进程与后台进程 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'& ...
- Linux前台的程序转到后台执行(关闭终端而不杀死命令)
你是否经常遇到这样的情况,通过SSH或者终端putty连接到一台linux/unix机器,执行一个程序.一个脚本或者一条命令,但现在你需要关闭SSH或者终端,由于该该程序.脚本或者命令正在运行,一旦你 ...
- linux如何执行后台进程
linux直接执行一个过程.电流指令结束后.或者关闭掉shell形成过程将结束. 如何在后台执行的处理 办法1 采用nohup命令,nohup命令本身的意思no hung up他说,他们将不会收到sh ...
- Linux前台、后台、挂起、退出、查看命令汇总
command & 直接在后台执行程序 ctrl+c 退出前台的命令,不再运行 ctrl+z挂起前台命令暂停运行,回到shell命令行环境中 bg 将刚挂起的命令放到后台执行 bg % ...
- 【转】 Linux进程间通信
一.进程间通信概述进程通信有如下一些目的:A.数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B.共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别 ...
- Linux 编程学习笔记----过程管理和项目发展(在)
转载请注明出处,http://blog.csdn.net/suool/article/details/38406211,谢谢. Linux进程存储结构和进程结构 可运行文件结构 例如以下图: 能够看出 ...
- Linux文件系统及常用命令
Linux文件系统介绍: 一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上.目录提供了管理文件的一个方便而有效的途径. Linux使用树状目录结 ...
随机推荐
- Android IOS WebRTC 音视频开发总结(五十)-- 技术服务如何定价?
这篇文章最早是杜老师写的,看完感触很深,加上之前跟咨询公司的朋友也讨论过这方面的问题,所以结合自己的经验,做了些删改(得到了杜老师的授权). 先通过下面几个简单的问题来了解技术服务: 问题1:技术服务 ...
- MySQL允许远程访问
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; flush privileges; ...
- nginx + php +mysql (适配thinkphp)
Nginx 单机配置 http://tengine.taobao.org/book/index.html (taobao book) http://ubuntuhandbook.org/index.p ...
- CentOS学习笔记--Tomcat安装
Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomca ...
- 极速地将git项目部署到SAE的svn服务器上
本文最初发布于我的个人博客:http://jerryzou.com/posts/gitForSAE/ 我花了一些时间自己写了一个能够极速地将一个git项目部署到SAE的svn服务器上的脚本.代码不是复 ...
- iPhone和iPad版本的分辨率a
- js对象与this指向
创建对象的方法 1.对象字面量法 var obj={} var obj={ 'first-name':'Tom', 'last-name':'bush', age:24, Family:{ Broth ...
- php常用函数集锦[备份用的]
1.判断是否正确的日期格式 /** * 是否正确的日期 * * @access public */ private function _isdate($str,$format="Y-m-d ...
- smarty第一天
1.安装 安装Smarty发行版在/libs/目录里的库文件(就是解压了). 2.工作原理 美工人员 1. 写模板, HTML CSS JavaScript 2. 使用Smarty表现逻辑 放变量, ...
- Oracle 手动收集统计信息
收集oracle统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...