在管理服务器时,有一件事很常见,那就是需要编写脚本来使任务自动化。这些脚本通常用于帮助监视服务器上的服务,甚至可能是服务器提供的服务。问题是,除非您的脚本被设计成反复重新启动,否则管理它们可能会很困难。为需要作为守护进程运行的脚本创建init脚本可能会很麻烦,而且当init服务已经转移到systemd时,这意味着需要为新系统更改所有内容。幸运的是,管理人员有通过让脚本的守护进程更容易的能解决这些问题的计划。
如何与管理员一起管理自定义脚本
管理员是什么?
管理员并不打算取代systemd或任何其他的init系统,它的目的是对服务器上现有的init系统进行补充,并作为一个守护进程本身来管理您想要运行的脚本。一旦它开始启动,它将自动运行您开始配置它的任何脚本;如果由于任何原因失败,它也可以重新启动脚本。在测试之后,没有必要担心设计脚本来为您登录文件,因为管理员可以配置为脚本中的任何输出或错误重新定向到日志文件。它也使得运行作为特定用户的脚本非常简单,您可能希望它运行,而不是让它作为根运行。因此,如果所有这些听起来都很有吸引力,那么接下来让我们看看如何安装和配置它。
安装管理员
幸运的是,安装非常简单,因为管理员与Debian和Ubuntu的默认存储库以及CentOS和Red Hat的EPEL存储库一起使用。您可以安装在Debian和Ubuntu中:
sudo apt-get更新
sudo apt-get安装管理员
您首先需要在CentOS和红帽系统从Fedora项目中配置EPEL存储库:https://fedoraproject.org/wiki/EPEL。安装之后,您就可以安装下面的命令:
yum安装管理员
令人烦恼的是,根据您使用的分布,配置的存储方式略有不同。在Debian和Ubuntu系统的主要配置存储在/etc/supervisor/supervisord。您的脚本的conf和配置存储在以“.conf”扩展的结尾的目录文件/etc/supervisor/conf中。在CentOS和Red Hat中,主要配置是在/etc/superviso ed目录中。在/etc/supervisor系统中,任何额外的配置都可以使用以“。”结尾的d目录。ini文件扩展名。尽管存在这些差异,但是配置文件的内容本身是相同的,不管您使用的是哪个发行版。让我们来看一个示例配置,您可能会在其中一个文件中放入:
(项目:myScript)
命令= /根/脚本/ myscript.sh
目录= /根/脚本
自动启动= true
autorestart = true
startretries = 3
stderr_logfile = / var / log / myscript-error.log
stdout_logfile = / var / log / myscript.log
用户= scripty
环境= USEFUL_THING =“有用的东西”
让我们看一下配置文件
第一行告诉管理员您将使用的名称来引用您的程序。在本例中,我们将它设置为“myScript”,但这可以是您想要的任何东西。
下一行是命令行,告诉管理员它需要运行的命令。
然后,我们有了目录行,它告诉管理员您的脚本应该在哪个工作目录下工作。
接下来是自动启动设置。当设置为“true”时,程序将在启动时自动启动,当设置为“false”时,它将不会自动启动。
自动控制线决定了如果它停止运行管理者是否应该自动重启程序。再一次,“true”意味着它将尝试自动重启,“false”表示它不会自动重启。
与上面的“startretry”相关的是,管理员将尝试启动一个在放弃运行之前停止运行的程序,并假定它已经被破坏了。
stderrlogfile和stdoutlogfile指定了文件,在此文件中,管理员应该从stderr输出(错误输出)和stdout输出(手动运行程序时看到的正常用户输出)保存输出。
用户行允许您提供您希望脚本运行的用户。
最后,环境行允许您指定需要为脚本设置的任何环境变量,以便它能成功运行
这是控制脚本的一种非常简单的方法。您需要为您想要运行的每个脚本创建一个这样的文件。如果您要启动它,请运行以下命令:
sudo supervisorctl重读
sudo supervisorctl更新
这将使管理员重新加载配置。完成之后,让它根据新配置来更新它正在运行的进程
如果它还没有开始运行您的脚本,那么您可以手动启动它:
sudo supervisorctl开始myScript
在这种情况下,为您在配置文件中提供程序的名称更改“myScript”。
上述内容是由dreamhost中文指南(http://dreamhost.cn/)为大家提供的,如果您想了解更多信息,请继续关注dreamhost中文指南,如果您想转载此内容,请注明出处。