`
tianshibaijia
  • 浏览: 1118590 次
文章分类
社区版块
存档分类
最新评论

Linux 前台 和 后台进程 说明

 
阅读更多

一.有关进程的几种常用方法

1.1&符号

在命令后面加上一个&符号,表示该命令放在后台执行,如:

[oracle@singledb ~]$ crontab -l

20 17 * * * /u02/rman_incremental_backup.sh &

1.2Jobs命令

该命令可以查看当前有多少在后台运行的命令,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.4ctrl + z组合键

该命令将一个正在前台执行的命令放到后台,并且暂停。

1.5bg命令(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) SIGHUP2) SIGINT3) SIGQUIT4) SIGILL

5) SIGTRAP6) SIGABRT7) SIGBUS8) SIGFPE

9) SIGKILL10) SIGUSR111) SIGSEGV12) SIGUSR2

13) SIGPIPE14) SIGALRM15) SIGTERM16) SIGSTKFLT

17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP

21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU

25) SIGXFSZ26) SIGVTALRM27) SIGPROF28) SIGWINCH

29) SIGIO30) SIGPWR31) SIGSYS34) SIGRTMIN

35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+338) SIGRTMIN+4

39) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8

43) SIGRTMIN+944) 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-956) SIGRTMAX-857) SIGRTMAX-758) SIGRTMAX-6

59) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2

63) SIGRTMAX-164) SIGRTMAX

  SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。

1.7ps命令

该命令用户列出系统中正在运行的进程。常用的参数: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

Tall processes on this terminal-s processes in the sessions given

aall w/ tty, including other users-t by tty

gOBSOLETE -- DO NOT USE-u by effective user ID (supports names)

ronly running processesUprocesses for specified users

xprocesses w/o controlling ttystby tty

*********** output format ********************* long options ***********

-o,o user-defined-f full--Group --User --pid --cols --ppid

-j,j job controlssignal--group --user --sid --rows --info

-O,O preloaded -ovvirtual memory--cumulative --format --deselect

-l,l longuuser-oriented--sort --tty --forest --version

-Fextra fullXregisters--heading --no-heading --context

********* misc options *********

-V,Vshow versionLlist format codesfASCII art forest

-m,m,-L,-T,HthreadsSchildren in sum-y change -l format

-M,Zsecurity datactrue command name-c scheduling class

-w,wwide outputnnumeric 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]+Runningnohup /u02/rman_incremental_backup.sh &

这里要注意:

运行nohup命令后,按任意键返回shell窗口,然后输入exit退出终端,不能直接关闭窗口,直接关闭窗口的话,还是会造成命令进程和终端一起结束。

在Unix中永久的后台进程称为守护进程(daemon)。守护进程通常从系统启动时自动开始执行,系统关闭时才停止。而nohup启动的进程虽然也是不中断的执行,但是当进程执行完毕后就会退出。


整理自网络

------------------------------------------------------------------------------

分享到:
评论

相关推荐

    linux 进程前后台切换命令

    两种切换进程到后台的命令。包括切换到前台,查看任务的命令。

    QtService 实现Qt后台服务程序

    本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。 博客介绍:https://luoyayun361.blog.csdn.net/article/details/120655011?spm=1001.2014.3001.5502

    LINUX系统下多进程的创建与通信

    linux上的bash和Windows中的命令行有...前台程序提供界面,负责接收用户输入,对输入进行转换,并向后台程序发出实际要执行的指令,后台负责执行实际的指令,并将指令执行的结果返回给前台程序,由前台程序在终端显示。

    在后台运行Linux命令的方法

    通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束。这被称为在前台运行命令,...在这篇文章中,我们将会讨论在 Linux 中的后台进程。我们将会为你演示如何在后台启动

    Linux中进程在后台可靠运行的方法总结

    本篇文章主要给大家介绍了Linux中进程在后台可靠运行的方法以及示例代码分析,一起学习参考下吧。

    :crocodile:从Procfile在Mac和Linux上在后台(和前台)运行进程(用于生产和/或开发环境)-Ruby开发

    Procodile:crocodile:在诸如Viaduct&Heroku之类的地方运行和部署Ruby应用程序确实很容易,但是在实际服务器上运行进程则不太有趣。 Procodile旨在减轻运行Ruby / Rails的压力。Procodile:crocodile:在Ruby上运行和...

    Linux网络操作系统基础:进程管理.pptx

    1;进程介绍;进程的生命周期;进程的状态;进程的优先级 (1);进程的优先级 (2);调整进程的优先级;8;前台与后台进程;控制前台与后台进程;查看进程;查看进程 - ps、top;管理进程 - 信号;管理进程

    在Linux中查看及终止正在运行的后台程序方法

    linux 任务管理-后台运行与终止 fg、bg、jobs、&、ctrl + z命令 一、 & 加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二、ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可...

    linux 课程设计,windows与Linux 命令

    软件包含前、后台两个程序,用户启动前台程序时,前台程序自行启动后台程序。前台程序提供界面,负责接收用户输入,对输入进行转换,并向后台程序发出实际要执行的指令,后台负责执行实际的指令。

    详解linux后台运行和关闭、查看后台任务

    可以将一个正在前台执行的命令放到后台,并且处于暂停状态。 三、jobs 查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了...

    Linux系统中关于Kill命令的进程调度

    但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原 因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是...

    C语言实现Linux内核Shell程序

    编写一个C语言程序作为Linux内核的shell命令行解释程序,所执行的结果需和系统命令行方式保持一致,理解系统使怎样进行命令的解析和执行。 基本运行方式:[COMMAND命令 OPTIONS选项 ARGUMENTS参数] 表1 命令格式 ...

    编写Linux系统下Daemon程序的方法步骤

    一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemon程序称作守护进程。本文介绍了在Linux下编写Daemon...

    Linux中如何让进程在后台运行

    在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了: $ ./test.sh & [1] 17208 $ jobs -l [1]+ 17208 Running ./test.sh &  对于...

    基于linux和Qt的嵌入式超市数据库管理程序

    基于linux和Qt的嵌入式超市数据库管理程序 1. 基于Sqlite的后台数据库设计。主要包括进货表、出货表、库存表。 2. 基于qt的前台主界面程序设计 . 数据库应用程序设计,主要功能应包括

    linux课程设计

    XX学院,教职员工500人、...2、对DHCP、DNS、Apache这几个服务在学院教学中的应用给出整体方案设计,除此之外必须任选其他的一个网络服务,要求服务必需工作在Linux系统上,根据需要还可以使用Linux系统下的其它服务。

    Linux网络操作系统基础:多任务管理.ppt

    守护进程(Daemon): Linux启动时初始化,后台进程 普通进程 常驻内存进程:系统或网络服务 启动: 手工启动: 前台启动 后台启动 调动启动: 调度安排进程的执行时间/场合 (命令或cron守护) 查看系统运行的进程 监测...

    Linux网络操作系统基础:多用户与多任务管理.ppt

    user1 user2 group1 group2 user1 user1 user2 user3 testdir1 testdir2 test1 test2 755 755 ... Linux启动时初始化,后台进程 普通进程 常驻内存进程:系统或网络服务 启动: 手工启动: 前台启动 后台启动 调动启动:

    procodile::crocodile:从Procfile在Mac和Linux上在后台(和前台)运行进程(用于生产和/或开发环境)

    前代 :crocodile: 在和Heroku之类的地方运行和部署Ruby应用程序确实很容易,但是在实际服务器上运行进程则不太有趣。 Procodile旨在减轻运行Ruby / Rails应用程序的压力,并为您提供一些从PaaS提供程序获得的有用的...

    Linux进程管理(一)查看进程

    后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd , crond]。 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。 显示系统执行的进程 ps命令是...

Global site tag (gtag.js) - Google Analytics