当前位置: 首页 > article >正文

系统监控和命令行环境

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),将文件路径替换为相应的密钥路径。

http://www.kler.cn/a/287173.html

相关文章:

  • linux之调度管理(9)-SMP cpu hotplug
  • 蓝桥杯第22场小白入门赛2~5题
  • Spring、SpringMVC、SpringBoot、Mybatis小结
  • 进程-系统性能和计划任务常用命令-下篇
  • 独立站干货:WordPress主机推荐
  • 常见网络厂商设备默认用户名/密码大全
  • python中**字典的含义
  • MATLAB下的粒子滤波例程|三维非线性模型|组合导航|PF代码(无需下载,直接复制到MATLAB上即可运行)
  • http的三次握手和四次挥手
  • 制造企业SRM系统中如何进行供应商的管理
  • 质量小议43 - 提效
  • 如何通过选择合适的编程工具来提升编程效率
  • 零基础5分钟上手亚马逊云科技-高可用负载均衡器
  • 浅谈SpringMvc的核心流程与组件
  • 零基础学习Redis(7) -- hash类型命令使用
  • 【区块链 + 司法存证】数据存证区块链服务开放平台 | FISCO BCOS应用案例
  • Qt详解QHostInfo
  • MindSearch CPU-only 版部署
  • 华为云征文|部署内容管理系统 Joomla
  • React 入门第八天:性能优化与开发者工具的使用
  • this.$nextTick() 是 Vue.js 提供的一个方法
  • A* 算法优化思路
  • Jiujiu-SaaS:开创Web3时代的IP电商新纪元
  • [MRCTF2020]pyFlag(详解附送多个python脚本)
  • Zookeeper 官方示例2-SyncPrimitive 代码解读(二)
  • 数据库(MySQL)的基本操作