在RHEL7中启动时执行脚本

我的服务器重新启动每个星期天和星期一上午,每当服务器启动我需要做服务重新启动。 其实我调用一个脚本来执行自己(每次手动)。 我想要实现的是每次服务器启动时都可以调用这个脚本来执行。 这可能吗?

我每次执行的脚本都是这样的:

cd /var/www/activefolder/current && RAILS_ENV=production script/delayed_job start 

正如你可以看到这个脚本结合了两个任务来完成这个任务。

服务器操作系统是Redhat EL 7.我猜想直到6,OS使用init.d,而RHEL7引入了一个更灵活的选项systemd。 但不知道是否可以像我刚才提到的那样设置。 任何帮助将非常感激。

不知道我是否已经给你所有的要求来回答这个问题。 如果不是,请随时询问,我将用相关信息更新我的问题。

基于Redhat的文档创build自定义单元文件和systemd.exec – 执行环境configuration :

未testing™

创build文件(触摸> chmod>编辑似乎build议,我不知道为什么):

 touch /etc/systemd/system/activefolder.service chmod 664 /etc/systemd/system/activefolder.service vim /etc/systemd/system/activefolder.service 

/etc/systemd/system/activefolder.service例如:

 [Unit] Description=activefolder After=network.target [Service] WorkingDirectory=/var/www/activefolder/current ExecStart=/var/www/activefolder/current/script/delayed_job start Type=forking PIDFile=/run/activefolder.pid Environment="RAILS_ENV=production" #User=httpd #Group=httpd [Install] WantedBy=default.target 

然后:

 systemctl daemon-reload systemctl start name.service 

您不需要创build一个systemd服务来在启动时运行命令,可以使用crontab来完成。

只需将用@reboot <user_name>前缀运行所需的命令添加到/etc/crontab

在你的情况下,这将是:

@reboot root cd /var/www/activefolder/current && RAILS_ENV=production script/delayed_job start

经testing在CentOS 6/7中工作(需要vixie-cron ,可能不适用于cronie

/etc/rc.local的末尾添加命令仍然可以。

(但请确保它是可执行的。)

在每个Linux发行版中,通常在初始化脚本,configuration文件(通过包含)等等中执行脚本,代码或其他程序,只要脚本,configuration文件或任何你使用的是一个允许的安全上下文。

根据您的代码需要实现的function,您可能需要在给定的服务启动之后或在其他服务启动之前运行它。 在某些情况下,只把它放在/etc/rc.local是不够的。 如果你需要更多的控制权来执行你的代码,那么你需要了解初始化脚本是如何被触发的,什么是运行级别等。这是一个很好的开始:

对于基于init的系统(RHEL <7): https : //www.linux.com/news/introduction-services-runlevels-and-rcd-scripts

对于systemd系统(RHEL> = 7):http: //0pointer.de/blog/projects/systemd-for-admins-1.html