拼搏何惧路途难, 汗水淋漓志未残。 砥砺前行心不改, 终能登顶笑开颜。
目录
一,vi编辑器
vi编辑器是效率很高的文本编辑器。它可以执行输出,删除,查找,替换,块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
1,命令模式
打开文件首先进入命令模式,是使用vi的入口
通过命令对文件进行常规的编辑操作,例如定位,翻页,复制,粘贴,删除
在其他图形编辑器下,通过快捷键或者鼠标实现的操作,都在命令模式下实现
2,末行模式
保存,退出等操作
要退出vi返回到控制台,需要在末行模式下输入命令
末行模式是vi的出口
3,编辑模式
正常的编辑文字
u 【撤销 恢复】
-------------------进入编辑模式start----------------------
i 【输入 ,光标不动】
I 【输入,光标前面】
a 【输入 ,光标退后一个】
A 【输入 ,光标到行末尾】
s 【输入 ,光标删除所在字符】
S 【输入 ,光标删除所在整行】
-------------------进入编辑模式end----------------------
:wq 【保存退出】
:q! 【强制退出,不保存】
h 【左】
j 【下】
k 【上】
l 【右】
5G 【跳转到多行】 【不常用】
gg 【第一行】
G 【最后一行】
:set number 【显示行号】
$ 【行尾】
0 【行首】
dw 【删除单词】
dd 【删除一行】
3dd 【删除三行】
yy 【复制一行】
dd 【剪切一行】
p 【刚刚yy、dd复杂/剪切的,粘贴到当前光标行】
P 【刚刚yy,dd复杂剪切的,粘贴到下一行】
/define【查找 define内容】
r + p 【把当前光标的字符替换成 p】
:s /printf/printxxx 【光标所在行,替换成printxxx】
1,6s /printf/printxxx/g 【1 ~ 6行 替换成printxxx,默认从第一行开始】
:%s /printf/printxxx/g 【整个代码,把所有的printf 替换 printxxx】
:vsp 【左右两个屏幕】
:sp 【上下两个屏幕】
ctrl + ww 【切换屏幕】
q 【退出当前屏幕】
wqall 【退出全部屏幕】
二,Linux进程启动的几种方式
手动启动进程指的是由用户输入命令直接启动一个进程,根据所启动的进程类型和性质的不同,其又可以细分为前台启动和后台启动2种方式。
2.1前台启动进程
这是手动启动进程最常用的方式,因为当用户输入一个命令并运行,就已经启动了一个进程,而且是一个前台的进程,此时系统其实已经处于一个多进程的状态。
查看进程:
(base) zhengguiliang 20:37:42 ~/yz
$ ps
PID TTY TIME CMD
802176 pts/2 00:00:00 bash
802771 pts/2 00:00:00 ps
将进程挂起,指的是将前台运行的进程放到后台,并且暂停其运行。
2.2后台启动进程
进程直接从后台运行,用的相对较少,除非该进程非常耗时,且用户也不着急需要其运行结果的时候。
从后台启动进程,其实就是在命令结尾处添加一个“& ”符号(注意,&前面有空格)。输入命令并运行之后,Shell会提供给我们一个数字,此数字就是该进程的进程号。然后直接就会出现提示符,用户就可以继续完成其他工作。
(qiime2-amplicon-2024.2) zhengguiliang 21:00:40 ~/yz
$ conda activate /share/Software/miniforge3/envs/qiime2-amplicon-2024.2 &
三,ps查看正在运行的进程
(qiime2-amplicon-2024.2) zhengguiliang 21:00:52 ~/yz
$ ps aux #查看系统中所有的进程,使用BS操作系统格式
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 239172 11716 ? Ss Jul03 2:06 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
root 2 0.0 0.0 0 0 ? S Jul03 0:19 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Jul03 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< Jul03 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< Jul03 0:00 [slub_flushwq]
root 7 0.0 0.0 0 0 ? I< Jul03 0:00 [kworker/0:0H-events_highpri]
root 9 0.0 0.0 0 0 ? I Jul03 0:00 [kworker/u256:0-netns]
root 11 0.0 0.0 0 0 ? I< Jul03 0:00 [mm_percpu_wq]
root 12 0.0 0.0 0 0 ? S Jul03 0:00 [rcu_tasks_rude_]
root 13 0.0 0.0 0 0 ? S Jul03 0:00 [rcu_tasks_trace]
root 14 0.0 0.0 0 0 ? S Jul03 0:00 [ksoftirqd/0]
root 15 0.0 0.0 0 0 ? I Jul03 14:38 [rcu_sched]
root 16 0.0 0.0 0 0 ? S Jul03 0:00 [migration/0]
root 17 0.0 0.0 0 0 ? S Jul03 0:00 [watchdog/0]
root 18 0.0 0.0 0 0 ? S Jul03 0:00 [cpuhp/0]
(qiime2-amplicon-2024.2) zhengguiliang 21:05:06 ~/yz
$ ps -le #查看系统种所有的进程 使用Linux标准命令格式
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 59793 - ? 00:02:06 systemd
1 S 0 2 0 0 80 0 - 0 - ? 00:00:19 kthreadd
1 I 0 3 2 0 60 -20 - 0 - ? 00:00:00 rcu_gp
1 I 0 4 2 0 60 -20 - 0 - ? 00:00:00 rcu_par_gp
1 I 0 5 2 0 60 -20 - 0 - ? 00:00:00 slub_flushwq
1 I 0 7 2 0 60 -20 - 0 - ? 00:00:00 kworker/0:0H-events_highpri
1 I 0 9 2 0 80 0 - 0 - ? 00:00:00 kworker/u256:0-netns
1 I 0 11 2 0 60 -20 - 0 - ? 00:00:00 mm_percpu_wq
1 S 0 12 2 0 80 0 - 0 - ? 00:00:00 rcu_tasks_rude_
1 S 0 13 2 0 80 0 - 0 - ? 00:00:00 rcu_tasks_trace
1 S 0 14 2 0 80 0 - 0 - ? 00:00:00 ksoftirqd/0
1 I 0 15 2 0 80 0 - 0 - ? 00:14:38 rcu_sched
1 S 0 16 2 0 -40 - - 0 - ? 00:00:00 migration/0
5 S 0 17 2 0 -40 - - 0 - ? 00:00:00 watchdog/0
1 S 0 18 2 0 80 0 - 0 - ? 00:00:00 cpuhp/0
1 S 0 19 2 0 80 0 - 0 - ? 00:00:00 cpuhp/1
5 S 0 20 2 0 -40 - - 0 - ? 00:00:01 watchdog/1
1 S 0 21 2 0 -40 - - 0 - ? 00:00:00 migration/1
四,实时监听正在运行的进程 top
ps命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行ps命令,这显然是缺乏效率地。
为此,Linux提供了top命令。top命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己地输出,进而更清除地了解进程的运行状态。
top -d 秒数: 指定top命令每隔几秒更新。默认是3秒
top -b :使用批处理模式输出。一般和-n选项合用,用于把top命令重定向到文件中
top -n 次数:指定top命令执行的次数。一般和-选项合用
top -p 进程PID:仅查看指定ID的进程
top -s :使top命令在安全模式中运行,避免在交互模式中出现错误
top -u 用户名:只监听某个用户的进程
在top命令的显示窗口中,还可以使用如下按键去,进行一下交互操作:
?或h:显示交互模式的帮助
P:按照CPU的使用频率排序,默认就是此选项
M:按照内存的使用率排序
N:按照PID排序
T:按照CPU的累积运算时间排序,也就是按照TIME+项排序
k:按照PID给予某个进程一个信号,一般用于中止某个进程,信号9是强制中止的信号
r:按照PID给某个进程重设优先级(Nice)值
q: 退出top命令
五,Linux查看进程数 pstree
pstree命令是以树形结构显示程序和进程之间的关系
其优点在于您可以立即找出某进程的父进程:当您想到终止整个进程系列而且其中存在了许许多多的下属分支进程,您只需要终止最上层的进程即可。
(qiime2-amplicon-2024.2) zhengguiliang 21:22:44 ~/yz
$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daemon
├─crond
├─cupsd
├─2*[dbus-daemon]
├─dbus-kill-proce───gio───2*[{gio}]
├─dnsmasq───dnsmasq
├─firewalld───2*[{firewalld}]
├─gssproxy───5*[{gssproxy}]
├─gvfsd───2*[{gvfsd}]
├─gvfsd-fuse───5*[{gvfsd-fuse}]
├─irqbalance───{irqbalance}
├─ksmtuned───sleep
├─lsmd
├─mysqld───96*[{mysqld}]
├─packagekitd───2*[{packagekitd}]
├─polkitd───11*[{polkitd}]
├─rpcbind
├─rserver───3*[{rserver}]
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─sshd─┬─sshd───sshd─┬─bash
│ │ └─sftp-server
│ ├─5*[sshd───sshd───sftp-server]
│ └─sshd───sshd───bash───pstree
├─systemd─┬─(sd-pam)
│ └─dbus-daemon
├─2*[systemd─┬─(sd-pam)]
│ ├─dbus-daemon]
│ └─pulseaudio───{pulseaudio}]
├─systemd-journal
├─systemd-logind
├─systemd-machine
├─systemd-udevd
├─tuned───3*[{tuned}]
└─vmtoolsd───{vmtoolsd}
如果提示pstree:command not found 则说明系统没有安装pstree,安装命令如下
yum install psmisc
需要注意的是,在使用pstree命令时,如果不指定进程的PID号,也不指定用户名称,则会以init进程为跟进程,显示系统中所有程序和进程的信息;反之,若指定PID号或用户名,则将以PID或指定命令为根进程,显示PID或用户对应的所有程序和进程。
六,Linux终止进程 kill
kill命令的执行原理是这样的,kill命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill [信号] PID
kill命令是按照PID来确定进程的,所以kill命令只能识别PID,而不能识别进程名。Linux定义了几十种不同类型的信号,可以使用kill -l命令查看所有信号及其编号,这里仅列出几个常用的信号:
注意:不要随便使用kill -9来强制结束进程。这会导致数据丢失
七,Linux将后台命令脱离终端运行 nohup
当我们以远程管理服务器的方式,在远程终端执行后台命令,如果在命令尚未执行完毕时就退出登录,那么这个后台命令还会继续执行吗?
当然不会,此命令的执行会被中断。
使用nohup命令,就是让后台工作在离开操作终端时,也能够正确地在后台执行。
nohup [命令] &
注意:这里的& 表示此命令会在终端后台工作,反之,如果没有&,则表示此命令会在终端前台工作。