如何 运行 从批处理脚本处理

how to run process from batch script

我在 linux debian 中有简单的 batch 脚本 - Debian GNU/Linux 6.0 - 然后停止进程删除日志文件并再次启动进程:

#!/bin/bash
killall -KILL rsyslogd
sleep 5s
rm /var/log/syslog
rm /var/log/messages
rm /var/log/kern.log
sleep 3s
rsyslogd
exit

进程名称是rsyslogd。我必须在删除日志文件之前关闭它,以便 linux 从磁盘中清空 space。

我看到 killall -KILL 通过名称关闭进程,但相反的是什么 - 运行 命令? 在没有任何命令的情况下按名称调用它似乎不起作用。我很乐意提供任何提示,谢谢。

Debian 使用 systemd 来管理进程。因此,您应该使用 systemd 的命令来停止和启动 rsyslogd.

systemctl stop rsyslog

systemctl start rsyslog

如果您正在使用 确实 旧版本的 Debian(太旧以至于您应该升级),可能仍在使用 sys V。在这种情况下,/etc/init.d 下有一个名为 rc.rsyslog 或类似名称的文件(使用 ls /etc/init.d 查找确切名称)。在那种情况下,它将是

sudo /etc/init.d/rc.rsyslog stop

sudo /etc/init.d/rc.rsyslog start

或者您的 systemd 软件包可能已损坏。在这种情况下,可以重新安装软件包:

apt-get --reinstall install systemd

启动 rsyslogd:

 systemctl start rsyslog

要阻止它:

 systemctl stop rsyslog

如果您想同时执行这两项操作,请使用

 systemctl restart rsyslog