系统监控和命令行环境

shell进程间信号:

Ctrl 引发的信号

  1. SIGINT (Interrupt Signal, Signal 2)

    • 触发方式: 用户按下 Ctrl + C
    • 功能: 通常用于中断并终止当前前台进程。例如,当你正在运行一个长时间运行的命令时,按下 Ctrl + C 会发送 SIGINT 信号,使得该进程终止。
  2. SIGQUIT (Quit Signal, Signal 3)

    • 触发方式: 用户按下 Ctrl + \
    • 功能: 类似于 SIGINT,但是 SIGQUIT 信号通常会让程序生成一个核心转储(core dump),并终止程序。这对于调试来说非常有用。
  3. SIGTSTP (Terminal Stop Signal, Signal 20)

    • 触发方式: 用户按下 Ctrl + Z
    • 功能: 让当前前台进程暂停(挂起),并将其放置到后台执行。之后可以通过 fgbg 命令恢复该进程。

常见的错误信号

  1. SIGSEGV (Segmentation Fault, Signal 11)

    • 触发方式: 进程访问了未分配的内存或试图写入一个只读的内存区域。
    • 功能: 通常会导致程序异常终止,并生成一个核心转储。
  2. SIGTERM (Termination Signal, Signal 15)

    • 触发方式: 由 kill 命令默认触发,例如 kill <PID>kill -TERM <PID>
    • 功能: 请求进程正常退出。进程可以捕获此信号并执行清理操作,但如果不处理这个信号,进程将被终止。
  3. SIGKILL (Kill Signal, Signal 9)

    • 触发方式: 由 kill -KILL <PID>kill -9 <PID> 触发。
    • 功能: 强制终止进程。该信号无法被捕获或忽略,进程会立即终止。
  4. SIGHUP (Hangup Signal, Signal 1)

    • 触发方式: 关闭终端或断开连接时触发,也可以手动通过 kill -SIGHUP <PID> 发送。
    • 功能: 通常用于通知进程,终端已经断开连接。许多守护进程会通过此信号重新加载配置文件。

进程执行停止命令:

1. kill

  • 功能: 发送信号给指定的进程,常用于终止进程。
  • 用法:
    • kill -TERM <PID>: 发送 SIGTERM 信号,用于优雅地终止进程。
    • kill -STOP <PID>: 发送 SIGSTOP 信号,暂停进程。
    • kill -SIGHUP <PID>: 发送 SIGHUP 信号,通常用于挂起进程。
    • kill -9 <PID>: 发送 SIGKILL 信号,强制终止进程。

2. bg

  • 功能: 将暂停的进程继续在后台执行。
  • 用法:
    • bg %1: 将编号为 1 的任务继续在后台执行。

3. fg

  • 功能: 将后台运行的进程调回前台。
  • 用法:
    • fg %1: 将编号为 1 的任务调回前台。

4. jobs

  • 功能: 列出当前 shell 会话中所有暂停或后台运行的任务。
  • 用法: 直接输入 jobs,显示任务编号和状态。

5. pgrep

  • 功能: 查找匹配指定条件的进程 ID。
  • 用法:
    • pgrep sleep: 查找名称为 sleep 的进程的 PID。

6. nohup

  • 功能: 运行一个进程,并使其忽略 SIGHUP 信号,这样当关闭终端时进程不会被终止。
  • 用法:
    • nohup sleep 2000 &: 在后台运行 sleep 2000,忽略挂起信号。

7.pkill 

  • 功能: 根据进程名称、用户、终端等条件,批量查找并终止符合条件的进程。

  • 用法:

    • pkill <process_name>: 根据进程名称终止所有符合条件的进程。
    • pkill -U <user_name>: 终止指定用户运行的所有进程。
    • pkill -f <pattern>: 使用模式匹配终止进程。

终端多路复用

tmux

  • 会话 - 每个会话都是一个独立的工作区,其中包含一个或多个窗口

    • tmux 开始一个新的会话
    • tmux new -s NAME 以指定名称开始一个新的会话
    • tmux ls 列出当前所有会话
    • 在 tmux 中输入 <C-b> d ,将当前会话分离
    • tmux a 重新连接最后一个会话。您也可以通过 -t 来指定具体的会话
    • tmux kill-session -t N 关闭当前会话N
  • 窗口 - 相当于编辑器或是浏览器中的标签页,从视觉上将一个会话分割为多个部分

    • <C-b> c 创建一个新的窗口,使用 <C-d> 关闭
    • <C-b> N 跳转到第 N 个窗口,注意每个窗口都是有编号的
    • <C-b> p 切换到前一个窗口
    • <C-b> n 切换到下一个窗口
    • <C-b> , 重命名当前窗口
    • <C-b> w 列出当前所有窗口
  • 面板 - 像 vim 中的分屏一样,面板使我们可以在一个屏幕里显示多个 shell

    • <C-b> " 水平分割
    • <C-b> % 垂直分割
    • <C-b> <方向> 切换到指定方向的面板,<方向> 指的是键盘上的方向键
    • <C-b> z 切换当前面板的缩放
    • <C-b> [ 开始往回卷动屏幕。您可以按下空格键来开始选择,回车键复制选中的部分
    • <C-b> <空格> 在不同的面板排布间切换
出现的问题:
问题1

linux在进入tmux(screen)模式下之后,发现是无法在终端使用鼠标滚轮进行上下翻页拉动的,无法查看上面的终端输出内容了

解决办法:
进入回滚模式(可以操作鼠标滚轮上下翻页):

    先按Ctrl+a键,然后释放,然后再按[键即可进入翻页模式。

切换回之前模式:

    Ctrl+c

配置文件

常见命令配置:

bash - ~/.bashrc, ~/.bash_profile
git - ~/.gitconfig
vim - ~/.vimrc 和 ~/.vim 目录
ssh - ~/.ssh/config
tmux - ~/.tmux.conf

可移植性:

if [[ "$(uname)" == "Linux" ]]; then {do_something}; fi

# 使用和 shell 相关的配置时先检查当前 shell 类型
if [[ "$SHELL" == "zsh" ]]; then {do_something}; fi

# 您也可以针对特定的设备进行配置
if [[ "$(hostname)" == "myServer" ]]; then {do_something}; fi

   远程连接:

ssh_agent
SSH密钥添加到ssh-agent
  1. 启动ssh-agent

    eval "$(ssh-agent -s)"
  2. 添加SSH私钥到ssh-agent

    ssh-add ~/.ssh/id_rsa

    要让 SSH 密钥长期有效并在每次启动时自动加载到 ssh-agent 中,您可以按照以下步骤操作:

    配置 ssh-agent 在启动时自动运行

    以确保每次启动 shell 时自动启动 ssh-agent 并加载密钥。

     添加以下代码段到~/.zshrc配置文件中:

    # 启动 ssh-agent
    eval "$(ssh-agent -s)"
    
    # 自动加载 SSH 密钥
    ssh-add -K ~/.ssh/id_ed25519
    

    然后:source ~/.zshrc  (输入对应的密码即可

请注意:

  1. -K 选项用于在 macOS 上保存密钥到系统的钥匙串中(适用于 macOS 的特性)。

  2. 如果您使用的是其他类型的密钥(例如 id_rsa),将文件路径替换为相应的密钥路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值