从 bash 脚本重启服务

jidexl21

我正在尝试myservice从作为守护程序运行的服务重新启动服务

我创建了一个名为myapprestartin的文件/etc/sudoers.d/,看起来像这样

%myuser ALL=NOPASSWD: /bin/systemctl restart myservice
%myuser ALL=NOPASSWD: /bin/systemctl start myservice
%myuser ALL=NOPASSWD: /bin/systemctl stop myservice

myapprestart.service守护程序为定时单位的呼叫成功运行/home/myuser/restart.sh,但总是失败,并在journalctl以下行

failed to stop myservice.service: Interactive authentication required.

脚本文件/home/myuser/restart.sh包含如下几行

systemctl stop myservice
systemctl start myservice

我需要一些关于我做错了什么的指示。我看过至少四个类似的问题,但由于某种原因,这个案例似乎不起作用。我正在使用 ubuntu 19.02。

大妈

您的脚本restart.sh使用systemctl命令,它是 systemd 的一部分;因为这个命令由于他的角色需要root权限,你需要使用该sudo命令才能使用它(并且你的用户必须被sudoers称为授权的sudo用户)。您的命令如下所示:

sudo /home/myuser/restart.sh
  • /home/myuser/restart.sh只是启动脚本的绝对路径,这与sudo ./restart.sh/home/myuser/文件夹执行相同

此外,正如OP 在评论中提到的那样,您还可以sudo使用绝对路径调用/usr/bin/sudo(/usr/bin/sudo apt updatesudo apt update)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章