Linux常用命令(未完待续)

Linux中与进程相关的命令
执行一个程序或者命令就可以启动一个进程,进程启动时,操作系统就为其分配系统内唯一的进程ID(PID)
ps(process status):将某个时间点的程序运作情况截取下来
选项和参数
1. a:(all)(和输入终端(terminal) 关联的所有 process,通常与x一起使用,用与列出完整信息。
2. x: 后台进程,通常与a这个参数一起使用,可以列出较为完整的信息
3. u:有效使用者(effective user)相关的process
常用组合:
1. ps aux 观察系统所有的程序数据(常用),有的人也常这样写ps -aux,效果差不多。
2. ps axjf 可以用类似与树状的形式显示。
小提示:参数不用背,可以通过man ps 获者使用Linux命令大全查看
通过一下命令可以查看一个进程的id
1.pidof init  显示init进程的id号
2.ps a  显示所有的进程信息,如下:
PID TTY      STAT   TIME COMMAND
 1303 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2
 1305 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3
 1307 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4
 1312 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5
 1316 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6
 1394 tty1     Ss+    0:00 -bash
 2130 pts/1    Ss     0:00 -bash
 2330 pts/1    R+     0:00 ps a
3.ps aux|grep bash 显示进程名为bash的相关信息,如下:
root      1394  0.0  0.1 108332  1680 tty1     Ss+  08:39   0:00 -bash
root      2130  0.0  0.1 108336  1724 pts/1    Ss   14:43   0:00 -bash
root      2335  0.0  0.0 103248   808 pts/1    D+   19:11   0:00 grep bash
4.su - 用户名,该命令是切换用户的命令,例如:su - tom 切换到tom用户下,然后再次执行3的命令可以看到,如下:
root      1394  0.0  0.1 108332  1680 tty1     Ss+  08:39   0:00 -bash
root      2130  0.0  0.1 108336  1728 pts/1    Ss   14:43   0:00 -bash
tom       2337  0.1  0.1 108336  1780 pts/1    S    19:16   0:00 bash
tom       2351  0.0  0.0 103256   836 pts/1    S+   19:16   0:00 grep bash
注意:不同用户执行相同程序,注意其权限的不同
5.ps -l(注意:ps后面跟的是一个字母,不是数字1),该命令是仅查看自己的bash相关的进程,如下:
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  1926  1922  2  80   0 - 27084 wait   pts/1    00:00:00 bash
4 R     0  1945  1926  0  80   0 - 27034 -      pts/1    00:00:00 ps
6.ps aux 显示系统所有程序,由于比较多在这里作者就不一一列举了。而是使用ps aux | head -4 该命令可以显示系统程序前4行,如下:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  19356  1532 ?        Ss   09:07   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    09:07   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    09:07   0:00 [migration/0]
其中
    USER:该process属于那个使用者
PID:该process的程序标识符
%CPU:该process使用掉的CPU资源百分比
%MEM:该process所占用的物理内存百分比
VSZ:该process使用掉的虚拟内存量(Kbytes)
RSS:该process占用的物理内存量(Kbytes)
TTY:该process是在哪个终端机上运作的,若与终端机无关则显示问号(?)另外,tty1~tty6是本机上面的登入者程序,若为pts/0~pts/6等等其他的,则表示为由网络连接进主机的程序(pts表示虚拟终端,例如pts/1  pts/2等)
STAT:该进程目前的状态,状态显示与ps -l的S旗标相同(R/S/D/T/Z)
START:该process被触发启动的时间
COMMAND:该程序的实际命令为何?
7.Linux进程状态:
(1) D 不可中断Uninterruptible(usually IO)
(2) R 正在运行,或者在队列中的进程
(3) S 处于休眠状态
(4) T 停止或被追踪
(5) Z 僵尸进程
(6) W 进入内存交换(从内核2.6开始无效)
(7) X 死掉的进程
(8) < 高优先级
(9) N 低优先级
(10) s 包含子进程
(11) + 位于后台的进程组
8.ps是截取一个时间点的进程状态,而top则可以持续观察进程的运行状态,如下:
top - 04:37:32 up 19:29,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  78 total,   1 running,  77 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1012352k total,   212496k used,   799856k free,    40604k buffers
Swap:  2097144k total,        0k used,  2097144k free,    55720k cached
 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                     
    1 root      20   0 19356 1532 1228 S  0.0  0.2   0:01.12 init                         
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                     
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                  
    4 root      20   0     0    0    0 S  0.0  0.0   0:00.02 ksoftirqd/0                  
    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                  
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.17 watchdog/0                   
    7 root      20   0     0    0    0 S  0.0  0.0   0:32.09 events/0                     
    8 root      20   0     0    0    0 S  0.0  0.0   0:00.00 cgroup                       
    9 root      20   0     0    0    0 S  0.0  0.0   0:00.00 khelper                      
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 netns                        
当然在top命令后面也可以使用一些参数:
   -d:后面可以接秒数,就是整个程序画面更新的秒数,默认是5秒
   -b:以批次的方式执行top,还有更多的参数可以使用,通常会搭配数据流重导向来将批次的结果输出成为档案
   -n:(Number)与-b搭配,意义是需要进行几次的top的输出结果
   -p:指定某些个PID来进行观察检测而已
   例如:
    top -d 2  每隔两秒更新一次
    top -b    
    top -b -n 2   以批次的方式进行两次top结果的输出
    top -b -n 5 > a.log   以批次的方式进行五次top结果的输出(输出到a.log这个文件中)
    cat a.log(cat 仅用于查看,不具备编辑功能,vim是可以编辑内容的,vim是vi编译器的升级版,可以理解为是一个强大的三方插件)
    在top执行过程当中可以使用的按键指令:
    (1) ?:显示在top当中可以键入的按键指令
    (2) P:以CPU的使用资源排序显示
    (3) M:以Memory的使用资源排序显示
    (4) N:以PID来排序
    (5) T:由该Process使用的CPU时间累积(TIME+)排序
    (6) k:给予某个PID后kill该进程(内核2.6后失效)
    (7) q:离开top软件的按键
 通过使用top -d 2 动态查看进程,显示如下:
    top - 05:06:55 up 13 min,  1 user,  load average: 0.00, 0.06, 0.10
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.0%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   1012352k total,   299596k used,   712756k free,    19276k buffers
Swap:  2031608k total,        0k used,  2031608k free,   108536k cached
    第一行显示的信息:目前的时间,开机到目前为止所经过的时间 up 13min,已经登入系统的用户人数 1 user,系统在 1, 5, 15 分钟的平均工作负载 
 显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie) 
第三行显示CPU的整体负载 
第四行和第五行表示目前的物理内存与虚拟内存使用情况
每个process使用的资源情况 PID:每个process的ID;USER:该process所属的使用者;PR:Priority(优先级)的简写,程序的优先执行顺序,越小越早被执行;NI:Nice的简写,与Priority有关,也是越小越早被执行;%CPU:CPU的使用率;%MEM:内存的使用率;TIME+:CPU使用时间的累加;COMMAND:进程名称。
注意:top默认使用CPU使用率(%CPU)作为排序的重点,如果想要使用内存使用率排序,则可以按下M,若要恢复则按下P即可
9.通过pstree查看进程树,效果如下:
    init─┬─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─crond
     ├─cupsd
     ├─dbus-daemon───{dbus-daemon}
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─master─┬─pickup
     │        └─qmgr
     ├─6*[mingetty]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]
    pstree后面还可以使用下面的参数:
   -a        显示命令行参数
   -A        使用 ASCII 画线符
   -c        不压缩雷同的子树
   -h        高亮显示当前进程及其祖先
   -H 进程号 高亮显示 "进程号" 指定的进程当及其祖先
   -G        使用 VT100 划线符
   -l        不截断长行
   -n        输出按进程号排序
   -p        显示进程号;隐含 -c
   -u        显示用户名变换(属于root的程序不会显示)
   -U        使用 UTF-8 (Unicode) 划线符
   -V        显示版本信息
   -Z     显示 SELinux 安全环境
10.查看其中某个进程 ps aux | grep sshd 结果如下:
root      1157  0.0  0.1  66604  1188 ?        Ss   Jan13   0:00 /usr/sbin/sshd
root      2632  0.0  0.3 100348  4020 ?        Ss   06:35   0:00 sshd: root@pts/0 
root      3017  0.0  0.0 103256   808 pts/0    R+   14:24   0:00 grep sshd
11.重新加载并启动 kill -1 1157
12.通过ps aux | grep sshd 发现重启后的进程的PID发生了改变
13.观察内存(Memory)的使用情况:free 结果如下:
             total       used       free     shared    buffers     cached
Mem:       1012352     222128     790224          0      47660      57792
-/+ buffers/cache:     116676     895676
Swap:      2097144          0    2097144
注意:直接使用free时,显示的单位是bytes,我们可以使用b(bytes),k(Kbytes),m(Mbytes),g(Gbytes)来定义显示单位,对应参数分别是 -b,-k,-m,-g。
free -t:在输出的最终结果时,显示物理内存与swap的总量
free命令显示选项解析:
    Mem一行显示的是物理内存的量 
Swap,虚拟内存的量 
total是总量,used是已被使用的量,free则是剩余可用的量 
shared,共享内存 
buffers,将写磁盘的内容 
cached,已写磁盘或者已从磁盘读出的内容  
14.查阅系统与内核的相关信息:uname 结果如下
    Linux  如果单单使用uname命令,输出结果就是你当前的系统名,在这里我的是Linux
    当然也可以使用一些选项或者参数:
      -a:显示所有系统相关的信息,包括以下的数据都会被列出来
      -s:系统内核名称
      -r:内核版本
      -m:本系统的硬件名称,例如 i686或者x86_64等
      -p:CPU的类型,与-m类似,显示的是CPU的类型
      -i:硬件的平台(ix86)
15.观察系统启动时间与工作负载:uptime 结果如下
    15:14:15 up 1 day,  6:06,  1 user,  load average: 0.00, 0.00, 0.00
显示目前系统当前时间,已经开机多长时间,用户数,以及1,5,15分钟的平均负载
16.网络监控:netstat 结果如下
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 192.168.253.131:ssh         192.168.253.1:50416         ESTABLISHED 
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ]         DGRAM                    9108   @/org/kernel/udev/udevd
unix  2      [ ]         DGRAM                    11844  @/org/freedesktop/hal/udev_event
unix  9      [ ]         DGRAM                    11449  /dev/log
unix  2      [ ]         DGRAM                    21276  
unix  2      [ ]         DGRAM                    18749  
unix  2      [ ]         DGRAM                    12552  
unix  2      [ ]         DGRAM                    12524  
unix  2      [ ]         DGRAM                    12475  
unix  3      [ ]         STREAM     CONNECTED     12452  
unix  3      [ ]         STREAM     CONNECTED     12451  
netstat命令后面也可以跟参数,参数有:
    -a:将目前系统上所有的已经连接,监听,Socket数据都列出来
    -t:列出TCP网络包的信息
    -u:列出UDP网络包的信息
    -n:以端口(prot number)方式来显示(不以程序的服务名称)
    -l:列出目前正在监听(listen)的服务
    -p:列出该网络服务的进程ID(PID)
netstat常用的命令:
    netstat -atp  所有TCP协议的链接,并输出PID号
    netstat -antp 还有 netstat -lntp
netstat命令选项显示解析
    Proto :网络的封包协议,主要分为TCP与UDP封包; 
Recv-Q:接收消息缓存区,远端进程发送而来,尚未被当前进程处理的信息数,单位:字节; 
Send-Q:发送消息缓存区,向远端进程发送,尚未被其接收的消息数,单位:字节;     
Local Address:本端网络地址(IP:port); 
Foreign Address:与当前进程进行通信的远程进程的网络地址(IP:port)(远程通信主机); 
State :网络连接状态,主要有建立(ESTABLISED)及监听(LISTEN); 
PID/Program name:显示 此服务的PID号码以及程序的命令名称,目前系统上已在监听的网络链接以及PID
补充:防火墙的启动,状态查看,关闭!!
service iptables start  开启防火墙的命令
service iptables status  查看防火墙的状态信息
service iptables stop  关闭防火墙的命令
service iptables restart  重启防火墙的命令
以上状态的修改,在服务器重启前生效。
如果想要永久关闭可以使用: chkconfig iptables off
永久开启使用:chkconfig iptables on
这两个命令执行完,需要重启服务器才能生效
17.侦测系统资源变化,CPU/内存/磁盘输入输出状态:vmstat
    动态的了解一下系统资源的运作,CPU/内存/磁盘输入输出状态 
选项与参数:
-a :使用 inactive/active(活跃与否)取代 buffer/cache 的内存输出信息; 
-f :开机到目前为止,系统复制 (fork)的进程数; 
-s :将一些事件 (开机至目前为止)导致的内存变化情况列表说明; 
-S :后面可以接单位,让显示的数据有单位。例如K/M 取代bytes 的容量 ; 
-d :列出磁盘的读写总量统计表 
-p :后面列出磁盘分区,可显示该磁盘分区的读写总量统计 
   例如:vmstat 1 4 统计CPU状态,每秒一次,共计四次,结果如下
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 858912   9532  45656    0    0   233     8   72   85  1  3 94  2  0
 0  0      0 858896   9532  45668    0    0     0     0   11   10  0  0 100  0  0
 0  0      0 858896   9532  45668    0    0     0     0   15   16  0  0 100  0  0
 0  0      0 858896   9532  45668    0    0     0     0   13   12  0  0 100  0  0
vmstat命令选项解析
   procs(进程字段) 
     r :等待运行的进程数量;b:不可被唤醒的进程数量 
这两个项目越多,代表系统越忙碌 (因为系统太忙,所以很多进程就无法被执行或一直在等待而无法被唤醒) 
   memory(内存字段)
     swpd:虚拟内存被使用的容量; free:未被使用的内存容量; buff/cache:用于缓冲的内存; 
   swap(交换分区字段)
     si:每秒从交换分区写到内存的数据量大小,由磁盘->内存; 
     so:每秒写入交换分区的内存数据量大小,由内存->磁盘。
如果si/so的数值太大,表示内存内的数据常常得在磁盘与主存储器之间传来传去,系统效能会很差 
io(磁盘读写字段)
bi:从块设备读入数据的总量(读磁盘)(每秒kb) 
     bo:块设备写入数据的总量(写磁盘)(每秒kb)
如果这部份的值越高,代表系统的I/O非常忙碌
system(系统字段)
in:每秒被中断的进程次数; 
     cs:每秒钟进行的事件切换次数。 
    这两个数值越大,代表系统与接口设备的通信非常频繁
CPU(cpu字段) 
us:(user)非内核态的(用户进程) CPU 使用情况; 
     sy:(system)内核态所使用(系统进程)的 CPU 情况; 
     id: (idle)闲置的CPU情况; 
     wa: (wait)等待I/O所耗费的CPU; 
     st:被虚拟机(virtual machine)所盗用的CPU(2.6.11 以后才支持)
18.Linux的任务管理
前台:可以控制与执行命令的bash环境称为前台进程
后台:在操作系统中自行运行,你无法使用ctrl键+c终止,可以使用bg/fg命令操作的任务;可以通过jobs命令查看后台执行的任务(非系统进程)
-可以通过ctrl键+z将前台执行的任务放置到后台
在当前bash执行多个任务
比如:cp file1 file2 & 
    重点在以上的这个“&”符号,他表示将file1这个文件复制为file2,同时将这个拷贝进程放到后台执行。 
    也就是说执行这一个命令之后,在这一个终端仍然可以做其他的工作。拷贝任务执行完成后,系统将会在终端显示完成的消息。 
举例来说,我们在登录bash后,想要一边复制文件、一边进行编译。那么就需要任务管理 。
    注意:Ctrl+z和&的区别
     Ctrl+z将前台程序放置到后台——状态为暂停。
     在执行的命令后面追加"&"——状态为后台运行。
    jobs 该命令用来查看当前工作状态,还可以使用相关参数
      -l :除了列出 job number与指令串之外,同时列出PID 的号码;  
 -r :仅列出正在后台 run 的任务;  
      -s :仅列出正在后台暂停 (stop) 的任务。
19.Vim命令介绍
    vim是一个类似vi的文本编辑器,不过在vi的基础上增加了很多新特性,vim被公认为类vi编辑器中最好用的一个。
    vim是vi发展出来的一个文本编辑器。编译及错误跳转等方便编程的功能丰富,在实际工作中被广泛使用。
    和Emacs并列称为类Unix系统用户最喜爱的编辑器。
    为什么要使用Vim呢?
      所有的Linux系统都会内建vi文本编辑器,其他的文本编辑器则不一定存在。
很多软件的编辑接口都会主动调用vi,例如visudo、crontab等
 vim可视为vi的高级版本。
 vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序开发。
20.vim的三种模式
   (1) 一般模式
       以vim打开一个文件就直接进入一般模式(默认模式)
       可以使用上下左右移动光标来移动,也可以使用删除字符或删除整行来处理文件内容,       也可以使用复制、粘贴来处理文件数据。但无法任意编辑文件内容。比如说:我想写一       个123。
   (2) 编辑模式
       在一般模式中可以删除、复制、粘贴等,按下i、I、o、O、a、A、r(快速替换)、R等       任何一个字母后进入编辑模式。并在左下方出现INSERT或REPLACE。
       该模式下可以输入文件内容。
    按下<Esc>返回一般模式。
   (3) 命令模式
       在一般模式当中,输入:/?三个字符中的任何一个按钮,就可以将光标移动到最下面那       一行。
       在这个模式当中,可以提供查询、替换等功能。同时存盘(保存)、离开vi、显示行号       等等命令都是在此模式进行。 
  vim快捷键的使用:
    (1) 一般模式快捷键的使用
        h或     光标左移一个字符。如果是20h,表示左移20个字符。
j或      光标下移一个字符   同上
k或      光标上移一个字符   同上
l或      光标右移一个字符   同上
[Ctrl]+[f]屏幕向下移动一页   Page Down
[Ctrl]+[b]屏幕向上移动一页  Page Up 
0或[Home]移动到此行最前面字符处
$或[End]移到光标所在行的行尾
H 光标移到当前屏幕最上方行的第一个字符
M光标移到当前屏幕中间行的第一个字符
L光标移动到当前屏幕最下方行第一个字符
G移到此文件最后一行
nG移到第n行
gg相当于1G,即移到第一行
n[Enter]光标下移n行
/word向下查找单词“word”
?word向上查找单词“word”
n表示重复前一个查找操作
N与n相反(反向查找)
:s/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
:%s/word1/word2/gc同上,在替换前确认是否替换。只能单行确认,需要逐步确认。
x向后删除一个字符
nx向后删除n个字符(n为数字)
X向前删除一个字符
dd删除光标所在行
ndd删除光标所在行以下n行(n为数字,包含当前行在内)
d1G删除光标所在行到第一行所有数据(包括所在的行)
dG删除光标所在行到最后一行
d$或d end删除光标所在处到同行最后一个字符
d0或d home删除光标所在处到同行第一个字符。
yy复制光标所在行
nyy复制光标所在向下n行(n为数字)
y1G复制光标所在行到第一行所有数据
yG复制光标所在行到最后一行所有数据
y$复制光标所在处到同行最后一个字符
y0复制光标所在处到同行第一个字符
p将已复制的数据粘贴到光标所在下一行
P将已复制的数据粘贴到光标所在上一行
u复原前一个操作(类似于windows中的ctrl+z)
    (2).编辑模式快捷键
        一般模式->编辑模式的转换
i从光标所在处插入
I从所在行第一个非空白字符处插入
a从光标所在下一个字符处插入
A从光标所在行最后一个字符处插入
o在光标所在处下一行插入新的一行
O在光标所在处上一行插入新的一行
r替换光标所在处字符一次
R一直替换光标所在处文字直到按下Esc
    (3).命令模式快捷键
        :w [filename]另存为filename
:r [filename] 读取filename指定文件中的内容到光标所在的行。
:n1,n2 w [filename] 将n1到n2行另存为filename
:! command 临时切换到命令行模式下执行command命令。 
    例如 “:!find / -name Helllo.java”即可在vim当中查看/home下面以ls输出的文件信息。
:wq  保存后离开
:q  不保存离开(未改可以离开,如果修改了需要q!强制离开)
:q!  不保存离开
:set nu 显示行号
:set nonu 取消显示行号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值