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

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 进程前后台切换命令

    假设我们有一个名为 `start.sh` 的脚本,我们需要将其作为后台进程运行,并且能够随时查看它的状态或将其切换回前台。 1. **启动后台进程**: ```bash sh ./start.sh & ``` 2. **查看后台进程**: ```bash ...

    linux命令在后台运行

    本文将详细介绍如何在Linux中让命令在后台运行,包括使用`&`、`ctrl+z`、`fg`、`jobs`等命令的具体方法,以及如何使用`nohup`命令来确保程序即使在终端关闭后也能继续运行。 #### 二、使用`&`将命令置于后台 在...

    Ruby-轻松实现在Linux服务器上后台运行RubyRails进程

    通过使用Procodile,你可以更有效地管理和监控在Linux服务器上运行的Ruby/Rails后台进程,确保服务的稳定性和可靠性。同时,Procodile的简单配置和灵活的命令行工具使得日常运维工作变得更加轻松。

    Linux后台运行py服务程序1

    在Linux系统中,后台运行服务...掌握这些命令和技巧,你就能更有效地管理和控制在Linux系统中后台运行的服务程序,确保它们在你需要的时候持续工作,而不会因为终端的关闭而中断。这在系统维护和自动化任务中尤其有用。

    Linux后台运行命令

    本文将重点介绍几种常用的Linux后台运行命令,包括快捷键方式以及`cron`和`crontab`命令的详细使用方法。这两种命令主要用于设定定时任务,涉及到进程调度与管理。 #### 二、快捷键方式启动后台任务 对于简单的...

    Linux操作系统实验--进程.doc

    通过本实验,学生可以了解 Linux 进程的属性、前台和后台进程、守护进程、进程的层次结构、信号机制等。 一、了解 Linux 进程的属性 在 Linux 中,进程是系统中的基本执行单元。每个进程都有其自己的虚拟地址空间...

    前台和后台启动Redis.pptx

    本讲义主要探讨了如何在Linux环境下前台和后台启动Redis服务器。 首先,让我们详细了解 Nosql 和非关系型数据库的概念。Nosql(Not Only SQL)是指不使用传统的关系型数据库模型,而是采用不同的数据模型,如键值对...

    Linux下运行后台任务的方法.docx

    screen 是一个虚拟终端软件,直接在 Linux 系统里面启动了另外一个后台程序接管(维持)了你的终端会话,当你直接连接的终端 SSH 断开时他仍然让程序认为你的 SSH 持续链接着,避免了进程接收到中断信号而退出。...

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

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

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

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

    Linux后台进程管理的一些命令小结.pdf

    在Linux操作系统中,后台进程管理是系统管理员和开发者日常工作中不可或缺的一部分。本文将对一些常用的Linux后台进程管理命令进行总结,帮助你更好地理解和掌握这些工具。 首先,我们讨论如何将命令放到后台执行。...

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

    "&"符号用于将命令放入后台执行,但如果不配合nohup或setsid,当终端关闭时,后台进程仍然会被终止。因此,通常将nohup或setsid与"&"结合使用,确保进程的后台稳定性。 4. **组合使用** 对于某些情况,可能需要...

    Linux查看和关闭后台运行程序的方法

    在Linux操作系统中,管理和操作后台运行的程序是日常运维工作中不可或缺的部分。后台程序是指那些即使在用户退出终端或关闭shell会话后仍能继续运行的进程。本篇将详细介绍如何在Linux系统中查看和关闭这些后台运行...

    LINUX教程——进程PPT

    `bg`和`fg`命令分别用于将后台进程放到前台和将前台进程放到后台。`jobs`命令可以列出当前shell会话中的作业,而`kill`命令用于向进程发送信号以结束进程,`limit`则用于设置进程资源限制。 了解这些基础知识对于...

    如何监控和保护Linux下进程安全

    ps命令可以监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,如果需要检测其情况,可以使用ps命令。 四、top命令 top命令和ps命令的基本作用是相同的,显示系统当前的进程...

    Linux中进程控制与管理

    前台进程即用户当前在交互操作的进程,而后台进程则是在后台默默运行,不占用屏幕资源,常用于执行耗时任务或持续运行的服务。后者一般被称为**守护进程**(Daemon),它们通常以服务名后加`d`的形式命名,例如HTTP...

    Linux实验二:Linux-基本命令-进程管理.doc

    在终端上运行的进程可以分为前台进程和后台进程。前台进程接收用户的输入,而后台进程则在用户不直接交互的情况下运行。使用`&`符号可以使命令在后台运行,例如`find / -name *.c | grep "linux" &>/dev/null &`,这...

    Linux进程管理和网络管理.pdf

    5. 前后台进程管理 在shell中执行程序时,可以将程序放入后台执行。这通常通过在命令后加“&”来实现。同时,可以通过Ctrl+z将当前运行的前台进程挂起,使用jobs查看被挂起的进程。fg和bg命令分别可以将挂起的进程调...

    linux进程管理pdf文件

    在操作系统中,进程是最基本的独立运行单元,它为应用程序提供了资源管理和调度的基础。 #### 2. Linux 进程状态 Linux中的进程可以处于多种状态,这些状态反映了进程在系统中的生命周期: - **用户态运行**:进程...

Global site tag (gtag.js) - Google Analytics