我有一个用于聊天的机器人,我们使用它存储在每天晚上重新启动的工作站上。现在它重新启动并运行机器人的脚本,同时启动时无需任何人登录。通常它会在那时连接到网络,但如果连接到网络需要更长时间,脚本将退出错误。
我已经尝试将它添加到rc.local文件中,我也尝试将自定义脚本放在init.d目录中并运行
update-rc.d script.sh defaults
。
一旦计算机连接到网络而没有任何人需要登录,我将编辑哪些文件来运行我的脚本?
我试过环顾四周,看到很多关于登录后工作的例子,我也看到this answer看起来可能是正确的轨道?
- 更新 -
我一直在阅读/etc/network/if-up.d/并查看脚本是否放在那里并标记为可执行文件而没有.sh扩展名,它应该运行。 Debian文档here和here解释:
The ifupdown system automatically runs scripts installed in-
"/etc/network/*/" while exporting environment variables to scripts.
和
The ifupdown-extra package provides easy network connection tests for use
with the ifupdown package.
-The network-test(1) command can be used from the shell.
-The automatic scripts are run for each ifup command execution.
The network-test command frees you from the execution of cumbersome low
level commands to analyze the network problem.
The automatic scripts are installed in "/etc/network/*/" and perform the following:
-Check the network cable connection
-Check duplicate use of IP address
-Setup system's static routes based on the "/etc/network/routes" definition
-Check if network gateway is reachable
-Record results in the "/var/log/syslog" file
此过程是否在启动时发生?如果脚本放在这里,只有在建立连接而没有人需要登录的情况下它才能运行吗?如果我的脚本在连接建立之前运行,它将由于主机没有响应而失败,并且需要在有人进来后手动运行。
- 更新 -
当计算机重新启动并连接到网络时,脚本没有被执行,我已经尝试查看原因并阅读此答案here并更改了NetworkManager.conf中的值
[ifupdown]
managed=false
到
[ifupdown]
managed=true
我错过了什么?我知道脚本没有被调用,因为它应该输出到日志中,但日志永远不会出现。
答案 0 :(得分:0)
我相信你可以使用system.d来完成那项任务
[Unit]
Description=My Test Service
After=network.target
...
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
答案 1 :(得分:0)