ubantu操作命令行

  • Post author:
  • Post category:其他




ubantu关闭了命令行窗口后,让脚本继续运行

在Ubuntu系统中,可以使用nohup命令让脚本在后台运行,并且不被关闭命令行窗口的操作影响。具体实现步骤如下:

  1. 打开终端,执行以下命令:

    nohup ./your_script.sh > /dev/null 2>&1 &
    

    在这个命令中,nohup命令用于在后台运行指定的脚本,

    ./your_script.sh

    为需要运行的脚本路径,

    > /dev/null 2>&1

    用于将脚本的输出重定向到空设备,从而避免在关闭命令行窗口时出现错误提示信息。最后的&表示在后台运行该命令。

  2. 执行命令后,脚本会在后台运行,即使关闭了命令行窗口,脚本也会继续执行。如果需要查看脚本的输出信息,可以使用以下命令:

    tail -f nohup.out
    

    在这个命令中,

    tail命令

    用于查看文件末尾的若干行内容,-f参数表示实时刷新显示文件的最新内容,

    nohup.out

    为脚本输出的日志文件,默认情况下会在当前目录下生成。执行命令后,终端会实时显示脚本的输出信息,直到手动终止该命令。



查看当前进程

ps -ef



查看指定后缀执行文件的进程


.py

是指python文件,如果需要查看指定的文件是否在运行,则把文件名加上

ps -ef | grep .py

执行后输出如下,出现

python3 main-run.py

表示该程序正在运行

root         801       1  0 09:46 ?        00:00:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root        2460       1  0 10:05 pts/0    00:00:00 python3 main-run.py
root        3111    2949  0 10:22 pts/1    00:00:00 grep --color=auto .py



查看指定字段文件的进程ID


auto

是指查询文件名包含

auto

这个字符串的进程ID,直接返回进程ID,

pgrep -f auto



结束进程

  1. 如果是当前窗口正在运行的进程,直接

    Ctrl+C

    即可结束杀死该进程
  2. 如果是已经在后台运行的,只能通过

    进程ID

    来结束

    比如某个

    进程ID



    2460

    ,执行以下命令即可。

    -9

    是横杆加数字九,后面跟着进程ID,正常执行后没有任何返回值

    kill -9 2460
    



执行

python

程序

python3 test.py



执行

nodejs

程序

node test.js



自动重启进程


  1. program_path

    是控制目标进程的文件路劲

  2. nohup python3 $program_path > /dev/null 2>&1 & # 重启Python程序

    控制执行

    shell命令

#!/bin/bash
program_path="main-run.py"  # 指定需要重启的程序路径

process_num=$(ps -ef | grep "$program_path" | grep -v grep | wc -l)  # 检查程序是否在运行
if [ "$process_num" -eq 0 ]
then
    flag=1
else
    flag=0
fi
while true
do
    process_num=$(ps -ef | grep "$program_path" | grep -v grep | wc -l)  # 检查程序是否在运行
    if [ "$process_num" -eq 0 ]
    then
        if [ $flag == 0 ]
        then
            count=0
        fi
        flag=1
        echo "程序未运行,正在重启...$((count*10)) S"
        nohup python3 $program_path > /dev/null 2>&1 &  # 重启Python程序
    else
        if [ $flag == 1 ]
        then
            count=0
        fi
        flag=0
        echo "程序正在运行...$((count*10)) S"
    fi
    count=$((count+1))
    sleep 10  # 等待10秒后再次检查程序状态
done

执行过程,中途被结束或者异常退出时会自动重启

root@hecs-235304:~/serverRoom/tcpServerSysterm-3routGateway# ./auto-run-tcpServer.sh 
程序正在运行...0 S
程序正在运行...10 S
程序正在运行...20 S
程序正在运行...30 S
程序正在运行...40 S
程序正在运行...50 S
程序正在运行...60 S
程序正在运行...70 S
程序未运行,正在重启...0 S
程序正在运行...0 S



监控自动重启js程序


www

是一个没有后缀的执行程序

 nodemon --watch . --ext www --exec 'forever restartall'



链接下载

wget [url]



版权声明:本文为dropLin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。