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

系统监控和命令行环境

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.mrgr.cn/news/17436.html

相关文章:

  • Day90 代码随想录打卡|贪心算法篇---合并区间
  • SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))
  • linux head
  • 【Qt】工具栏
  • EventBus使用详解
  • 【Java】—— Java面向对象进阶:继承小练习-Java中实现圆柱体类及其体积计算
  • git中的分支是什么?分支有哪些好处?如何建立分支?
  • 由键盘输入一个两位数,将其个位数与十位数互换后变成一个新的数,输出这个数。
  • PHP学习
  • 周记-2024年第35周8.26~9.1:但求有功,不求无过
  • 战略设计(Strategic Design)
  • 【编程底层思考】多线程编程中哪些行为和操作会导致线程让出cpu
  • Jenkins配置使用LDAP的用户和密码登录
  • VastBase——VPatch版本控制
  • 花店鲜花管理与推荐系统+Python+Django网页界面+管理系统+计算机课设
  • J.U.C Review - 白话Java内存模型
  • 9.1写论文
  • OpenCV入门
  • 中国各地级市全要素生产率(TFP)数据(1978-2022年)
  • 推荐10个开源且实用的大模型