我当前正在尝试运行脚本,该脚本将在我的AWS实例在实例生命周期内启动时在后台运行。在测试更复杂的脚本之前,我正在使用一个简单的脚本对其进行测试,以查看其是否有效:
#!/bin/bash
while [true]; do
sleep 1
echo "Hello World" >> "tempStorage.json"
done
我的sudo crontab -l
返回:
# All the comment stuff
@reboot sh /home/ubuntu/test/testScript/test.sh
这是脚本的路径。我显然也已经运行chmod +x test.sh
以确保其可执行文件。
问题是,当我停止然后启动AWS实例时,tempStorage.json
文件中没有任何内容。我检查了其他线程,它们都暗示这是我应该做的事情,因此我很困惑,建议将不胜感激。谢谢。
答案 0 :(得分:1)
应该可以。我认为问题在于您没有在脚本中提供tempSTorage.json
文件的完整路径。因此,它将被写入与您要查找的文件夹不同的文件夹中,特别是默认情况下cron在其中启动进程的任何文件夹。尝试将其更改为/tmp/tempSTorage.json
之类,然后再次重新启动服务器。
请注意,如果您想要某种可以在启动时启动并永远运行的东西,那可能不是最好的方法。在这种情况下,我会考虑将您的流程作为服务运行。
答案 1 :(得分:0)
正如Mark B所述,问题是cron脚本的执行目录。那么有两种解决方案。
A)按照Mark B的建议更改文件路径,这样脚本将类似于:
#!/bin/bash
while [true]; do
sleep 1
echo "Hello World" >> "/home/ubuntu/test/testScript/tempStorage.json"
done
B)更改cron执行目录,并保持脚本原样。如果您需要将脚本放在任何目录中,则效果更好。对于crontab,它看起来像这样:
# All the comment stuff
@reboot cd /home/ubuntu/test/testScript && sh test.sh