命令与脚本:进程、服务与资源 · 管理前后台任务与结束进程至安排周期任务与记录日志
管理前后台任务与结束进程
jobs 查看当前 Shell 作业,bg/fg 切换前后台,disown/nohup 处理脱离终端;结束进程时区分 PID、名称匹配和图形窗口。
jobs · 显示当前会话中作业的状态
更多信息:https://manned.org/jobs。
- 显示所有作业的状态:
jobs- 显示特定作业的状态:
jobs %{{作业_id}}- 显示所有作业的状态和进程 ID:
jobs -l- 显示所有作业的进程 ID:
jobs -pbg · 恢复被挂起的任务(如. 使用 <Ctrl z>),使它们在后台运行
恢复被挂起的任务(如. 使用
<Ctrl z>),使它们在后台运行。 另请参阅:jobs,fg,disown。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-bg。
- 恢复最近被挂起的任务,在后台运行:
bg- 恢复特定的任务(使用
jobs -l可以获取任务 ID)并在后台运行:
bg %{{job_id}}fg · 在前台运行作业
另请参阅:
jobs,bg,disown,%。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-fg。
- 将最近暂停或正在后台运行的作业切换到前台:
fg- 将指定作业切换到前台(运行
jobs查找作业编号):
fg %{{作业编号}}disown · 允许子进程在其所属的 shell 结束后继续运行
另请参阅:
jobs。 更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-disown。
- 解除当前作业与 shell 的关联:
disown- 解除指定作业与 shell 的关联(运行
jobs查找作业编号):
disown %{{作业编号}}- 解除所有作业与 shell 的关联(仅限 Bash):
disown -a- 保留作业(不解除关联),但标记为 shell 退出时不再接收 SIGHUP(仅限 Bash):
disown -h %{{作业编号}}nohup · 允许进程在终端关闭后继续运行
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/nohup-invocation.html。
- 运行一个可在终端关闭后继续运行的进程:
nohup {{命令}} {{参数1 参数2 ...}}- 在后台模式下启动
nohup:
nohup {{命令}} {{参数1 参数2 ...}} &- 运行一个可在终端关闭后继续运行的 shell 脚本:
nohup {{路径/到/脚本.sh}} &- 运行一个进程,并将输出写入指定文件:
nohup {{命令}} {{参数1 参数2 ...}} > {{路径/到/输出文件}} &kill · 向进程发送信号,通常用于停止进程
除了 SIGKILL 和 SIGSTOP,所有信号都可以被进程拦截,以便进行正常退出。 更多信息:https://manned.org/kill.1posix。
- 使用默认的 SIGTERM(终止)信号来结束一个程序:
kill {{进程id}}- 列出可用的信号名称(使用时无需加
SIG前缀):
kill -l- 使用 SIGHUP(挂起)信号终止一个程序。许多守护进程接收到此信号后会重新加载而不是终止:
kill {{[-1|-HUP]}} {{进程id}}- 使用 SIGINT(中断)信号终止一个程序。通常由用户按下
<Ctrl c>发起:
kill {{[-2|-INT]}} {{进程id}}- 向操作系统发送信号,立即终止一个程序(程序无机会捕获信号):
kill {{[-9|-KILL]}} {{进程id}}- 向操作系统发送信号,暂停一个程序,直到收到 SIGCONT(继续)信号:
kill -STOP {{进程id}}- 向指定进程组 PGID 内的进程发送 SIGUSR1(不是用户组 GID):
kill -s USR1 -- -{{进程组id}}pkill · 按名称向进程发送信号
通常用于停止进程。 更多信息:https://manned.org/pkill。
- 终止所有匹配指定名称的进程:
pkill "{{进程名称}}"- 根据完整命令而不只是进程名称,终止所有匹配的进程:
pkill {{[-f|--full]}} "{{命令名称}}"- 强制终止匹配的进程(该信号不能被捕获或忽略):
pkill {{[-9|-SIGKILL]}} "{{进程名称}}"- 向匹配指定名称的进程发送 SIGUSR1 信号:
pkill -SIGUSR1 "{{进程名称}}"- 终止主
firefox进程来关闭浏览器:
pkill {{[-o|--oldest]}} "{{firefox}}"killall · 根据进程名称向所有实例发送终止信号(必须是精确的进程名称)
除了 SIGKILL 和 SIGSTOP,所有信号都可以被进程拦截,从而实现正常退出。 更多信息:https://manned.org/killall。
- 使用默认的 SIGTERM(终止)信号结束进程:
killall {{进程名称}}- 列出可用的信号名称(使用时无需加
SIG前缀):
killall {{[-l|--list]}}- 交互式地询问确认后再终止进程:
killall {{[-i|--interactive]}} {{进程名称}}- 使用 SIGINT(中断)信号终止进程,与按下
<Ctrl c>发送的信号相同:
killall {{[-2|-SIGINT]}} {{进程名称}}- 强制杀死一个进程:
killall {{[-9|-SIGKILL]}} {{进程名称}}xkill · 在图形会话中以交互方式终止窗口
另请参阅:
kill,killall。 更多信息:https://www.x.org/releases/current/doc/man/man1/xkill.1.xhtml。
- 按下鼠标左键时终止鼠标选择的窗口(按下任何其他鼠标按钮可取消):
xkill- 按下任意鼠标按键时终止鼠标选择的窗口:
xkill -button any- 终止具有特定 ID 的窗口(使用
xwininfo获取有关窗口的信息):
xkill -id {{id}}ulimit · 获取和设置用户限制
更多信息:https://www.gnu.org/software/bash/manual/bash.html#index-ulimit。
- 获取所有用户限制的属性:
ulimit -a- 获取同时打开文件数量的硬限制:
ulimit -H -n- 获取同时打开文件数量的软限制:
ulimit -S -n- 设置每个用户的最大进程限制:
ulimit -u 30- 显示帮助:
help ulimit安排周期任务与记录日志
cron 提供调度服务,crontab 编辑任务表;logger 写入系统日志,w/who 查看登录用户活动。
cron · 一个系统任务计划程序,用于无人值守运行工作或任务
提交、修改或删除
cron任务条目的命令,是crontab。
- 查看管理
cron条目的文档:
参见 crontab。
crontab · 为当前用户计划 cron 任务,按照时间间隔运行
- 编辑当前用户的 crontab 文件:
crontab -e- 为特定用户修改 crontab 文件:
sudo crontab -e -u {{用户}}- 用指定文件的内容,覆盖当前的 crontab 文件:
crontab {{路径/到/文件}}- 查看当前用户,现存的 cron 任务列表:
crontab -l- 移除当前用户的所有 cron 任务:
crontab -r- 每天 10:00 运行任务的示例(* 表示任意值):
0 10 * * * {{要_运行的_命令}}- 每 10 分钟运行命令的 crontab 任务条目示例:
*/10 * * * * {{要_运行的_命令}}- 每周五的 02:30 运行指定脚本的 crontab 任务条目示例:
30 2 * * Fri /{{路径/到/脚本.sh}}logger · 向系统日志增加记录
- 向系统日志增加记录:
logger {{消息内容}}w · 显示已登录用户及其进程信息
另请参阅:
who,users。 更多信息:https://manned.org/w。
- 显示所有当前已登录用户的信息:
w- 显示指定用户的信息:
w {{用户名}}- 显示已登录用户信息,但不显示标题行:
w {{[-h|--no-header]}}- 显示信息时不包含登录时间、JCPU 和 PCPU 列:
w {{[-s|--short]}}who · 显示当前登录用户和相关信息(进程,启动时间)
另请参阅:
users,w,whoami。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/who-invocation.html。
- 显示用户名,终端线路,和所有当前登录会话的时间:
who- 显示所有可用信息:
who {{[-a|--all]}}- 显示所有可用信息,包含表格首部名称:
who {{[-aH|--all --heading]}}继续阅读
- 文件与文本处理完整实践与解答
- 文件与文本处理上手与对象
- 文件与文本处理任务与配置