如何在bash脚本中重新启动服务?

如何在bash脚本中重新启动服务?

我编写了一个简短的脚本来将日志上传到我的 ftp 服务器,您可以忽略除了最后一行应该重新启动 rsyslog 之外的所有内容。从命令行执行命令工作正常,但在脚本文件中不起作用。有人可以帮忙吗?

#!/bin/bash


mv /var/log/rtx8660.log /home/vocovo/RTX8660_$(date +"%Y-%m-%d-%H_%M").log

touch /var/log/rtx8660.log

 cd /home/vocovo


  FTPLOG=/tmp/ftplogfile
  ftp -inv <<! > $FTPLOG
  open SERVER
  user USER PASS
  cd /Wickes_Test
  prompt
  mput RTX*
  close
  quit
  !

 FTP_SUCCESS_MSG="226 Transfer complete"
 if fgrep "$FTP_SUCCESS_MSG" $FTPLOG ;then
 echo "ftp OK"
 rm RTX*
 else
 echo "ftp Error: "$OUT
 fi
 exit 0




 service rsyslog restart

答案1

最后一行永远不会执行,因为您在它之前退出了脚本。

exit 0

必须是脚本的最后一行。

答案2

您没有提到哪个 Debian 版本,但假设您使用的是 init.d 上转发的版本,您可以尝试:

/etc/init.d/rsyslog restart

记住以 root 身份运行。

相关内容