如何在bash脚本中启动和停止systemctl服务?

Noslenkwah

我正在编写一个bash脚本来执行每日备份。该脚本最终将每天早上自动运行(cron或systemd)。

我想完成的是

  1. 停止我的服务
  2. 执行备份程序
  3. 启动我的服务

我创建的bash脚本如下所示:

# Stop myservice
systemctl stop myservice.service

# Do all the backing up here...

# Start myservice
systemctl start myservice.service

我遇到的问题是,当我运行此脚本时,在systemctl停止/启动调用期间需要输入密码。如果要自动运行,显然不需要每次都输入密码。如何自动运行此脚本而不需要此密码?

Ubuntu 18.04

谢谢!

鸭鸭

根据您的需求和喜好,您有多种可能。

一种明显的方法……

…可以通过将整个脚本root添加到root脚本中crontab(使用sudo crontab -e以用户身份运行整个脚本然后在systemctl stop/start myservice.service运行时不需要任何密码缺点是您可能需要以其他用户身份运行备份任务(例如noslenkwah),并且必须切换到该其他用户进行备份。例子:

# Stop myservice
systemctl stop myservice.service

# Do all the backing up here...
# ... and run the backup_command as user "otheruser":
sudo -u noslenkwah /path/to/backup_command --with --some --options

# Start myservice
systemctl start myservice.service

另一种方法

…将systemctl命令添加/etc/sudoers.d目录中的文件中,以便特定用户可以在不提供密码的情况下运行它们。

  1. 问题sudo visudo -f /etc/sudoers.d/noslenkwah(文件名noslenkwah无关紧要,我的个人习惯是以受该文件设置影响的“主要”用户命名该文件。它只需要是目录下的一个文件即可/etc/sudoers.d。)

  2. 添加以下行并保存文件。

    Cmnd_Alias MYSERVICE = \
        /bin/systemctl stop myservice.service, \
        /bin/systemctl start myservice.service
    
    noslenkwah ALL = (root) NOPASSWD: MYSERVICE
    

这允许用户noslenkwah来运行sudo systemctl stop myservice.service,并sudo systemctl start myservice.service没有密码。它定义了一个名为的命令别名(命令集合)MYSERVICE,然后允许

  • 用户 noslenkwah
  • ALL电脑上
  • 作为用户 root
  • 没有密码
  • 运行由定义的命令 MYSERVICE

更换noslenkwahmyservice实际的用户名和服务名称。请注意,您确实必须sudo systemctl start myservice.service为此发布才能工作(不是sudo systemctl start myservice.service例如,没有)。

不必在意“在ALL计算机上”部分。仅当您打算将同一sudoers文件分发到多台计算机时,这才有意义

然后,您可以将备份脚本更改为

# Stop myservice
sudo systemctl stop myservice.service

# Do all the backing up here...
/path/to/backup_command --with --some --options

# Start myservice
sudo systemctl start myservice.service

并以用户身份运行noslenkwah

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在nodejs中自动启动和停止python脚本?

来自分类Dev

如何通过Linux bash脚本启动/停止Windows服务?

来自分类Dev

如何在Android中基于时间间隔启动服务和停止服务

来自分类Dev

如何在Ant中启动PHP服务器,运行PHPUnit和停止PHP服务器?

来自分类Dev

如何在启动systemctl服务之前运行命令

来自分类Dev

如何在终端中停止循环bash脚本?

来自分类Dev

如何在Unity中启动和停止粒子系统?

来自分类Dev

如果停止,如何在远程服务器上重新启动python脚本?

来自分类Dev

如何在bash脚本中读取服务状态

来自分类Dev

如何在Linux服务器上使用systemctl服务启动Prolog Web服务?

来自分类Dev

使用bash或python脚本启动和停止GCE实例

来自分类Dev

如何使用 Perl CGI 脚本启动/停止服务

来自分类Dev

如何在windows中使用cmd启动和停止mysql服务器

来自分类Dev

redhat 7 +如何永久停止systemctl服务

来自分类Dev

如何在bash脚本中同时获取PIPESTATUS和输出

来自分类Dev

如何在bash脚本中配置和允许管道?

来自分类Dev

如何告诉systemctl服务已经启动

来自分类Dev

如何使用NPM脚本在package.json中启动运行/启动json服务器和实时服务器?

来自分类Dev

如何为Shell脚本创建服务,以便可以像守护程序一样启动和停止它?

来自分类Dev

如何在启动时运行油门停止脚本?

来自分类Dev

如何编写将执行xampp启动和停止的脚本

来自分类Dev

如何使用Java脚本停止和启动动画?

来自分类Dev

如何在脚本中停止tail命令

来自分类Dev

如何在服务器启动时在tmux中运行我的脚本

来自分类Dev

如何在脚本中启动并杀死tcpdump?

来自分类Dev

在Spring MVC中启动和停止服务实例

来自分类Dev

如何在bash shell脚本中启动两个线程?

来自分类Dev

如何在bash shell脚本中启动两个线程?

来自分类Dev

如何在AWS中停止特定服务

Related 相关文章

  1. 1

    如何在nodejs中自动启动和停止python脚本?

  2. 2

    如何通过Linux bash脚本启动/停止Windows服务?

  3. 3

    如何在Android中基于时间间隔启动服务和停止服务

  4. 4

    如何在Ant中启动PHP服务器,运行PHPUnit和停止PHP服务器?

  5. 5

    如何在启动systemctl服务之前运行命令

  6. 6

    如何在终端中停止循环bash脚本?

  7. 7

    如何在Unity中启动和停止粒子系统?

  8. 8

    如果停止,如何在远程服务器上重新启动python脚本?

  9. 9

    如何在bash脚本中读取服务状态

  10. 10

    如何在Linux服务器上使用systemctl服务启动Prolog Web服务?

  11. 11

    使用bash或python脚本启动和停止GCE实例

  12. 12

    如何使用 Perl CGI 脚本启动/停止服务

  13. 13

    如何在windows中使用cmd启动和停止mysql服务器

  14. 14

    redhat 7 +如何永久停止systemctl服务

  15. 15

    如何在bash脚本中同时获取PIPESTATUS和输出

  16. 16

    如何在bash脚本中配置和允许管道?

  17. 17

    如何告诉systemctl服务已经启动

  18. 18

    如何使用NPM脚本在package.json中启动运行/启动json服务器和实时服务器?

  19. 19

    如何为Shell脚本创建服务,以便可以像守护程序一样启动和停止它?

  20. 20

    如何在启动时运行油门停止脚本?

  21. 21

    如何编写将执行xampp启动和停止的脚本

  22. 22

    如何使用Java脚本停止和启动动画?

  23. 23

    如何在脚本中停止tail命令

  24. 24

    如何在服务器启动时在tmux中运行我的脚本

  25. 25

    如何在脚本中启动并杀死tcpdump?

  26. 26

    在Spring MVC中启动和停止服务实例

  27. 27

    如何在bash shell脚本中启动两个线程?

  28. 28

    如何在bash shell脚本中启动两个线程?

  29. 29

    如何在AWS中停止特定服务

热门标签

归档