Linux服务器后台运行爬虫程序

本地长时期运行爬虫程序后,被检测反爬的几率大大增高。所以想到将爬虫部署到服务器,定期自动运行。但是,远程连接Linux服务器跑程序,如果本地电脑关机,linux服务器程序也会断掉,这是因为断开连接后,终端会收到SIGHUP(hang-up 挂断)信号从而关闭该会话期的子进程。

有几种方法可以解决这个问题:
1. 使用nohup命令,在命令前加上nohup,并在命令后加上&符号,使程序在后台运行,并忽略SIGHUP信号1。例如:nohup ping 127.0.0.1 &。nohup会将程序的输出重定向到当前目录或$HOME目录下的nohup.out文件中。
2. 使用screen命令,创建一个虚拟终端,并在其中运行程序2。例如:screen -S name创建一个名为name的虚拟终端,然后在其中运行程序。如果要退出虚拟终端,可以按下Ctrl+A+D组合键。如果要重新进入虚拟终端,可以使用screen -r name命令。
3. 使用Ctrl+Z组合键将程序暂停,并使用bg命令将其放入后台运行。例如:运行了python tt.py这个程序,按下Ctrl+Z暂停它,然后输入bg %1将其放入后台运行。

这样,在linux服务器后端运行程序,不会因为前段电脑关机而停止程序的运行。在这里演示第一种方法:

首先,进入程序所在路径,运行指令:

nohup python3 get_pic.py > hehe.log&

但是,这样会报错:

nohup: ignoring input and redirecting stderr to stdout

意思是控制台输出的信息输出到两处,根据大佬的代码,修改指令:

nohup python3 -u get_pic.py > hehe.log 2>&1 &

为python添加-u 参数,使得python不启用缓冲(不然日志更新会很慢)。运行成功!效果如下:

1634是进程号,忘记了也没关系,可以通过 ps 指令查看所有进程。要想结束这个进程,可以输入指令:

kill -9 PID

要想查看程序的运行情况,有两张方式,第一种是:

vim hehe.log

这样的话就可以看到log中的内容,但是没有办法动态的显示程序的动态的运行情况。

第二种是:

tail -f hehe.log

这样的话就可以动态的显示程序的运行情况,采用CTRIL + C的方式停止查看。查看结果是:

参考链接:

https://blog.csdn.net/qq_40721108/article/details/129411611

https://blog.csdn.net/weixin_43878062/article/details/120383226

https://blog.csdn.net/davidsmith8/article/details/86486565

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇