在 CentOS 6 64 位中以非 root 用户启动时自动运行 Linux 程序

在 CentOS 6 64 位中以非 root 用户启动时自动运行 Linux 程序

我有一个需要通过特定用户“非root”运行的软件,因此它的主目录是/home/non-root/我要强调的是,该程序一定不能通过root运行,只能在mysql开始运行后运行

它有一个需要通过命令运行的软件:./athena-start start。我对unix系统不太熟悉,我尝试用谷歌搜索任何教程,但我没有找到一个指导如何通过非root和在centos上自动运行的指南,我发现这里,但似乎只适用于 Fedora。

有人可以帮助我吗?

答案1

有几种方法可以实现这一点。一个初始化脚本,使用 crontab 和其他各种脚本。以我的拙见,最简单的一种是@reboot在应该运行athena-start start命令的用户的 crontab 中使用标签。

@reboot标签在计算机启动后仅运行一次命令。用于crontab -e -u <yourusername>将以下内容放入您选择的用户的 crontab 中。以下是您应该放入 crontab 中的内容。

@reboot while [ "x`ps -ef|awk '$8 ~ /[:print:]*mysqld[:mysqld:]*/ { print $2 }'|wc -l`" == "x0" ]; do sleep 10 ; done && cd /your/directory && ./your_command

将其写入脚本并放置在某个地方可能是一个好主意,而不是在 crontab 中使用可怕的单行代码。这一切背后的想法是:我们每 10 秒检查一次进程表,如果找到匹配项,即。有一个 mysqld 进程(或与之非常相似的进程),我们退出循环,更改到要运行的宝贵命令所在的目录,然后最后运行该命令。

另一种选择是编写一个在 MySQL 守护进程之后启动的 init 脚本,但示例需要以# chkconfigMySQL init 脚本开头的行的内容。

相关内容