linux查看和关闭后台执行程序

后台执行的程序会有一个pid,查看后台程序主要用到jobs,ps 关闭后台程序用到kill

详细说明转自http://blog.csdn.net/tianlesoftware/article/details/6165753
一. 有关进程的几种常用方法

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。 是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

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

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

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

 only running processes              processes for specified users

 processes w/o controlling ttys      by tty

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

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

-j,j job control    signal          --group --user --sid --rows --info

-O,O preloaded -o   virtual memory  --cumulative --format --deselect

-l,l long           user-oriented   --sort --tty --forest --version

-F   extra full     registers       --heading --no-heading --context

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

-V,V  show version       list format codes   ASCII art forest

-m,m,-L,-T,H  threads    children in sum    -y change -l format

-M,Z  security data      true command name  -c scheduling class

-w,w  wide output        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 启动的进程虽然也是不中断的执行,但是当进程执行完毕后就会退出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/352589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mysql 多表联合查询效率分析及优化

1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用, 如: SELECT * FROM table1 CROSS JOIN table2 SELECT * FROM table1 JOIN table2 SELECT * FROM table1,table2 由于其返回的结果为被连接的两…

Python的__getattr__方法学习

内容部分来自网络 __getattr__函数的作用: 如果属性查找(attribute lookup)在实例以及对应的类中(通过__dict__)失败, 那么会调用到类的__getattr__函数; 如果没有定义这个函数,那么抛出Attribu…

python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法

前言数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用Python 进行数据相关的工作时,难免要和 Excel 打交道。标准的 Excel 文件(xls/xlsx)具有较复杂的格式,并不方便像普通文本文件一样直…

linux 线程管理、同步机制等

线程学了那么多有关进程的东西,一个作业从一个进程开始,如果你需要执行其他的东西你可以添加一些进程,进程之间可以通信、同步、异步。似乎所有的事情都可以做了。 对的,进程是当初面向执行任务而开发出来的,每个进程代…

SQL多表连接查询(详细实例)

本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,…

cf 1059e 思维 贪心 树

参考博客:http://www.cnblogs.com/waldenlake/p/9750249.html 题意:将一棵n个点的带权有根树剖分成尽量少的链,使得 (1)链的两个端点是祖先关系 (2)链含有的顶点个数小于等于L (3&am…

powermock模拟对象_使用PowerMock模拟构造函数

powermock模拟对象在我看来,依赖注入的主要好处之一是可以将模拟和/或存根对象注入代码中,以提高可测试性,增加测试覆盖率并编写更好,更有意义的测试。 但是,有时候您会遇到一些不使用依赖注入的传统代码,而…

宝塔 没有找到站点_宝塔面板正确开启TLS 1.3并删除TLS 1.1

昨天折腾了一个AlphaSSL泛域名证书后,心血来潮去SSL评分网站测试了一番,最后的结果竟然是B,这真是不能忍啊……为啥会是B,查看了原因,竟然是启用了TLS 1.1,所以为B。那么,删除TLS 1.1不就可以了…

线程同步机制:互斥量、信号量、读写锁、条件变量

一、互斥量(mutex) 互斥量本质上是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。 对互斥量进行加锁以后,任何其它试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。如果释放…

在Cloudfoundry上部署RESTful服务

在本文中,我们将使用Pivotal Cloud Foundry(PCF)Dev在Cloudfoundry上部署RESTful服务。 由于创建静态Web服务不是本文的一部分,因此我已经创建了employee-service ,它具有静态后端,可从GitHub进行克隆。 在…

mysql 全连接查询合并字段

1、创建两张表 t1如下: idname1a13a3 t2如下: idname1b12b25b5 联合查询合并字段: sql语句: SELECT t3.name AS B, t3.name1 AS C ,COALESCE(t3.id2,t3.id1) AS myId FROM (SELECT t1.id as id2 ,t1.name as name,t2.id as id…

小米刷第三方recovery_小米平板4/Plus LTE版本开启电话功能

众所周知,因为入网许可或通信基带使用权限的问题,小米平板4/plus LTE版本通过系统的方式阉割了通话功能,不过硬件完全是支持的,所有还是有办法让你的平板可以像手机一样,可以通话,可以发送短信。过Magisk刷…

最佳线程数总结(1

最佳线程数: 性能压测的情况下,起初随着用户数的增加,QPS会上升,当到了一定的阀值之后,用户数量增加QPS并不会增加,或者增加不明显,同时请求的响应时间却大幅增加。这个阀值我们认为是最佳线程数。 为什么要…

MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装、客户端操作、安全认证、副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很大。特此记录,以备查看。 文章目…

新浪微博爬虫设计(Python版)

最近手头上有一个项目,是关于新浪微博的,其中有一环要做新浪微博的爬虫。虽然之前把《Python学习手册》和《Python核心编程》都囫囵吞栆地通读完了,不过真正到做项目的时候还是什么都不会。于是在网上找了大量的资料。关于获取新浪微博的内容…

python 返回空格_Python面试之 is 和 == 的区别

Python爬虫人工智能学习教程​www.python88.cn面试实习生的时候,当问到 is 和 的区别时,很多同学都答不上来,搞不清两者什么时候返回一致,什么时候返回不一致。本文我们来看一下这两者的区别。我们先来看几个例子:a …

【数据库设计和SQL基础语法】--索引和优化--SQL语句性能调优

一、SQL语句性能调优的基本原则 1.1 确定性能指标 响应时间 SQL语句性能调优的基本原则之一是确定性能指标,而其中最为关键的指标之一就是响应时间。响应时间是衡量数据库系统性能的重要指标,它表示从用户发送一个查询请求到接收到查询结果所经过的时间…

boke练习: spring boot: security post数据时,要么关闭crst,要么添加隐藏域

spring boot: security post数据时&#xff0c;要么关闭crst,要么添加隐藏域 http.csrf().disable();或者&#xff1a; <input name"${_csrf.parameterName}" type"hidden" value"${_csrf.token}">转载于:https://www.cnblogs.com/achengm…

法线有接缝_发送带有接缝的活动邀请

法线有接缝这些天来&#xff0c;我的一位同事在使用带有接缝&#xff08;版本2.x&#xff09;的邮件模板发送事件邀请时遇到了问题。 从根本上讲&#xff0c;这应该不是一项艰巨的任务&#xff0c;因此我将简要说明使用接缝邮件模板发送事件邀请需要做些什么。 发送邮件邀请时&…

LINUX任务(jobs)详解

转自 &#xff1a; http://hi.baidu.com/daweilang/item/58db8d308e54f6d56d15e999LINUX任务(jobs)详解 在用管理员执行一个命令后&#xff0c;用CtrlZ把命令转移到了后台。导致无法退出root的。 输入命令&#xff1a;exit 终端显示&#xff1a;There are stopped jobs. 解决方…