加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

使用nohup在后台执行python程序时需要增加-u选项才能马上通过print()输出日志

(2020-02-20 20:28:34)
分类: IT

python命令有个-u选项Force the stdout and stderr streams to be unbuffered. This option has no effect on the stdin stream.,能够无缓冲地输出信息。

[root@archlinux ~]# nohup python3 -u wannoo.py > wannoo.log 2>&1 & [1] 22618

试了一下,可以看到输出信息了。


常用的进程查看命令

1.ps命令——查看静态的进程统计信息(Processes Statistic)

常见的选项:

a:显示当前终端下的所有进程信息,包括其他用户的进程。

u:使用以用户为主的格式输出进程信息。

x:显示当前用户在所有终端下的进程。

-e:显示系统内的所有进程信息。

-l:使用长(long)格式显示进程信息。

-f:使用完整的(full)格式显示进程信息。

需要注意的是,有一部分选项是不带“-”前缀的(添加“-”前缀后含义可能会有出入)。习惯上将上述选项组合在一起使用,如,“ps aux”或“ps -elf”

示例1:ps aux 将以简单列表的形式显示出进程信息。如下图

上图中的输出信息中,第1行为列表标题,其中各字段的含义描述如下:

USER:启动该进程的用户账号名称

PID:该进程的ID号,在当前系统中是唯一的

TTY:该进程在哪个终端上运行。“?”表未知或不需要终端

STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应予以手动终止。

START:启动该进程的时间

TIME:该进程占用CPU时间

COMMAND:启动该进程的命令的名称

%CPU:CPU占用的百分比

%MEM:内存占用的百分比

VSZ:占用虚拟内存(swap空间)的大小

RSS:占用常驻内存(物理内存)的大小

示例2:ps -elf 以长格式显示系统中的进程信息,包含更丰富的内容。大概意思都一样,PPID为父进程的PID。

示例3:ps 直接执行不带任何选项,只显示当前用户会话中打开的进程。

示例4:结合管道操作和grep命令进行过滤,用于查询某一个进程的信息。

二、控制进程

1.启动进程

进程的启动方式:

手工启动:由用户手工输入命令或执行程序的路径,可以至少启动一个进程。手工启动包括:前台启动和后台启动。前台启动:用户输入命令,直接执行程序

后台启动:在命令行尾加入“&”符号

示例:

后台启动后直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。

调度启动:用于服务器维护工作中,例如当需要执行一些比较费时而且占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)执行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达指定设定时间时会自动启动并完成指定的任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。调度启动可以通过at、crontab命令进行设置。使用 at 命令,设置一次性计划任务

使用 crontab 命令,设置周期性计划任务

(关于at和crontab的配置,准备下个文章再讲解)

2.改变进程的运行方式

1) 挂起当前的进程

按Ctrl+Z组合键将当前进程挂起(调入后台并停止运行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,我们使用windows系统是有时候在本地计算机搜索东西时,发现他搜索的老慢了甚至电脑都有点卡,我们突然不想让它搜了,就想马上让它停止搜索,就是这种感觉。

2) 查看后台的进程

使用jobs命令,可以查看当前终端在后台的进程任务,结合“-l”选项可以同时显示出该进程对应的PID号

示例:

3) 将后台的进程恢复运行

bg(BackGround)命令,可以将后台中暂停执行(如,按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行

fg(ForeGround)命令,可以将后台任务重新恢复到前台运行

示例:

3.终止进程执行

1) Ctrl+C组合键

强制中断正在执行的命令,如,命令长时间没有响应的情况下。

2) kill命令

用于终止指定PID号的进程,需要使用进程的PID号作为参数。无特定选项时,kill命令将给该进程发送终止信号并正常退出运行,有时可能该进程已经无法响应终止信号,这时可以结合“-9”(这是数字9不是字母g,有时候容易看走眼)选项强制终止进程。强制终止进程可能会导致程序运行的部分数据丢失,因此不到不得已时慎用。

示例

5. screen

场景:

我们已经知道了如何让进程免受 HUP 信号的影响,但是如果有大量这种命令需要在稳定的后台里运行,如何避免对每条命令都做这样的操作呢?

解决方法:

此时最方便的方法就是 screen 了。简单的说,screen 提供了 ANSI/VT100 的终端模拟器,使它能够在一个真实终端下运行多个全屏的伪终端。screen 的参数很多,具有很强大的功能,我们在此仅介绍其常用功能以及简要分析一下为什么使用 screen 能够避免 HUP 信号的影响。

 

使用 screen 很方便,有以下几个常用选项:

  • screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。
  • screen -list 来列出所有会话。
  • screen -r session name来重新连接指定会话。
  • 用快捷键CTRL-a d 来暂时断开当前会话。

 Screen 详细使用说明:

https://www.cnblogs.com/emanlee/p/3424635.html

 

 

tail

tail -f      等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

tail -F     等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tailf        等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电



1.nohup

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

  如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

  如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:   
  126 可以查找但不能调用 Command 参数指定的命令。   
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2.&

用途:在后台运行

一般两个一起用

nohup command &

eg:


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有