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中配置的相关命令,这里就能很明显的看到你哪些启动成功了
- 主动把命令产生的日志输出到相应的文件中比如/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里面自启就启动不成功,为什么
- 请检查你的这个脚本的用户权限,自启和手启是否是同一个用户!!!您需要确保在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 &
完成,收工