将Python脚本作为Linux系统服务启动的完整指南
本文详细介绍如何将Python爬虫脚本封装为Linux系统服务,实现服务器重启后自动运行。通过编写Shell启动脚本、配置/etc/init.d目录及使用chkconfig命令,解决服务器维护导致的任务中断问题。同时针对Windows编辑导致的换行符报错提供sed修复方案,确保脚本在Linux环境下稳定执行。
Python脚本Linux服务化概述
脚本服务化的核心目的
Python在文本处理领域应用广泛,为满足数据获取需求,常需定期运行爬虫程序抓取数据。然而,云服务器会不定期进行维护并重启,导致正在运行的爬虫进程中断。通过将Python脚本服务化,可确保服务器重启后脚本自动启动,避免每次维护后手动执行脚本的繁琐操作。
配置开机自启服务的完整步骤
具体实现步骤
第一步,在已编写好的Python脚本文件头部添加解释器声明。
Python脚本头部声明
#!/usr/bin/python
第二步,编写用于启动Shell脚本的配置文件。
Shell服务控制脚本示例
vi pystock.sh
#vim /etc/init.d/httpd
#!bin/bash
lock="py_stock.py"
#启动服务方法
start(){
echo "service start...."
su root -c "python /root/python/py_stock/src/crawler/py_stock.py &"
}
<pre name="code" class="plain">#停止服务方法
stop(){ echo "service stop...." pkill -f $lock}
#查看服务状态
status(){
if [ -e $lock ];then
echo "$0 service start"
else
echo "$0 service stop"
fi
}
#重新启动
restart(){
stop
start
}
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
echo "$0 start|stop|status|restart"
;;
esac
第三步,将编写好的Shell脚本复制到系统服务目录:cp pystock.sh /etc/init.d/
第四步,赋予Shell脚本可执行权限:chmod +x /etc/init.d/pystock.sh
第五步,将脚本注册为系统服务:chkconfig --add pystock.sh
第六步,配置服务在运行级别3和5下开机自动启动:chkconfig --level 35 pystock.sh on
Windows换行符导致的报错与修复
常见问题排查
在尝试通过Shell脚本启动Python脚本时,系统可能抛出如下错误提示。
syntax error near unexpected token `$'{\r''
该错误源于操作系统间的换行符差异:Windows使用\r\n,而Linux仅使用\n。若在Windows环境下编辑Shell脚本并传输至Linux,Shell解释器会先解析\r字符,导致后续脚本解析失败。由于\r在Linux终端中不可见,此问题常被忽视,需特别注意。
解决方案
使用sed命令去除文件中的\r字符,语法为:sed 's/\r//' 原文件 >转换后文件
以上即为将Python脚本作为Linux服务启动的完整实现方法及故障处理方案,供读者参考。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









