快乐的Linux命令行

备注

已完成的章节
1;2;3;4;5;6;7;8;9;10;
13;

11.进程

11.1 进程如何工作

内核进程-->init 进程(PID 为 1) -->/etc/rc.localxxx 脚本(系统服务脚本)

ps –报告当前进程快照

# 查看进程信息
ps -ef |grep java

# 查看进程的启动时间
ps -eo 'lstart,cmd,pid,ppid' | grep java

# 监控某个进程的状态变化
watch -n 1 'ps -p 1234 -o %cpu,%mem,etime'


[root@VM-0-12-centos ~]# cat test.sh
sleep 100
[root@VM-0-12-centos ~]# sh test.sh
^Z
[1]+  Stopped                 sh test.sh
[root@VM-0-12-centos ~]# jobs -l
[1]+ 31565 Stopped                 sh test.sh
[root@VM-0-12-centos ~]# bg %1
[1]+ sh test.sh &
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 31565 Running                 sh test.sh &
[root@VM-0-12-centos ~]# ps -p 31565 -o pid,%cpu,%mem,etime,cmd
  PID %CPU %MEM     ELAPSED CMD
31565  0.0  0.0       00:27 sh test.sh
[root@VM-0-12-centos ~]# 

top –显示任务

# 以 batch mode 显示前10 个进程信息
top -b -n 1 | head -17

# 自动刷新
watch -n 2 'top -b -n 1 | head -17'

top 是一个强大的系统监控工具,掌握以下技巧可提高效率:

  1. 按 PMT 快速排序,找出高 CPU、高内存, 高CPU 时间消耗进程
  2. 使用 top -b -n 1 结合 grep 进行自动化分析
  3. 配合 watch 进行定期监控,或结合 cron 记录日志。
  4. 隐藏空闲进程(i)或指定用户(u)查看特定进程

jobs –列出活跃的任务

bg – 让进程继续在后台运行。

fg –将后台进程恢复到前台运行

[root@VM-0-12-centos ~]# cat test.sh 
sleep 100
[root@VM-0-12-centos ~]# sh test.sh
^Z
[1]+  Stopped                 sh test.sh
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 15365 Stopped                 sh test.sh
[root@VM-0-12-centos ~]# bg %1
[1]+ sh test.sh &
[root@VM-0-12-centos ~]# jobs -l
[1]+ 15365 Running                 sh test.sh &
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# bg %1
-bash: bg: job 1 already in background
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# fg %1
sh test.sh
^C
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[root@VM-0-12-centos ~]# 

kill –给一个进程发送信号

常见信号:(kill -l)

信号 数值 作用
SIGHUP 1 终止进程并重新加载配置
SIGINT 2 终止进程(相当于 Ctrl+C)
SIGKILL 9 强制终止进程(不可捕获、不可忽略)
SIGTERM 15 终止进程(默认)
SIGSTOP 19 暂停进程(可恢复)
SIGCONT 18 恢复暂停的进程
# kill -0 检查进程是否存在
if kill -0 1234 2>/dev/null; then
    echo "进程 1234 存在"
else
    echo "进程 1234 不存在"
fi


# kill -9 1234

[root@VM-0-12-centos ~]# sh test.sh &
[1] 14561
[root@VM-0-12-centos ~]# ps -ef |grep test.sh
root     14561 13464  0 15:13 pts/1    00:00:00 sh test.sh
root     14590 13464  0 15:13 pts/1    00:00:00 grep --color=auto test.sh
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# kill -STOP 14561

[1]+  Stopped                 sh test.sh
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 14561 Stopped (signal)        sh test.sh
[root@VM-0-12-centos ~]# kill -CONT 14561
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 14561 Running                 sh test.sh &
[root@VM-0-12-centos ~]# kill -STOP 14561

[1]+  Stopped                 sh test.sh
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 14561 Stopped (signal)        sh test.sh
[root@VM-0-12-centos ~]# bg %1
[1]+ sh test.sh &
[root@VM-0-12-centos ~]# 
[root@VM-0-12-centos ~]# jobs -l
[1]+ 14561 Running                 sh test.sh &

killall –杀死指定名字的进程

killall -9 java

shutdown –关机或重启系统

# 现在立即关机
shutdown now

# 设置 5 分钟后关机
shutdown +5

# 22:00 关机
shutdown 22:00

# 立即重启
shutdown -r now

# 十分钟之后重启
shutdown -r +10

# 设置 23:00 重启
shutdown -r 23:00

# 如果已经设置了关机或重启任务,可以通过以下命令取消:
shutdown -c

# init 0: 关机

# init 6 :重启

在使用 Ctrl-c 的情况下,会发送一个叫做 INT(Interrupt, 中断)的信号;
当使用 Ctrl-z 时,则发送一个叫做 TSTP(Terminal Stop,终端停止)的信号。

12. Shell 环境

登录 Shell 与 非登录 Shell

类别 登录 Shell 非登录 Shell
触发方式 ssh user@host 直接运行 bash
su - username su username
TTY 登录 (Ctrl+Alt+F2) 运行 Shell 脚本 (./script.sh)
bash --login 终端内打开新 bash
配置文件 /etc/profile → ~/.bash_profile /etc/bashrc → ~/.bashrc
主要影响 影响全局环境变量,如 $PATH 影响交互式命令,如 alias
变量加载 export 变量影响所有子进程 仅影响当前 Shell

13. VI 简介

1. 基本模式

Vim 有三种主要模式:

  • 普通模式 (Normal Mode):用于导航和编辑。
  • 插入模式 (Insert Mode):用于编辑文本。
  • 命令模式 (Command Mode):用于执行命令。

默认情况下,Vim 启动时处于 普通模式


2. 在不同模式之间切换

  • 进入插入模式i(在光标前插入)
    I(在行首插入)
  • 退出插入模式Esc
  • 进入命令模式:(在普通模式下输入)
  • 进入可视模式v(按字符选择) 或 V(按行选择)

3. 基本导航命令

  • 移动光标
    • h:向左移动一个字符
    • j:向下移动一行
    • k:向上移动一行
    • l:向右移动一个字符
  • 跳到行首0
  • 跳到行尾$
  • 跳到文件开始gg
  • 跳到文件结尾G
  • 跳到第 N 行N(如:10 跳到第 10 行)
  • 跳到当前行的某个字符f<char>(如:fa 跳到当前行第一个 a 字符)
  • 跳到当前行的下一个字符t<char>(如:ta 跳到当前行第一个 a 字符之前)

4. 文本编辑命令

  • 删除字符x(删除光标所在字符)
  • 删除到行尾D
  • 删除到行首d0
  • 删除一行dd
  • 删除多行dN(删除从当前行到第 N 行)
  • 剪切选中的文本d(可视模式下)
  • 复制一行yy
  • 复制多行yN(复制当前行和以下的 N 行)
  • 粘贴p(粘贴到光标后) 或 P(粘贴到光标前)
  • 撤销u
  • 重做Ctrl + r
  • 替换字符r<char>(将光标所在字符替换为 <char>
  • 替换一个单词cw(替换当前光标处的单词)

5. 查找与替换

  • 查找文本/text(向下查找 text
  • 查找上一个文本?text(向上查找 text
  • 查找下一个匹配项n
  • 查找上一个匹配项N
  • 替换单个匹配项:s/old/new
  • 替换当前行的所有匹配项:s/old/new/g
  • 替换整个文件中的所有匹配项:%s/old/new/g
  • 替换并询问确认:%s/old/new/gcc 表示确认每次替换)

6. 可视模式

  • 按字符选择v(进入可视模式,按字符选择)
  • 按行选择V(进入可视模式,按行选择)
  • 块选择Ctrl + v(进入块选择模式)
  • 删除选中的文本d
  • 复制选中的文本y
  • 粘贴选中的文本p

7. 文件操作

  • 保存文件:w
  • 保存并退出:wqZZ
  • 退出不保存:q!
  • 只读模式下退出:q
  • 另存为:w filename
  • 打开新文件:e filename
  • 关闭文件:bd(删除当前缓冲区)

8. 窗口管理

  • 水平分割窗口:split:sp
  • 垂直分割窗口:vsplit:vs
  • 切换窗口Ctrl + w 然后按 h/j/k/l(向左/下/上/右切换)
  • 关闭窗口:q

9. 配置与设置

  • 显示行号:set number:set nu
  • 关闭行号:set nonumber:set nonu
  • 高亮搜索结果:set hlsearch
  • 关闭搜索高亮:set nohlsearch
  • 启用自动换行:set wrap
  • 禁用自动换行:set nowrap
  • 启用行尾空格显示:set list
  • 禁用行尾空格显示:set nolist

10. 撤销与重做

  • 撤销u
  • 重做Ctrl + r
  • 撤销多个操作u(多次按 u 可撤销多个操作)
  • 恢复已删除的文本p

11. 其他有用的命令

  • 保存并退出:wqZZ
  • 跳转到文件顶部gg
  • 跳转到文件底部G
  • 查看帮助文档:help
  • 查找命令的帮助文档:help <command>(如 :help :wq

12. 快捷键总结

快捷键 描述
i 进入插入模式(在光标前)
I 进入插入模式(行首)
a 进入插入模式(光标后)
A 进入插入模式(行尾)
Esc 退出插入模式
yy 复制当前行
dd 删除当前行
p 粘贴剪贴板内容
u 撤销上一个操作
Ctrl + r 重做上一个操作
/ 查找文本(向下)
? 查找文本(向上)
n 查找下一个匹配
N 查找上一个匹配
:w 保存文件
:q 退出 Vim
:wq 保存并退出
:q! 强制退出不保存

总结

Vim 是一个非常强大的文本编辑器,具有丰富的命令和模式。掌握了上述命令,你可以更加高效地编辑和管理文件。在 Vim 中练习和熟悉命令可以大大提高你的工作效率。

14. 自定制 Shell 提示符

15. 软件包管理

## 安装 rpm 包
rpm -iVh *.rpm --force

## 升级 rpm 包
rpm -Uvh *.rpm --nodeps

## 卸载 
rpm -e git --force

## 解压 rpm 包
rpm2cpio *.rpm | cpio -idmv 

## 查看哪个软件包安装了/usr/bin/vim 这个文件
rpm -qf /usr/bin/vim

16. 存储媒介

posted @   岳麓丹枫  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2017-02-28 解决 vi/vim 中粘贴会在行首多很多缩进和空格的问题
2017-02-28 电子书网站集
2017-02-28 程序员必备的网站收藏
2017-02-28 好用的工具
点击右上角即可分享
微信分享提示