Linux:请允许我静静地后台运行(2)
除了上面介绍的命令,还有 screen 和 tmux 等会话工具,他们都有自己的一套规范,也比较复杂,掌握本文的命令已经足够你驰骋 linux 进程控制了。当然有想了解新知识的可以查询学习一下,应该会比基础命令好用。 作业命令 使用上面的后台执行命令时可能还会遇到一些小状况:
这些都要牵涉到今天的第二个模块–作业; 我们在终端里运行的命令都可以理解为一个作业,有的占用前台终端,有的在后台默默执行,下面的命令就是为了调度这些作业。 jobs jobs 是作业的基础命令,用它可以查看正在运行的作业的信息,其输出如下: jobs 1- Running php test.php & 2+ Stopped php test.php 前面[ ]内的数字是作业 ID,也是后面我们要操作作业的标识,然后是作业状态和命令。 ctrl+z ctrl+z 严格来说并是作业命令,它只是向当前进程发送一个 SIGSTOP 信号,促使进程进入暂停(stopped)状态,此状态下,进程状态会被系统保存,此进程会被放置到作业队列中去,而让出进程终端。 使用它,我们可以暂停正在占用终端的进程而不停止它,从而让我们使用终端命令来操作此进程。 bg bg是 backgroud 的缩写,顾名思义,bg %id 把作业放到后台进程中执行。 结合 ctrl+z 和 bg 命令,我们可以解决上面提出的第一个问题,不停止地将正在占用终端的进程放到后台执行。 fg fg 与 bg 相对,使用它可以把作业放到前台来执行。 disown disown 用来将作业从作业列表中移除,即使它 不属于 会话,这样终端关闭后不再向此作业发送 SIGHUP 信号,以阻止终端对进程的影响。 使用 disown 我们可以解决上面提出的第二个问题,不重新执行将一个没使用 nohup 命令的进程不受终端关闭影响。 守护进程 以上介绍的都是一些临时进程的处理,后台运行的进程的最终方法是将进程变成守护进程。 守护进程 守护进程(daemon)是生存期较长的一种进程,一般在系统启动时启动,系统关闭时停止,没有控制终端,也不会输出。如我们的服务器、fpm 等进程就是以守护进程的形式存在的。 创建过程 要创建一个守护进程,步骤为: 必选项
代码 以下是 php 创建守护进程的伪代码:
总结 linux 是开发者的基础技能,而进程的调度更是我们常用的功能,希望读完本文的同学们能有所收获。 又有大半个月没发博客了,最近鼓捣着重构代码,经常会在一个点上纠结半天,不知不觉就加了个班。而且这个是个没法精确度量工作量和目标的活儿,优化没有尽头嘛。不过由于要更多地考虑一下代码的抽象、效率和扩展,对自己也是个挑战,算是乐在其中吧~ 最近可能会考虑写一个守护进程和 cron 进程调度器,嗯,希望给我算到工作量里,哈哈~想写的太多了,只怨自己还不够强大。。。 【编辑推荐】
点赞 0 (编辑:ASP站长网) |