启动进程命令linux linux启动进程和关闭进程

linux系统下如何从后台启动进程?你得查看后台存在的进程 #jobs
#fg
#bg
两个命令是调入前台和后台的命令
在命令后面加上一个
比如:
rm -rf /tmp/
Linux 技巧:让进程在后台可靠运行的几种方法
WeiboGoogle 用电子邮件发送本页面
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器 , 运行了一些耗时较长的任务,结果却由于网络的不稳定导致任务中途失败 。如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理这个问题 。
nohup/setsid/
场景:
如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢?
hangup 名称的来由
在 Unix 的早期版本中,每个终端都会通过 modem 和系统通讯 。当用户 logout 时,modem 就会挂断(hang up)电话 。同理,当 modem 断开连接时 , 就会给终端发送 hangup 信号来通知其关闭所有子进程 。
解决方法:
我们知道,当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程 。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程 。
1. nohup
nohup 无疑是我们首先想到的办法 。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号 。让我们先来看一下 nohup 的帮助信息:
NOHUP(1)User CommandsNOHUP(1) NAMEnohup - run a command immune to hangups, with output to a non-tty SYNOPSISnohup COMMAND [ARG]...nohup OPTION DESCRIPTIONRun COMMAND, ignoring hangup signals.--help display this help and exit--versionoutput version information and exit
可见,nohup 的使用是十分方便的,只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中 。一般我们可在结尾加上""来将命令同时放入后台运行,也可用"filename 21"来更改缺省的重定向文件名 。
[root@pvcent107 ~]# nohup ping[1] 3059nohup: appending output to `nohup.out'[root@pvcent107 ~]# ps -ef |grep 3059root30599840 21:06 pts/300:00:00 ping30679840 21:06 pts/300:00:00 grep 3059[root@pvcent107 ~]#
2 。setsid
nohup 无疑能通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了 。setsid 就能帮助我们做到这一点 。让我们先来看一下 setsid 的帮助信息:
SETSID(8)Linux Programmer’s ManualSETSID(8) NAMEsetsid - run a program in a new session SYNOPSISsetsid program [ arg ... ] DESCRIPTIONsetsid runs a program in a new session.
可见 setsid 的使用也是非常方便的 , 也只需在要处理的命令前加上 setsid 即可 。
[root@pvcent107 ~]# setsid ping [root@pvcent107 ~]# ps -ef |grep3109410 07:28 ?00:00:00 ping31102 292170 07:29 pts/400:00:00 grep [root@pvcent107 ~]#
值得注意的是,上例中我们的进程 ID(PID)为31094,而它的父 ID(PPID)为1(即为 init 进程 ID),并不是当前终端的进程 ID 。请将此例与nohup 例中的父 ID 做比较 。
3 。
这里还有一个关于 subshell 的小技巧 。我们知道,将一个或多个命名包含在“()”中就能让这些命令在子 shell 中运行中,从而扩展出很多有趣的功能,我们现在要讨论的就是其中之一 。
当我们将""也放入“()”内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的 。让我们来看看为什么这样就能躲过 HUP 信号的影响吧 。
[root@pvcent107 ~]# (ping)[root@pvcent107 ~]# ps -ef |grep1627010 14:13 pts/400:00:00 ping16278 153620 14:13 pts/400:00:00 grep [root@pvcent107 ~]#
从上例中可以看出,新提交的进程的父 ID(PPID)为1(init 进程的 PID) , 并不是当前终端的进程 ID 。因此并不属于当前终端的子进程,从而也就不会受到当前终端的 HUP 信号的影响了 。
Linux中如何启动进程?进程调度命令有哪些?Linux技术的发展引起了很多企业和个人的关注 。市场对Linux运维的需求逐渐增加,学习Linux技术的人越来越多 。在Linux运维中,进程是必须学习掌握的技能 。那么Linux中如何启动进程?常用的进程调度命令有哪些?
执行中的程序称作进程 。当程序的可执行文件存储在存储器中并运行时 , 每个进程将被动态分配系统资源、内存、安全属性和相关状态 。多个进程可以与同一个程序相关联,并在同一时间执行,而不会相互干扰 。操作系统将有效地管理和跟踪所有正在运行的进程 。
Linux中如何启动进程?启动进程的方法是什么?
手工启动 。用户在输入端发出命令,直接启动进程 。分为前台启动和后台启动 。前台启动:直接在SHELL中输入命令进行启动 。后台启动:启动一个目前并不紧急的进程 。
调度启动 。系统管理员根据系统资源和进程占用资源的情况 , 事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务 。
常用的进程调度命令有哪些?
常用的进程调度命令有:at、batch、crontab 。
以上便是关于“如何启动或终止进程?常用的进程调度命令有哪些?”的相关介绍 。想要成为一名优秀的Linux运维工程师 , 需要掌握更多的Linux知识 。
Linux中启动进程的方法有哪些?哪种更好用?Linux手工启动进程
手工启动进程指启动进程命令linux的是由用户输入命令直接启动一个进程启动进程命令linux,根据所启动启动进程命令linux的进程类型和性质不同,又细分为前台启动和后台启动两种 。
前台启动进程
这是手工启动进程最常用的方式,因为当时输入一个命令并运行,就已经启动启动进程命令linux了一个进程,而且是一个前台的进程,此时系统其实已经处于一个多进程的状态,一个是shell进程,另一个是新启动的进程 。
实际上,系统自动时就有许多进程悄悄地在后台运行,不过为了方便阅读,并没有将这些进程包括在内 。
假如启动一个比较耗时的进程,然后再把该进程挂起,并使用ps命令查看 , 就会看到该进程在PS显示列表中 。将进程挂起,指的是将前台运行的进程放到后台,并且暂停其运行 。
后台启动进程
进程直接从后台运行,用的相对比较少 , 除非该进程非常耗时,且用户也不急着需要其运行结果的时候,例如,用户需要启动一个需要长时间运行的格式化文本文件的进程,为了不使整个shell在格式化过程中都处于被占用状态,从后台启动这个进程是比较明智的选择 。
从后台启动进程,其实就是在命令结尾处添加一个符号 。输入命令并运行之后,shell会提供给我们一个数字,此数字就是该进程的进程号 。然后直接就会出现提示符,用户就可以继续完成其启动进程命令linux他工作 。
手工启动的2种方式,实际上它们有个共同的特点,就是新进程都是由当前shell这个进程产生的,换句话说,是shell创建了新进程,于是称这种关系为进程间的父子关系,其中shell是父进程,新进程是子进程 。
且一个父进程可以有多个子进程,通常子进程结束后才能继续父进程;当然,如果是从后台启动,父进程就不用等待子进程了 。
Linux调度启动进程
在Linux系统中,任务可以被配置在指定的时间、日期或者系统平均负载量低于指定值时自动启动 。
例如,Linux预配置了重要系统任务的运行 , 以便可以使系统能够实时被更新,系统管理员也可以使用自动化的任务来定期对重要数据进行备份 。
实现调度启动进程的方法有很多,比如通过crontab、cat等命令 。
linux后台启动进程父子进程
在linux系统里面,子进程由父进程fork而来 , 而所有的进程都是由init进程或其子进程fork而来,即init进程是所有进程的祖先 。
父子进程的运行是相对独立的,一方的退出不会导致另一方退出 。
进程组和会话
Session特点
session可以在任何时候创建,调用setsid函数即可,session中的第一个进程即为session的leader,leader是不能变的 。常见的创建session的场景是用户登录,启动bash进程时将会创建新的session,bash进程会作为session的leader,随后bash里面运行的进程(不特殊处理)都将属于这个session 。
session的主要特点是当session的leader退出后,session中的所有其它进程将会收到SIGHUP信号 , 其默认行为是终止进程,即session的leader退出后,session中的其它进程也会退出 。
如果session和tty关联的话,它们之间只能一一对应,一个tty只能属于一个session,一个session只能打开一个tty 。当然session也可以不和任何tty关联 。
进程的启动方式:
【启动进程命令linux linux启动进程和关闭进程】1)前台启动:用户输入命令,直接执行程序
2)后台启动:在命令行尾加入“”符号
要使终端关闭时进程不退出,有以下几种情况:
1)用户进程拦截SIGHUP信号 。
2)使用户进程和bash进程不在一个session 。
启动进程命令linux的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux启动进程和关闭进程、启动进程命令linux的信息别忘了在本站进行查找喔 。

    推荐阅读