腳本如下:
export LANG=zh_CN.UTF-8
spider1='spider1'
kill -9 `ps -ef | grep $spider1 | grep -v grep | awk '{print $2}'`
cd ~/work/virtual/ # 切換到虛擬環境的目錄,如果沒有使用虛擬環境,則不需要
/usr/local/bin/pipenv shell # 激活虛擬環境
cd ~/work/spider # 進入scrapy爬蟲項目的目錄
nohup ~/.local/share/virtualenvs/spider-MGYoPRkA/bin/scrapy crawl $spider1 > out.file 2>&1 &
解釋:
- 由於crontab裏沒有tty/pts(終端)這個事實,即不會執行
$HOME/
下的一些環境初始工作,所以需要設置export LANG=zh_CN.UTF-8
,不然會報UnicodeEncodeError: 'ascii' codec can't...
的錯誤; kill
的作用爲每次執行前,先停掉正在運行的爬蟲;- 由於
crontab
在運行時,有他自己的工作目錄,所以需要切換到相應目錄才能執行相應命令;
本人每五分鐘跑一次,crontab代碼爲
*/5 * * * * bash ~/work/start.sh
參考: