ubuntu后台运行与查看程序的多种详细方法

方法1:使用&
方法2:使用nohup
方法3:使用nohup与&组合等(见nohup中第6部分的示例介绍)

一.使用&

一般在执行shell命令的时候我们在命令的后面加上一个‘&’,这样就可以使得该程序在后台运行

python A.py &

二.nohup的介绍与使用

1.简介

nohup的意思就是:永久执行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,**不想让其在你退出账号时关闭,即可用nohup。**nohup用于不挂断地运行命令。nohup在不规定的情况下,所以输出内容会到nohup.out中。

nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响运行,注意了nohup没有后台运行的意思;&是指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出。

2.用法

语法如下:

nohup Command [ Arg … ] [ & ]

例如,你可以使用 nohup 命令运行一个长时间运行的任务,让它在后台持续运行而不受终端关闭的影响。示例:

nohup python A.py &

这将在后台运行 ./A.py 脚本,并且即使你关闭终端,该脚本也会继续运行。

3.由此可知nohup和&一起使用最优

三.指令

1.操作系统中有三个常用的流
0 标准输入流 stdin,用户键盘输入的内容
1 标准输出流 stdout ,输出到显示屏的内容
2 标准错误流 stderr,报错内容
2.2>&1
3.示例介绍
nohup python A.py >> /home/my.log 2>&1 &

综合起来,这条命令的作用是在后台运行 Python 脚本 A.py,将标准输出和标准错误输出都追加到文件 /home/my.log 中。这样即使终端关闭,脚本的输出也会被保存到指定的日志文件中,方便后续检查日志。

3.1追加解释

上面的指令可以拆分

nohup python A.py 1>> /home/my.log &
nohup python A.py 2>> /home/my.log &

这两条命令可以转换成使用不同方式进行标准输出和标准错误输出的重定向:

  1. nohup python A.py 1>> /home/my.log &:将标准输出追加到文件 /home/my.log 中。其中,1>> 表示将标准输出重定向并追加到指定文件。
  2. nohup python A.py 2>> /home/my.log &:将标准错误输出追加到文件 /home/my.log 中。其中,2>> 表示将标准错误输出重定向并追加到指定文件。

这样的设置可以让标准输出和标准错误输出分别保存在同一个文件中,并且分别进行追加,更加直观地区分错误信息和输出信息。

3.2关闭缓冲时时同步日志文件

nohup python -u A.py >> /home/my.log 2>&1 &

3.3覆盖

nohup python A.py > /home/my.log 2>&1 &

这条命令与之前的命令略有不同,具体解释如下:

由于>是覆盖所以一般不建议使用

四.查看后台进程

1.ps(推荐)
Process State 是非常强大的进程查看命令,用于报告当前系统的进程状态。直接输入ps便可查看,ps还有许多功能,比较常用选项:
BSD风格
a——和终端有关的进程
x——和终端无关的进程
u——显示进程的执行者
sys V风格
-e——查看所有进程
-l——long,长格式
-f——full,详细信息
-o——指定输出格式
常用命令
ps #查看隶属于自己的进程

ps -l(ps -u)#仅查看隶属于自己进程的详细信息

更多课参考https://blog.csdn.net/wsxxdwwzjdy/article/details/78507698

2.top

top是一个交互式系统性能监控工具,不同于ps是静态的结果输出,top可以实时动态地查看系统的整体运行情况。 通过top命令所提供的互动式界面,用热键可以管理。

top
root@iZbp1b7wzhw2hhqiixdpdwZ:~# top
top - 14:18:35 up 47 days,  5:52,  2 users,  load average: 0.05, 0.04, 0.03
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.2 us,  1.3 sy,  0.0 ni, 97.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1685.0 total,    106.1 free,    825.2 used,    753.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    669.3 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                       
 151564 root      20   0  152440  49640  15964 S   2.7   2.9  91:24.79 AliYunDunMonito                                                                                                                               
1046361 root      20   0   17736  11744   8768 S   0.7   0.7   0:20.08 sshd                                                                                                                                          
 142832 mysql     20   0 1829228 424524  26552 S   0.3  24.6  65:38.52 mysqld                                                                                                                                        
 151520 root      20   0   32156   5568   4736 S   0.3   0.3   6:58.47 AliYunDunUpdate                                                                                                                               
 151553 root      20   0   88396  14644  12188 S   0.3   0.8  46:37.63 AliYunDun                                                                                                                                     
1046569 root      20   0   11528   4864   3108 S   0.3   0.3   0:04.75 top                                                                                                                                           
1058470 root      20   0 2971564 176016  28496 S   0.3  10.2   0:12.59 java                                                                                                                                          
      1 root      20   0  102108  11168   6324 S   0.0   0.6   8:30.80 systemd                                                                                                                                       
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.35 kthreadd                                                                                                                                      
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp                                                                                                                                        
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp                                                                                                                                    
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 slub_flushwq                                                                                                                                  
      6 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns                                                                                                                                         
      8 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri                                                                                                                   
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq                                                                                                                                  
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_                                                                                                                               
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace                                                                                                                               
     13 root      20   0       0      0      0 S   0.0   0.0   0:27.95 ksoftirqd/0                                                                                                                                   
     14 root      20   0       0      0      0 I   0.0   0.0  10:10.26 rcu_sched                                                                                                                                     
     15 root      rt   0       0      0      0 S   0.0   0.0   0:10.50 migration/0                                                                                                                                   
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0                                                                                                                                 
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0                                                                                                                                       
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1                                                                                                                                       
     20 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/1                                                                                                                                 
     21 root      rt   0       0      0      0 S   0.0   0.0   0:10.03 migration/1                                                                                                                                   
     22 root      20   0       0      0      0 S   0.0   0.0   0:25.00 ksoftirqd/1                                                                                                                                   
     24 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri                                                                                                                   
     25 root      20   0       0      0      0 S   0.0   0.0   0:00.00 kdevtmpfs                                                                                                                                     
     26 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 inet_fra
top - 14:20:53 up 47 days,  5:54,  2 users,  load average: 0.00, 0.02, 0.02
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  1.5 sy,  0.0 ni, 97.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1685.0 total,    103.8 free,    827.4 used,    753.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.    667.0 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                       
1058470 root      20   0 2971564 176756  28496 S   0.0  10.2   0:12.74 java  

五.结束后台运行程序

结束后台运行的程序可以通过以下方法来实现:

  1. 使用 ps 命令查找程序的进程号(PID):

    ps aux | grep <程序名称>
    

    通过上述命令可以找到程序的 PID。

  2. 使用 kill 命令结束程序:

    kill <PID>
    

    或者使用强制结束的方式:

    kill -9 <PID>
    

    使用以上命令可以向指定的进程发送信号,终止程序的运行。常用的信号包括:

    • 15(SIGTERM):这是默认的终止信号,程序可以捕获并进行清理操作。
    • 9(SIGKILL):这个信号会立即终止进程,进程无法捕获并处理该信号。

另外,如果程序是后台运行的,并且你是通过 nohup 的方式运行的,也可以直接使用 killall 命令结束程序:

killall <程序名称>

需要注意的是,在使用 killkillall 命令结束程序时要小心,确保你终止的是正确的进程,避免误操作导致数据丢失或系统异常。

参考文章