我在ec2中的一个盒子上运行ubunto。我想在每次机器启动时在特定目录中执行以下命令:
celery -A someapp.tasks --concurrency=1 --loglevel=info worker > output.log 2> errors.log
我跑了
sudo nano /etc/rc.local
并编辑了要读取的文件
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
(
cd /home/ubuntu/somefolder/
sh -e -c 'celery -A someapp.tasks worker -Ofair --loglevel=info > output.log > errors.log'
)
exit 0
但是当服务器启动时,命令不会运行。如果我直接 cd 到/home/ubunto/somefolder 并运行芹菜命令,操作将按预期启动。如何在每次机器启动时运行此命令?
像这样尝试一下,使用子外壳,这样你就不会改变rc.local
的工作目录:
(
cd /home/ubuntu/somefolder
celery -A someapp.tasks --concurrency=1 --loglevel=info worker >output.log 2> errors.log
)
exit 0
您可以简单地使用以下内容:
sudo vi /etc/crontab
在末尾添加以下内容:
@reboot cd /home/ubuntu/somefolder/ && sh -e -c 'celery -A someapp.tasks worker -Ofair --loglevel=info > output.log > errors.log'
干杯。
我会尝试这个:
cd /home/ubuntu/somefolder && celery -A someapp.tasks --concurrency=1 --loglevel=info worker >output.log 2> errors.log