我在 root 下设置了一个 crontab,用于启动我编写的脚本来启动我的挖矿设备。crontab 如下所示
@reboot /etc/initminer.sh
*/5 * * * * /etc/zombiescan.sh
我知道如果我从普通 shell 启动 zombiescan.sh,它会正常工作;它只是检查 ethminer 是否正在运行。如果没有,它会重新启动设备(我知道这很粗糙,但它似乎有效)。Zombiescan.sh 如下所示:
#!/bin/bash
if pgrep "ethminer" > /dev/null
then
echo "Ethminer Running, continuing....."
else
echo "Ethminer is STOPPED. Rebooting......"
sleep 3
sudo reboot
fi
我还知道,如果从常规 shell 运行,initminer.sh 就可以正常工作,如下所示:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/bin:/home/miner/etc/initminer.sh
#Program starts 3 tmux sessions that each run geth, eth-proxy, and ethminer respectively.
sudo tmux new-session -d -s geth 'sudo geth'
sudo tmux detach -s geth
sleep 1
echo "Geth RPC Server Online! Sleeping 5 seconds...."
sleep 5
sudo tmux new-session -d -s eth-proxy 'cd Documents/eth-proxy && sudo python eth-proxy.py'
sudo tmux detach -s eth-proxy
sleep 1
echo "Eth-Proxy Online! Sleeping 5 seconds..."
sleep 5
sudo tmux new-session -d -s ethminer 'sudo ethminer --farm-recheck 200 -G -F http://127.0.0.1:8080/Andromeda --cl-local-work 256 --cl-global-work 8192'
sudo tmux detach -s ethminer
sleep 1
echo "Ethminer (C++) Mining software Online! Sleeping 5 seconds..."
sleep 1
echo "_________________________________________________________________"
sleep 1
echo "_________________________________________________________________"
sleep 1
echo "_________________________________________________________________"
sleep 1
echo "_________________________________________________________________"
sleep 1
echo "Miner, RPC, XINIT, GPU Temperature Monitoring and Stratum Proxy started!"
sleep 1
echo "Be sure to check tmux status of each process!"
现在我的问题:出于某种原因,每当 CRON 启动 initminer.sh 时,只会运行第一个 tmux 命令 (geth)。它会在分离之前启动 tmux 并成功运行 geth,但之后不会运行任何其他命令。我做错了什么?
为了排除故障,我安装了 postfix 作为 MTA,并检查它发送给我的“邮件”,以监控脚本启动时的情况。我没有收到任何错误(因为显然没有发生任何错误)。
** 请原谅我的格式....第一次发帖,我还没有完全弄清楚如何使用代码片段插入!
编辑1:因此,经过一系列故障排除后,看起来我遇到的问题要么是 cron 在运行脚本时使用的环境变量有问题,要么是某种权限问题。这是我第一次真正使用 cron,所以看起来我还有很多东西要读。