Linux开机rc.local不自启动执行脚本其他一些问题进行补充说明

Linux开机rc.local不自启动执行脚本其他一些问题进行补充说明

在上一篇,我们讲了Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决

这一篇我们补充一些其他的问题

问题一:我怎么知道我rc.local里面的命令启动成功不成功呢,我怎么看相关的日志

  • 你可以查看系统日志文件/var/log/syslog或者/var/log/messages,查找rc.local相关的日志信息。你可以使用以下命令来查看:grep rc.local /var/log/syslog 或者 grep rc.local /var/log/messages —但是很难过,有些机器这一条不好使,看不见,如果你能看到那你很幸运
  • systemctl status rc-local.service,你能看到CGroup那下面树形状的那几个30717啊,30718啊这些启动成功的,后面跟的都是你在rc.local中配置的相关命令,这里就能很明显的看到你哪些启动成功了
    Linux开机rc.local不自启动执行脚本其他一些问题进行补充说明_第1张图片
  • 主动把命令产生的日志输出到相应的文件中比如/var/log/mycommand.log中:
nohup /path/to/command >> /var/log/mycommand.log 2>&1 &

或者:

nohup /path/to/command > /var/log/mycommand.log 2>&1 &

在Linux中,>和>>都是重定向符号,用于将命令的输出重定向到文件中。它们的区别如下:
‘>’------覆盖原有文件内容,如果文件不存在则创建文件。例如,将命令的输出重定向到文件中:command > file.txt
‘>>’------追加到原有文件内容的末尾,如果文件不存在则创建文件。例如,将命令的输出追加到文件中:command >> file.txt
因此,如果想要覆盖原有文件内容,使用>;如果想要将输出追加到文件末尾,使用>>。

问题二:手动执行命令 nohup python /data/xxxx/xxxxx/run.py > /data/xxxx/xxxx/nohup.out 2>&1 & 启动成功,但是放在rc.local里面自启就启动不成功,为什么

  1. 请检查你的这个脚本的用户权限,自启和手启是否是同一个用户!!!您需要确保在rc.local中以正确的用户身份运行命令,您可以尝试在rc.local中使用su命令切换到正确的用户,然后再运行Python脚本。例如:
su -c 'nohup python /data/xxt/xxx/run.py > /data/xxx/xxx/nohup.out 2>&1 &' your_username

其中,your_username是您要切换到的用户名。
2. 如果你像我一样用的是python,你需要考虑下你的环境,是不是用conda,如果是node考虑nvm等虚拟环境控制,在这里,你需要指定绝对路径来使你的命令启动,所以这条命令需要修改为:

nohup /root/你的conda环境/bin/python /data/xxxx/xxxxx/run.py > /data/xxxx/xxxx/nohup.out 2>&1 &

完成,收工

你可能感兴趣的:(linux,linux,数学建模,运维)