Linux基础(三)
一、进程
1.什么是进程 : 是程序的具体实现,执行程序的具体过程
2.操作系统与进程 : 操作系统的一个重要功能就是为进程提供方便,比如启动进程,为进程分配内存空间,管理进程的相关信息等等
3.linux启动的第一个进程 pidof init
4.查看进程 ps(process status):将某个时间点的程序运作情况截取下来
选项和参数:
a:和输入终端关联的所有process,通常与x一起使用,列出完整信息
x:后台进程,通常与a这个参数一起使用,可列出较完整信息
u:有效使用者相关的process
常用组合
ps aux 观察系统所有的程序数据
ps -lA 也是能够观察所有系统的数据
ps axjf 连同部分程序树状态
以上可以通过man ps 查看 仅查看自己的bash相关的进程
ps -l 查看进程 ps -aux|head -4 显示进程前四行内容
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:该process属于哪个使用者
PID:该process的程序标示符
%CPU 该process使用掉的CPU资源百分比
%MEN 该process 所占用的物理内存百分比
VSZ 该process使用掉的虚拟内存量(Kbytes)
RSS 该process占用的物理的内存量(Kbytes)
TTY 该process是在哪个终端机上面运作,若与终端机无关则显示?,
另外tty1-tty6是本机上面的登入者程序,若为 pts/0等等的,则表示为由网络连接进主机的程序
STAT 该进程目前的状态,状态显示与ps -l的S旗标相同(R/S/D/T/Z)
START 该进程被触发启动的时间
TIME 该process实际使用CPU运作的时间
COMMAND 该程序的实际命令为
5.linux进程状态
R(TASK_RUNNING) 指正在被CPU运行或者就绪的状态(在run_queue队列里的状态)
S(TASK_INTERRUPTIBLE),可中断的睡眠状态;处于等待状态中的进程,一旦被该进程等待的资源被释放,那么该进程就会进入运行状态
D(TASK_UNINTERRUPTIBLE),不可中断的睡眠状态,该状态的进程只能用wake_up()函数唤醒
T(TASK_STOPPED or TASK_TRACED),当进程收到信号SIGSTOP,SIGTSTP,SIGTTIN或SIGTTOU时就会进入暂停状态可向其发送SIGCONT信号让进程转换到可运行状态
Z(TASK_DAED-EXIT_ZOMBIE)僵尸进程:当进程已经终止运行,但是父进程还没有询问其状态的情况,不可被kill,即不影响任务信号,无法用SIGKILL杀死。通常造成僵尸进程的原因是该进程应该已经执行完毕,或者是因故应该要终止,但该进程的父进程却无法完整的将子进程结束,而造成进程一直存在内存当中
如果发现在某个进程的CMD后面接上时,就代表该进程是僵尸进程
6.top:动态观察进程的变化
ps是截取一个时间点的进程状态,而top则可以持续观察进程运行的状态
选项与参数
-d 后面可以接秒数,就是整个程序画面更新的秒数,默认5秒
-b 以批次的方式执行top,还有更多的参数可以使用,通常会搭配数据流重导向来将批次的结果输出成为档案
-n 与-b搭配,意思是需要进行几次top的输出结果
-p 指定某些个PID来进行观察检测
top -d 2 指定2秒更新一次
top -b -n 5>a.log 批次方式进行5次输出结果并且写入到a.log文件中
top中执行过程当中可以使用的按键指令
? 显示在top当中可以输入的按键指令
P 以CPU的使用资源排序显示
M 以Memory的使用资源排序显示
N 以PID来排序
T 由该Process使用的CPU时间累积(TIME+)排序
k 给予某个PID后kill该进程
r 给予某个PID重新指定一个nice值
q 离开top软件的按键
9.进程管理
Kill发送信号(并不只是杀进程)
选项与参数
-l这个是L的小写,列出目前kill能够使用的信号(signal有哪些)
signal:向进程发送信号,指示其进行不同的操作,用man 7 signal可知
-15:以正常的程序方式终止一个进程
-9:立刻强制终止一个进程
-2:代表由键盘输入 [ctrl]-c同样的动作
-1:对于sshd这样的守护进程,重新读取一次参数的配置文件(类似reload),如果进程为非守护进程,默认为终止进程
9.1查看其中某个进程 ps aux|grep sshd
终止以某命令名称启动的全部进程 Killall -9 httpd 强制终止所有以httpd启动的进程
10.系统资源监控
10.1 free 观察内存使用情况
-b 直接输入free时,显示的单位是kbytes我们可以使用b(bytes),m(Mbytes),k(Kbytes)及g(Gbytes)来定义显示单位
-t 在输出的最终结果时,显示物理内存与swap的总量
Mem一行显示的是物理内存的量
Swap 虚拟内存的量
total是总量 used是已被使用的量 free则是剩余可用的量 shared 共享内存 buffers将写磁盘的内容 cached 已写磁盘或者已从磁盘读出的内容
10.2 uname 查阅系统与核心相关信息
-a 所有系统相关的信息,包括以下的数据都会被列出来
-s 系统内核名称
-r 内核版本
-m 本系统的硬件名称
-p cpu的类型 与-m类似 是显示的是cpu的类型
-I 硬件的平台
10.3 uptime 观察系统启动时间与工作负载
显示目前系统当前时间,已经开机多长时间,用户数以及1,5,15分钟的平均负载
10.4 netstat 网络监控
-a 将目前系统上所有的已经连接,监听,socket数据都列出来
-t 列出tcp网络包的信息
-u 列出udp网络包的信息
-n 以端口方式来显示
-l 列出目前正在监听的服务
-p 列出改网络服务的进程id
常用命令:netstat -atp 所有tcp协议的链接,并输出pid号,netstat -antp,netstat -lntp
二、任务管理
1. 概念
前台:可以控制与执行命令的bash环境称为前台进程
后台:在操纵系统中自动运行,你无法使用[ctrl]+c终止,可以使用bg/fg命令操作的任务,后台执行的任务不能接受终端的输入。
1,直接将命令放到后台执行 &
2.将目前的工作丢到后台暂停 [ctrl]+z
3.观察后台任务
jobs 查看当前工作状态
-l :除了列出 job number 与指令串之外,同时列出 PID 的号 码;
-r :仅列出正在后台 run 的任务;
-s :仅列出正在后台暂停 (stop) 的任务。
fg 1 将任务号为1的进程调到前台执行。+作用“表示当前的”,如果命令fg后面没有跟任务号,默 认将带+的进程调到前台执行。-表示+号对应的进程被调 前台后,“-”对应的进程立即变为“+”
bg 2 执行后台进程中任务号为2的进程。
4.脱机及注销后任务执行
nohup 可以让你在脱机或注销后(比如exit退出当前shell),还能
够让工作继续进行
nohup [命令与参数] 在当前终端前台执行
nohup [命令与参数] 在当前终端前台执行
三、vim
1.vim介绍
vim是一个类似vi的文本编辑器,不过在vi的基础上增加了很多新特性,vim被公认为类vi编辑器中最好用的一个。vim是vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编 程的功能丰富,在实际工作中被广泛使用。和Emacs并列称为类Unix系统用户最喜爱的编辑器。
2.vim三种模式
1.一般模式
以vim打开一个文件就直接进入一般模式(默认模式)
可以使用上下左右移动光标来移动,也可以使用删除字符或删除整行来处理文件内容,也可以使用复制、粘贴来处理文件数据。
2.编辑模式
在一般模式中可以删除、复制、粘贴等,但无法编辑文件内容。
按下i、I、o、O、a、A、r、R等任何一个字母后进入编辑模式。并在左下 方出现INSERT或REPLACE。该模式下可以输入文件内容。按下返回一般模式。
3.命令模式
在一般模式当中,输入:/?三个字符中的任何一个按钮,就可以将光标移动到最下面那一行。
在这个模式当中,可以提供查询、替换等功能。同时存盘、离开vi、显示行号等等命令都是在此模式进行。
3.一般模式快捷键
h或光标左移一个字符。如果是20h,表示左移20个字符。
j或 光标下移一个字符 同上
k或 光标上移一个字符 同上
l或 光标右移一个字符 同上
[Ctrl]+[f ]屏幕向下移动一页
[Ctrl]+[b]屏幕向上移动一页
0或[Home]移动到此行最前面字符处
$ 或[End]移到光标所在行的行尾
H 光标移到当前屏幕最上方行的第一个字符
M光标移到当前屏幕中间行的第一个字符
L光标移动到当前屏幕最下方行第一个字符
G移到此文件最后一行
nG移到第n行
gg相当于1G,即移到第一行
n[Enter]光标下移n行
/word向下查找单词“word”(!!)
?word向上查找单词“word”(!!)
n表示重复前一个查找操作
N与n相反(反向查找
2.一般模式替换
?/word1/word2/g 在当前行将word1替换成word2(!!)
:%s/word1/word2/g 在当前文件将word1替换成word2(!!)
:n1,n2s/word1/word2/g在n1到n2行查找word1替换成word2 (n1、n2为 数字)
:1,$ s/word1/word2/g从第一行到最后一行查找word1替换成word2
:1,$ s/word1/word2/gc同上,在替换前confirm是否替换。(!!!)
3.一般模式删除
x向后删除一个字符
nx向后删除n个字符(n为数字)
X向前删除一个字符
dd删除光标所在行(!!!)
ndd删除光标所在行以下n行(n为数字,包含当前行在内)
d1G删除光标所在行到第一行所有数据(包括所在的行)
dG删除光标所在行到最后一行(!!)
d$ 删除光标所在处到同行最后一个字符(!)
d0删除光标所在处到同行第一个字符。(!)
yy复制光标所在行(!!)
nyy复制光标所在向下n行(n为数字)
yG复制光标所在行到最后一行所有数据
y$复制光标所在处到同行最后一个字符
y0复制光标所在处到同行第一个字符
p将已复制的数据粘贴到光标所在下一行
P将已复制的数据粘贴到光标所在上一行
u复原前一个操作(类似于windows中的ctrl+z)!!!
4. 一般模式到编辑模式切换
i从光标所在处插入(!!!)
I从所在行第一个非空白字符处插入(!)
a从光标所在下一个字符处插入
A从光标所在行最后一个字符处插入
o在光标所在处下一行插入新的一行(!)
O在光标所在处上一行插入新的一行
r替换光标所在处字符一次
R一直替换光标所在处文字直到按下Esc(!!!)
5.命令模式快捷键
:w [filename] 另存为filename
:r [filename] 读取filename指定文件中的内容到光标所在的行。
:n1,n2 w [filename] 将n1到n2行另存为filename
:! command 临时切换到命令行模式下执行command命令。
例如 “:!ls /home”即可在vim当中查看/home下面以ls输出的文 件信息。
:wq 保存后离开
:q! 不保存离开
:set nu 显示行号
:set nonu 取消显示行号

被折叠的 条评论
为什么被折叠?



