nohup 和 & 后台运行,进程查看及终止

nohup 和 & 后台运行,进程查看及终止

William
2022-04-03 / 0 评论 / 28 阅读 / 正在检测是否收录...

nohup

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

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

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

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

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

退出状态:该命令返回下列出口值:

126 可以查找但不能调用 Command 参数指定的命令。

127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

&

用途:在后台运行

一般两个一起用 nohup command &

例子:

nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

查看运行的后台进程

jobs -l

jobs 命令只看当前终端生效的,关闭终端后,在另一个终端 jobs 已经无法看到后台跑得程序了,此时利用 ps(进程查看命令)

ps -ef

ps -aux|grep chat.js

a:显示所有程序

u:以用户为主的格式来显示

x:显示所有程序,不以终端机来区分

注:

ps -def | grep 查找进程很方便,最后一行总是会 grep 自己

grep -v 参数可以将 grep 命令排除掉

ps -aux | grep xxx | grep -v grep

aux 输出格式

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  • USER: 行程拥有者
  • PID: pid
  • %CPU: 占用的 CPU 使用率
  • %MEM: 占用的记忆体使用率
  • VSZ: 占用的虚拟记忆体大小
  • RSS: 占用的记忆体大小
  • TTY: 终端的次要装置号码 (minor device number of tty)
  • STAT: 该行程的状态:

    • D: 无法中断的休眠状态 (通常 IO 的进程)
    • R: 正在执行中
    • S: 静止状态
    • T: 暂停执行
    • Z: 不存在但暂时无法消除
    • W: 没有足够的记忆体分页可分配
    • <: 高优先序的行程
    • N: 低优先序的行程
    • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
  • START: 行程开始时间
  • TIME: 执行的时间
  • COMMAND:所执行的指令

再用 awk 提取一下 进程ID

ps -aux | grep chat.js | grep -v grep | awk '{print $2}'

后台日志输出到文件

关于如何将后台日志输出到文件,可看本博客前面发的文章:

Linux定时任务crontab将错误日志与正确输出写入到文件

如果某个进程起不来,可能是某个端口被占用

查看使用某端口的进程

lsof -i:8090

netstat -ap|grep 8090

查看到进程 id 之后,使用 netstat 命令查看其占用的端口

netstat -nap|grep 7779

终止后台运行的进程

kill -9  进程号

0

评论 (0)

取消