`
qindongliang1922
  • 浏览: 2183283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117508
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:125908
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:59878
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71284
社区版块
存档分类
最新评论

Linux后台运行进程的方法

阅读更多
有时候我们在Linux里面,运行一个服务,当服务启动后,我们这个终端,可能就被,这个服务占用了,如果你强制使用Ctrl+C来退出的话,那么很有可能就会把这个服务给停掉,这当然不是我们想要的结果。

所以,这时候就需要一个类似于守护进程的方式,来运行我们的服务,并且,不会影响到我们shell终端的使用,虽然你可以再重新打开一个shell终端,但那样做,并不太符合我们的预期,例如Redis服务启动之后,就会使终端处于阻塞状态,如果强制退出,这个服务就被停掉了。


下面是对Linux下运行与控制后台进程的各种方法的介绍:
1.nohup
顾名思义,nohup的用途就是让提交的命令忽略所有的hangup信号。
使用方法:nohup COMMAND [ARG]...

2.setsid
在一个新的会话中运行命令,从而可以避开当前终端发出的HUP信号。
使用方法:setsid COMMAND [ARG]...

3.&
可以结合()产生一个新的子shell并在这个子shell中将任务放置到后台运行,从而不受当前shell终端的HUP信号影响。
使用方法:(COMMAND [ARG]... &)

而我通常的使用方式为:
nohup ./filename.sh > filename.log 2>&1 &
nohup ./filename.sh &> filename.log &
三点理由:
1)nohup保障进程不会被hangup信号异常中断;
2)将任务放置到后台运行,不占用当前的终端;
3)将错误输出也打印到log中,默认>只有标准输出,错误输出没有。




下面依次来看,这几个命令的使用:


fg、bg、jobs、&、nohup、ctrl + z命令
一、&
加在一个命令的最后,可以把这个命令放到后台执行,如gftp &,
二、ctrl + z
可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行
三、jobs
查看当前有多少在后台运行的命令
jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;
四、fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
五、bg
将一个在后台暂停的命令,变成继续执行 (在后台执行)
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
将任务转移到后台运行:
先ctrl + z;再bg,这样进程就被移到后台运行,终端还能继续接受命令。
概念:当前任务
如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]” 的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务
六:nohup
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
进程的终止
后台进程的终止:
方法一:
通过jobs命令查看job号(假设为num),然后执行kill %num
方法二:
通过ps命令查看job的进程号(PID,假设为pid),然后执行kill pid
前台进程的终止:
ctrl+c
kill的其他作用
kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。
SIGTERM是不带参数时kill发送的信号,意思是要进程终止运行,但执行与否还得看进程是否支持。如果进程还没有终止,可以使用kill -SIGKILL pid,这是由内核来终止进程,进程不能监听这个信号。
进程的挂起(暂停的意思吧)
后台进程的挂起:
在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;
在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;
当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;
前台进程的挂起:
ctrl+Z;
使用jobs 查看任务。

使用jobs -l来查看每个后台任务的具体进程号
使用fg %n 关闭。


使用nohup,相当于,把输出流给重定向到一个log文件里面了,在这里就是我们的nouhp.out文件,我们可以查看这个文件,来及时掌握log的日志,截图如下:

  • 大小: 1.8 MB
分享到:
评论

相关推荐

    linux 进程前后台切换命令

    后台运行进程 要使一个进程在后台运行,有两种方式: ##### 2.1 使用 `&` 符号 ```bash sh ./start.sh & ``` 这种方式会在命令行后面加上 `&`,表示这个命令在后台执行。执行完毕后,命令行不会返回提示符,而是...

    Linux后台运行命令

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

    开发Linux操作系统后台服务进程详解

    1. **后台运行**:通过调用`fork()`函数,父进程退出,子进程在后台继续运行,确保进程不会被控制终端挂起。 2. **脱离控制终端、登录会话和进程组**:调用`setsid()`函数,使得进程成为新的会话组长和进程组长,...

    Linux技巧:让进程后台运行

    让进程后台运行的 Linux 技巧 本篇文章将讨论如何让进程在后台可靠运行的几种方法,解决在 Linux 服务器上运行耗时较长的任务时遇到的问题。这些方法包括使用 nohup、setsid 以及 & 井号符号来让进程忽略 HUP 信号...

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

    nohup通过忽略HUP信号实现进程的后台运行,而setsid则通过创建新的会话使得进程不受终端影响。根据具体需求,可以选择合适的方法,或者组合使用,以保证进程的稳定性和持久性。在实际操作中,应根据任务的性质和预期...

    linux命令在后台运行

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

    Linux后台运行py服务程序1

    在Linux系统中,后台运行服务程序是常见的需求,特别是对于长时间运行的任务,如Python脚本。在标题和描述中提到的“&”符号和“nohup”命令就是实现这一目标的关键工具。下面我们将深入探讨如何使用这些命令以及...

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

    可以使用 ctrl + z 将进程放到后台暂停,然后使用 jobs 查看当前有多少在后台运行的命令,使用 bg 将后台中暂停的作业进程继续运行,使用 fg 将后台中的作业进程调至前台继续运行。 例如: ctrl + z 将 ./test.sh ...

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

    首先,了解在Linux上后台运行程序的基本概念。通常,当我们在终端中执行命令时,该命令会在前台运行,占用终端会话。如果要让进程在后台运行,可以使用`&`符号,例如`ruby myapp.rb &`。然而,这种方法并不完美,...

    Linux 进程管理 后台运行

    ① 了解进程。 ② 如何查看和管理进程?③ 如何杀死进程?④ 如何让进程在后台运行?⑤ 调度进程。

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

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

    Linux系统下守护进程编程方法

    守护进程(Daemons)是Linux系统中一类特殊的服务程序,它们通常在后台运行,没有控制终端,也不依赖于任何登录Shell。守护进程的设计目标是高可靠性,能够应对各种异常情况,持续运行并提供服务,比如网络服务、...

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

    本文将对一些常用的Linux后台进程管理命令进行总结,帮助你更好地理解和掌握这些工具。 首先,我们讨论如何将命令放到后台执行。在Linux中,如果你希望一个命令在后台继续运行,可以在命令末尾添加"&"符号。例如,`...

    Ubuntu下后台持续运行Python程序

    首先,我们需要理解在Linux系统中,后台运行进程的基本概念。通常,当我们在终端中执行一个命令,该命令会在当前的shell会话中运行,如果关闭终端,程序也会随之结束。为了使Python程序能在后台独立运行,我们有几种...

    Linux系统中守护进程的创建方法.pdf

    Linux 系统中守护进程是指在后台运行而又无终端或登录 shell 与之相关联的进程。守护进程可以周期性地执行某种任务或等待处理某些特定的事件,是一种很有用的进程。Linux 的大多数服务器进程就是用守护进程实现的,...

    Linux以守护进程方式运行的信息服务器

    【守护进程】在Linux系统中,守护进程(Daemon)是一种在后台运行且不与终端关联的进程,通常用于提供持续性的服务。守护进程在启动时会脱离控制终端,避免受到用户登录登出的影响,以便长期稳定地运行。守护进程常...

    linux 后台运行node服务指令方法

    本文将详细介绍如何在Linux后台运行Node服务。 一、`nohup`命令 `nohup`(no hang up)命令允许我们在后台运行程序,即使用户注销或断开SSH连接,程序也不会被挂起或终止。要使用`nohup`,只需在运行Node服务之前...

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

    查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。也就是...

Global site tag (gtag.js) - Google Analytics