如何用脚本可靠关闭一个linux服务或进程

一、脚本样例

以quectel的EC20模组关闭ppp拨号服务脚本为例,以下为脚本源码:

#!/bin/sh
timeout=5
killall -15 pppd
sleep 1
killall -0 pppd
while [ $? -eq 0 ]
do
	timeout=`expr $timeout - 1`
	if [ $timeout -eq 0 ]
	then
		exit 1
	fi
	sleep 1
	killall -0 pppd
done
	
if [ $? -ne 0 ]
then
	killall -9 pppd
fi	

二、代码解释

kill 后跟pid来结束进程; killall 后跟服务名称/进程名称来结束进程。

kill/killall后边跟的数字含义见下图

killall -15 pppd : 给pppd进程发送SIGTERM信号,通知该进程自己实现退出,但该程序可能在执行IO,不一定能及时响应,因此有可能被阻塞。

sleep 1: 延时1s,等待pppd自我实现退出,此时不一定能成功。

killall -0 pppd : 发送-0 的含义是判断当前进程或服务是否存在, 该进程或服务不作任何响应,如果返回0则服务存在,否则服务不存在。

while [ $? -eq 0 ] : shell 脚本的while循环控制,$?表示上一条语句执行结果。

exit 1: 退出while,并返回while的执行结果为1,一般表明异常退出,此处的含义为5秒内pppd没有正常退出。

if [ $? -ne 0 ]:判断while执行的结果,如果不为0,则执行if内容;

killall -9 pppd:发送SIGKILL信号给pppd,无条件退出,强制退出进程,该信号不可忽略或被进程捕获。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,有很多需要使用脚本监视的地方。以下是其中的一些: 1. 监视进程是否运行 - 有时候需要确保某个进程一直在运行,如果进程异常退出,需要及时重新启动它。 2. 监视进程占用的系统资源 - 可以使用脚本监视进程的 CPU 使用率、内存使用率等,以便及时发现并解决资源占用过高的问题。 3. 监视进程的日志输出 - 有时候需要查看进程的日志输出,以便及时发现问题并解决。 4. 监视进程的状态 - 可以使用脚本监视进程的状态,如运行状态、停止状态等,以便及时发现并解决问题。 5. 监视进程的退出码 - 在某些情况下,需要监视进程的退出码,以便及时发现并解决问题。 总之,脚本可以方便地对进程进行监视和管理,以确保进程的正常运行和稳定性。 ### 回答2: 在Linux中,进程是系统中正在运行的程序的实例。虽然Linux具有强大的进程管理功能,但有时候仍然需要使用脚本来监视进程。以下是需要使用脚本监视进程的一些情况: 1. 自动重启进程:当某个进程崩溃或意外终止时,可以使用脚本监视该进程,并在发现进程异常时自动重启它。这确保了进程的持续可靠运行,提高了系统的稳定性。 2. 监控进程的资源使用情况:通过脚本,可以周期性地监测进程的CPU使用率、内存占用情况等资源使用情况。这样可以及时发现进程的异常状态,避免出现过载、内存泄漏等问题。 3. 进程异常行为检测:使用脚本可以监视进程的行为,并在发现进程执行不正常的操作时进行警告或采取相应的措施。例如,当一个进程尝试未经授权的系统调用、访问受限资源等行为时,可以通过脚本及时发现和应对。 4. 进程启动和关闭的管理:脚本可以监视和管理进程的启动和关闭过程。例如,当一个进程启动后,脚本可以记录启动时间,或者在进程异常关闭时发送警报。 5. 资源和性能优化:通过脚本,可以监测并优化进程的资源和性能使用。例如,根据进程的运行需求,在资源空闲时启动进程并在高负载时限制进程的资源分配。 总之,虽然Linux本身具有强大的进程管理功能,但是使用脚本监视进程可以进一步提高系统的稳定性、安全性和性能。 ### 回答3: 在Linux中,进程是系统中运行的程序的实例。虽然Linux内核可以自动管理进程的创建和销毁,但有时候我们仍然需要使用脚本来监视进程的运行情况。 首先,脚本可以用来检测进程是否正在运行。通过使用命令如"ps"和"pgrep",我们可以在脚本中检查指定进程的ID是否存在,如果不存在则说明进程已经终止。 其次,脚本还可以监视进程的资源使用情况。使用命令如"top"、"ps"和"free",我们可以在脚本中获取进程的CPU占用、内存占用和磁盘IO等信息。这样可以及时发现并解决因资源不足导致的性能问题。 另外,脚本还可以监视进程的运行时间。我们可以通过记录进程的启动时间和当前时间的差值,来判断进程是否已经运行了太久,如果是则可能需要重启该进程以提高系统的稳定性和可用性。 此外,脚本还可以用来监视进程的日志输出。通过定期检查进程的日志文件,我们可以及时发现并解决因错误或异常导致的进程崩溃或故障。 总之,Linux中的进程确实有一些需要使用脚本监视的地方。通过使用脚本来监视进程的运行情况、资源使用情况、运行时间和日志输出,我们可以及时发现并解决因进程异常而导致的系统问题,从而提高系统的稳定性和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值