Skip to content
← 返回文件与文本处理列表
文件与文本处理任务与配置

命令与脚本:进程、服务与资源 · 管理前后台任务与结束进程至安排周期任务与记录日志 ​

返回分篇目录

管理前后台任务与结束进程 ​

jobs 查看当前 Shell 作业,bg/fg 切换前后台,disown/nohup 处理脱离终端;结束进程时区分 PID、名称匹配和图形窗口。

jobs · 显示当前会话中作业的状态 ​

更多信息:https://manned.org/jobs。

  • 显示所有作业的状态:
bash
jobs
  • 显示特定作业的状态:
bash
jobs %{{作业_id}}
  • 显示所有作业的状态和进程 ID:
bash
jobs -l
  • 显示所有作业的进程 ID:
bash
jobs -p

bg · 恢复被挂起的任务(如. 使用 <Ctrl z>),使它们在后台运行 ​

恢复被挂起的任务(如. 使用 <Ctrl z>),使它们在后台运行。 另请参阅:jobs, fg, disown。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-bg。

  • 恢复最近被挂起的任务,在后台运行:
bash
bg
  • 恢复特定的任务(使用 jobs -l 可以获取任务 ID)并在后台运行:
bash
bg %{{job_id}}

fg · 在前台运行作业 ​

另请参阅:jobs, bg, disown, %。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-fg。

  • 将最近暂停或正在后台运行的作业切换到前台:
bash
fg
  • 将指定作业切换到前台(运行 jobs 查找作业编号):
bash
fg %{{作业编号}}

disown · 允许子进程在其所属的 shell 结束后继续运行 ​

另请参阅:jobs。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-disown。

  • 解除当前作业与 shell 的关联:
bash
disown
  • 解除指定作业与 shell 的关联(运行 jobs 查找作业编号):
bash
disown %{{作业编号}}
  • 解除所有作业与 shell 的关联(仅限 Bash):
bash
disown -a
  • 保留作业(不解除关联),但标记为 shell 退出时不再接收 SIGHUP(仅限 Bash):
bash
disown -h %{{作业编号}}

nohup · 允许进程在终端关闭后继续运行 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/nohup-invocation.html。

  • 运行一个可在终端关闭后继续运行的进程:
bash
nohup {{命令}} {{参数1 参数2 ...}}
  • 在后台模式下启动 nohup:
bash
nohup {{命令}} {{参数1 参数2 ...}} &
  • 运行一个可在终端关闭后继续运行的 shell 脚本:
bash
nohup {{路径/到/脚本.sh}} &
  • 运行一个进程,并将输出写入指定文件:
bash
nohup {{命令}} {{参数1 参数2 ...}} > {{路径/到/输出文件}} &

kill · 向进程发送信号,通常用于停止进程 ​

除了 SIGKILL 和 SIGSTOP,所有信号都可以被进程拦截,以便进行正常退出。 更多信息:https://manned.org/kill.1posix。

  • 使用默认的 SIGTERM(终止)信号来结束一个程序:
bash
kill {{进程id}}
  • 列出可用的信号名称(使用时无需加 SIG 前缀):
bash
kill -l
  • 使用 SIGHUP(挂起)信号终止一个程序。许多守护进程接收到此信号后会重新加载而不是终止:
bash
kill {{[-1|-HUP]}} {{进程id}}
  • 使用 SIGINT(中断)信号终止一个程序。通常由用户按下 <Ctrl c> 发起:
bash
kill {{[-2|-INT]}} {{进程id}}
  • 向操作系统发送信号,立即终止一个程序(程序无机会捕获信号):
bash
kill {{[-9|-KILL]}} {{进程id}}
  • 向操作系统发送信号,暂停一个程序,直到收到 SIGCONT(继续)信号:
bash
kill -STOP {{进程id}}
  • 向指定进程组 PGID 内的进程发送 SIGUSR1(不是用户组 GID):
bash
kill -s USR1 -- -{{进程组id}}

pkill · 按名称向进程发送信号 ​

通常用于停止进程。 更多信息:https://manned.org/pkill。

  • 终止所有匹配指定名称的进程:
bash
pkill "{{进程名称}}"
  • 根据完整命令而不只是进程名称,终止所有匹配的进程:
bash
pkill {{[-f|--full]}} "{{命令名称}}"
  • 强制终止匹配的进程(该信号不能被捕获或忽略):
bash
pkill {{[-9|-SIGKILL]}} "{{进程名称}}"
  • 向匹配指定名称的进程发送 SIGUSR1 信号:
bash
pkill -SIGUSR1 "{{进程名称}}"
  • 终止主 firefox 进程来关闭浏览器:
bash
pkill {{[-o|--oldest]}} "{{firefox}}"

killall · 根据进程名称向所有实例发送终止信号(必须是精确的进程名称) ​

除了 SIGKILL 和 SIGSTOP,所有信号都可以被进程拦截,从而实现正常退出。 更多信息:https://manned.org/killall。

  • 使用默认的 SIGTERM(终止)信号结束进程:
bash
killall {{进程名称}}
  • 列出可用的信号名称(使用时无需加 SIG 前缀):
bash
killall {{[-l|--list]}}
  • 交互式地询问确认后再终止进程:
bash
killall {{[-i|--interactive]}} {{进程名称}}
  • 使用 SIGINT(中断)信号终止进程,与按下 <Ctrl c> 发送的信号相同:
bash
killall {{[-2|-SIGINT]}} {{进程名称}}
  • 强制杀死一个进程:
bash
killall {{[-9|-SIGKILL]}} {{进程名称}}

xkill · 在图形会话中以交互方式终止窗口 ​

另请参阅:kill, killall。 更多信息:https://www.x.org/releases/current/doc/man/man1/xkill.1.xhtml。

  • 按下鼠标左键时终止鼠标选择的窗口(按下任何其他鼠标按钮可取消):
bash
xkill
  • 按下任意鼠标按键时终止鼠标选择的窗口:
bash
xkill -button any
  • 终止具有特定 ID 的窗口(使用 xwininfo 获取有关窗口的信息):
bash
xkill -id {{id}}

ulimit · 获取和设置用户限制 ​

更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-ulimit。

  • 获取所有用户限制的属性:
bash
ulimit -a
  • 获取同时打开文件数量的硬限制:
bash
ulimit -H -n
  • 获取同时打开文件数量的软限制:
bash
ulimit -S -n
  • 设置每个用户的最大进程限制:
bash
ulimit -u 30
  • 显示帮助:
bash
help ulimit

安排周期任务与记录日志 ​

cron 提供调度服务,crontab 编辑任务表;logger 写入系统日志,w/who 查看登录用户活动。

cron · 一个系统任务计划程序,用于无人值守运行工作或任务 ​

提交、修改或删除 cron 任务条目的命令,是 crontab。

  • 查看管理 cron 条目的文档:

参见 crontab。

crontab · 为当前用户计划 cron 任务,按照时间间隔运行 ​

更多信息:https://manned.org/crontab。

  • 编辑当前用户的 crontab 文件:
bash
crontab -e
  • 为特定用户修改 crontab 文件:
bash
sudo crontab -e -u {{用户}}
  • 用指定文件的内容,覆盖当前的 crontab 文件:
bash
crontab {{路径/到/文件}}
  • 查看当前用户,现存的 cron 任务列表:
bash
crontab -l
  • 移除当前用户的所有 cron 任务:
bash
crontab -r
  • 每天 10:00 运行任务的示例(* 表示任意值):
bash
0 10 * * * {{要_运行的_命令}}
  • 每 10 分钟运行命令的 crontab 任务条目示例:
bash
*/10 * * * * {{要_运行的_命令}}
  • 每周五的 02:30 运行指定脚本的 crontab 任务条目示例:
bash
30 2 * * Fri /{{路径/到/脚本.sh}}

logger · 向系统日志增加记录 ​

更多信息:https://manned.org/logger.1p。

  • 向系统日志增加记录:
bash
logger {{消息内容}}

w · 显示已登录用户及其进程信息 ​

另请参阅:who, users。 更多信息:https://manned.org/w。

  • 显示所有当前已登录用户的信息:
bash
w
  • 显示指定用户的信息:
bash
w {{用户名}}
  • 显示已登录用户信息,但不显示标题行:
bash
w {{[-h|--no-header]}}
  • 显示信息时不包含登录时间、JCPU 和 PCPU 列:
bash
w {{[-s|--short]}}

who · 显示当前登录用户和相关信息(进程,启动时间) ​

另请参阅:users, w, whoami。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/who-invocation.html。

  • 显示用户名,终端线路,和所有当前登录会话的时间:
bash
who
  • 显示所有可用信息:
bash
who {{[-a|--all]}}
  • 显示所有可用信息,包含表格首部名称:
bash
who {{[-aH|--all --heading]}}

继续阅读