linux 常用扩展命令

目录

linux 常用扩展命令

1.Linux命令的分类

2.用户和组账户管理User Group

3.文件权限

4.find命令

5.grep命令 搜索文件中匹配符 

6.top 查看系统健康状态

7.进程命令

8.时间命令

9.中文语言环境

10.mail

11.系统中7种运行级别


linux 常用扩展命令

1.Linux命令的分类


    内部命令:
        属于Shell解析器的一部分,也称为内建(Built-IN)指令。
        内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指令也就自动载入内存了,用户可以直接使用。
        内部命令无需从硬盘中重新读取文件,因此执行效率更高。
        内部命令找不到命令所在路径。
        cd 切换目录
        pwd 显示当前工作目录
        help 帮助
        
    外部命令:
        指的是Linux系统中能够完成特定功能的脚本文件或二进制程序,每个外部命令对应了系统中的一个文件,是独立于Shell解析器之外的文件程序。
        Linux系统必须知道外部命令对应的文件位置,才能够由Shell加载并执行。
        可简单理解为,系统读取环境变量文件,去找Path路径,然后加载进内存中。
        ls 显示文件和目录列表
        mkdir 创建目录
        cp 复制文件或目录(copy)
        查看帮助文档
        内部命令:help + 命令(help cd)
        外部命令:man + 命令(man ls)
        
    type命令
        用来区分指定命令是由shell自带的,还是由shell外部的独立二进制文件提供的
        $ type cd
        系统会提示,cd是shell的自带命令(build-in)。
        $ type grep
        系统会提示,grep是一个外部命令,并显示该命令的路径。
        Linux系统默认会将存放外部命令、程序的目录(如/bin、/usr/bin、/usr/local/bin等)添加到用户的“搜索路径”中,
        当使用位于这些目录中的外部命令时,用户不需要指定具体的位置。
        因此:不用刻意去分辨内部、外部命令,其使用方法是基本类似的。

2.用户和组账户管理User Group


    用户管理简介
    linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。
    系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。
    对安全要求高的服务器,都需要建立合理的用户权限等级制度和服务器操作规范。
    在linux中主要是通过用户配置文件来查看和修改用户信息。
    
    配置文件
    •保存用户信息的文件:/etc/passwd
    •保存密码的文件:/etc/shadow
    •保存用户组的文件:/etc/group
    •保存用户组密码的文件:/etc/gshadow
    
    
    /etc/passwd格式
        共7个字段,示例数据为:
        root:x:0:0:root:/root:/bin/bash
        用户名:密码位:UID(用户标识号):GID(缺省组标识号):描述信息:宿主目录:命令解释器(使用的 shell,默认为bash)

            使用命令:man 5 passwd
            用户名:用户登陆系统的用户名
            密码:密码位
            UID:用户标识号
            GID:默认组ID
            描述信息:存放用户的描述信息
            宿主目录: 用户登陆系统的默认目录,普通用户默认是在/home/下
            命令解析器: 用户使用的Shell,默认是bash

        Linux用户分类
            超级用户:(root,UID=0)
            普通用户:(UID在500到60000)
            伪用户:(UID在1到499)
            伪用户:
            1、伪用户与系统和程序服务相关
                bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户
                mail、news、games、apache、ftp、mysql及sshd等,与Linux 系统的进程相关
            2、伪用户通常不需要或无法登录系统
            3、可以没有宿主目录

        用户组
            每个用户至少属于一个用户组
            每个用户组可以包含多个用户
            同一个用户组的用户享有该组共有的权限
            初始组和附加组
            初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
            初始组有且仅有一个,可以修改,但不建议修改。
            附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

    /etc/shadow格式
        共9个字段,示例数据为:
        root:$1$FAKb8T5g$3ni9CM7RlbrwWpDGfWP0:15439:0:99999:7:::
        用户名:加密密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:密码过期后宽限天数:失效时间:标志(保留字段)
        查看命令:man 5 shadow
        用户名: 登陆系统的用户名
        加密密码:如果密码位是!!或者*代表没有密码,不能登录
        (忘记密码,可在shadow下删除加密密码,不需密码就能登录,然后修改密码)
        最后一次修改时间:用户最后一次修改密码的天数,是从1970年1月1日开始计算的天数
        最小时间间隔:两次修改密码之间的最小天数
        最大时间间隔:密码保持有效的最多天数
        警告时间:从系统开始警告到密码失效的天数
        密码过期后宽限天数:0表示密码过期后立即失效,-1表示密码永远不会失效
        失效时间:密码失效的绝对天数(不用管有效期)
        标志:保留字段

    操作用户命令
        添加用户命令:useradd
        语法:useradd [选项] 用户名
        -u 指定组ID(uid)
        -g 指定所属的组名(gid)
        -G 指定多个组,用逗号“,”分开(Groups)
        -c 用户描述(comment)
        例子:
        useradd -u 888 -G sys,root -c "nvshen" yifei
        passwd yifei
        用户密码:生产环境中,用户密码长度8位以上,设置大小写加数字加特殊字符,要定期更换密码。
        ys^h_L9t
        
    修改密码命令  passwd
        语法:passwd [选项] [用户名]
        选项:
            -S    查询用户密码的密码状态。仅root用户可用 (即查看某一个用户的shadow记录)

    修改用户命令:usermod(user modify)
        -g 添加组 usermod -g sys tom   指定组必须存在
        -G 修改用户附加组 usermod -G sys,root tom
        
    删除用户命令:userdel(user delete)
        -r 删除账号时同时删除目录(remove)
        删除用户时,默认删除同名的组。
        如果用户所属组,被其他用户依赖,或者该用户使用了非同名组,则不删除该组,只删除该用户。
        
    id命令
        作用:查看指定用户的id和组id情况
        语法:id 用户名 
        eg:

    /etc/group格式
        共4个字段,数据格式为:
        root:x:0:root
        sys:x:3:root,bin,adm
        组名:组密码位:GID:组成员(组内所有用户列表)
        组名:用户所在的组
        组密码:密码位,一般不使用
        GID:主标示号
        组内用户列表: 属于该组的用户列表
        
    /etc/gshadow 文件格式
        共4个字段,数据格式为:
        root:::
        bin:::bin,daemon
        组名:组密码:组管理员用户名:组中附加用户
        
    操作用户组命令
        添加组:groupadd
        -g 指定gid
        修改组:groupmod
        -n 更改组名(new group)
        groupmod  -n new_gname old_gname
        
        删除组:groupdel
        如果要删除的组归属于某一个用户的所属组,则不能删除该组
        # useradd -g hadoop hdfs
        # groupdel hadoop
        
        groups
        显示用户所属组


3.文件权限


    文件权限查看命令:
        ls -l xxx.xxx (xxx.xxx是文件名)查看xxx文件的文件权限 
        ls -l xxx 文件夹   查看文件夹下所有文件的权限
        ls -l 可简写成 ll 
        示例:
        drwxr-xr-x.  2         root     root            45     Mar 29 07:47         input
        -rw-r--r--.  1         root     root      82586729     May  5 20:35         SparkTest-1.0-SNAPSHOT.jar
        文件权限  链接数 所属用户 所属用户组 文件大小      文件最后修改时间    文件名
        
        文件权限解释:
                    -                rw-            r--            r--
        【文件是-,文件夹是d】【owner权限】【group权限】【other权限】
        权限类型:
        r 读权限read          4
        w 写权限write         2
        x 操作权限execute   1
    
    修改权限命令
        chmod o+w xxx.xxx 表示给其他人授予写xxx.xxx这个文件写的权限
        chmod go-rw xxx.xxx 表示删除xxx.xxx中组群和其他人的读和写的权限
        chmod 764 xxx.xxx 修改文件权限为 owner 读写执行 group 读写 other读
      其中:
            u 代表所有者(user)
            g 代表所有者所在的组群(group)
            o 代表其他人,但不是u和g (other)
            a 代表全部的人,也就是包括u,g和o
            r 表示文件可以被读(read)
            w 表示文件可以被写(write)
            x 表示文件可以被执行(如果它是程序的话)
      其中:rwx也可以用数字来代替
            r ------------4
            w -----------2
            x ------------1
            - ------------0
      行动:
            + 表示添加权限
            - 表示删除权限
            = 表示使之成为唯一的权限
            
        修改文件夹权限:
        chmod 权限 /文件夹  只修改文件夹的权限
        chmod -R 权限 /文件夹  递归修改文件夹内所有文件的权限
        
        chmod u+x file                      给file的属主增加执行权限
        chmod 751 file                      给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
        chmod u=rwx,g=rx,o=x file      上例的另一种形式
        chmod =r file                     为所有用户分配读权限
        chmod 444 file                   同上例
        chmod a-wx,a+r   file          同上例
        chmod -R u+r directory           递归地给directory目录下所有文件和子目录的属主分配读的权限
        chmod 4755                            设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
            还可设置第四位,它位于三位权限序列的前面,第四位数字取值是4,2,1,代表意思如下:
            4,执行时设置用户ID,用于授权给基于文件属主的进程,而不是给创建此进程的用户。
            2,执行时设置用户组ID,用于授权给基于文件所在组的进程,而不是基于创建此进程的用户。
            1,设置粘着位。
        
        chown:改变文件属主
        chown user 文件           变更/设置文件/目录的所有者
        chown user:group 文件   变更/设置文件/目录的所有者/组
        chown :group 文件   变更/设置文件/目录的组

 

4.find命令

    find   查找文件或目录      find [搜索路径] [搜索关键字]
    find pathname -options [-print -exec -ok]
    pathname find命令所查找的目录路径。例如用 .来表示当前目录,用 /来表示系统根目录。
    -print find命令将匹配的文件输出到标准输出。
    -exec find 命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为 ' command' {} \;,注意{ }和\;之间的空格。 
    -ok 和- exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,
    在执行每一个命令之前,都会给出提示,让用户来确定是否执行

    find命令选项
        -name 按名称查找
            eg:find  /etc  -name  init 在目录/etc中查找文件init

        -iname  类似-name,不区分大小写
        eg:
        find /etc/ -name passwd.old
        find /etc/ -iname passwd.old
        /etc/passwd.OLD

        -size  按文件大小查找
            以block为单位,一个block是512B     +大于  -小于  不写是等于 
            eg:find /etc -size +204800  在etc目录下找出大于100MB的文件
                100MB=102400KB=204800block

        -user  按宿主用户查找
            eg:find  /  -user  sam  在根目录下查找所有者为sam的文件

        -perm  按权限查找 

        -type  按文件类型查找 
             f 二进制文件   l 软连接文件   d 目录   b 块设备文件   c  字符设备文件   p  管道文件  
        eg: find /dev -type c

        -inum  根据i节点查找
             适用场景:1,文件名怪异,比如文件名有空格,那么就使用 ls  -i  查找出该文件的i节点(此处为当前目录下),再使用 find .  -inum  文件i节点  -exec rm  {} \;        删除文件
            2,根据i节点查找文件的硬链接

        -group按文件所属组查找

        -nogroup  查找无有效所属组的文件,即该文件所属的组在 /etc/groups中不存在
        -nouser  查找无有效属主的文件,即该文件的属主在/etc/password中不存在
        -newer  file1 ! file2 查找更改时间比文件 file1新但比文件 file2旧的文件
        -size n[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计
        -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
        -fstype 查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件 /etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息
        -mount 在查找文件时不跨越文件系统mount点
        -follow 如果find命令遇到符号链接文件,就跟踪至链接所指向的文件
        -cpio 对匹配的文件使用 cpio命令,将这些文件备份到磁带设备中

        - prune 忽略某目录   如果-prune和-depth同时使用了,那么find命令就忽略-prune选项。
            eg:$ find /apps -name "/apps/bin" -prune -o -print  在 /apps目录下查找文件,但忽略 /apps/bin 目录

        -mtime  -n  +n  
            按最后一次修改时间查找,选取n天内被修改的文件 
            - n表示文件更改时间距现在 n天以内,+ n 表示文件更改时间距现在 n天以前
        -atime    按最后一次访问时间查找

    按时间查找:
        1,天  ctime,atime,mtime
        2,分钟 cmin,amin,mmin
        c-change改变 表示文件属性被修改过,所有者,所属组,权限
        a-access访问  cat,more,vi编辑过 
        m-modify修改 表示文件内容被修改过
        - 多长时间之内,+超过多长时间
        eg: find /etc  -cmin -5          在/etc 下查找5分钟内被修改过属性的文件和目录

        find查找中的字符匹配:
        *:匹配所有,?:匹配单个字符
        eg:find  /etc  -name  init???    在目录/etc中查找以init开头的,且后面有三位的文件
        find查找的基本原则:占用最少的系统资源


     连接符:
        -a   and   逻辑与    
        -o  or   逻辑或
         exec    用法:find  ....  -exec  命令 {} \;
         ok       用法:与exec相似,但是会询问是否删除 
        解释:{} 花括号是find查询的结果
                  \  转义符,符号命令使用本身
                  ;  结果

        -exec/-ok 对查找结果要执行的命令 {} \; 

        eg:find /etc -ctime -1

            在etc下查找24小时内被修改过属性的文件和目录

        eg:find /etc -size +163840 -a -size -204800

            在etc下查找大于80MB小于100MB的文件

        eg: find /etc -name initab -exec ls -l {} \;

            在/etc下查找initab文件并显示其详细信息

        eg: find /home -user union -exec rm -rf {} \;

            查找/home 目录下,所属者为union的文件,并直接删除 
            

5.grep命令 搜索文件中匹配符 

    grep   在文件中搜寻字串匹配的行并输出   eg:grep ftp  /etc/services 

    grep [-acinv] [--color=auto] '搜寻字符串' filename
        选项与参数:
        -a :将 binary 文件以 text 文件的方式搜寻数据
        -c :输出匹配行的次数(是以行为单位,不是以出现次数为单位)
        -i :忽略大小写,所以大小写视为相同
        -n :显示匹配行及行号
        -v :反向选择,显示不包含匹配文本的所有行。
        -h : 查询多文件时不显示文件名。
        -s : 不显示不存在或无匹配文本的错误信息。
        --color=auto :可以将找到的关键词部分加上颜色的显示

        eg: 查看文件时去掉#号。 
        hostname#grep -v "#"  /etc/samba/smb.conf  
        hostname#grep -v "#"  /etc/samba/smb.conf   |  grep -v  ";"

        eg:ls -l /etc/ | grep '^d' | tee result.txt | wc -l      查看/etc下的以字符d开头的文件数量,并将文件详情输入到result.txt中 
        eg:#grep -v ^# /etc/inittab         去掉文件行首的#号
        eg:# netstat -an | grep ESTABLISHED        查看当前机器的远程连接
        
        grep -n “48” test.txt 显示行号;显示匹配字符“48”的行及行号,相同于 nl test.txt |grep 48)
        grep “471” test.txt 显示输出字符“471”所在的行) 
        grep “48;” test.txt 显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行 
        grep “48[34]” test.txt 显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行) 
        grep “^[^48]” test.txt 显示输出行首不是字符“48”的行) 
        grep “[Mm]ay” test.txt 设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行) 
        grep “K…D” test.txt 显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行) 
        grep “[A-Z][9]D” test.txt 显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的所有的行 
        grep “[35]..1998” test.txt 显示第一个字符是3或5,第二三个字符是任意,以1998结尾的所有行 
        grep “4/{2,/}” test.txt 模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行 
        grep “9/{3,/}” test.txt 模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行 
        grep “9/{2,3/}” test.txt 模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内,重复出现2次或3次所有行 
        grep -n “^$” test.txt 显示输出空行的行号 
        ls -l |grep “^d” 如果要查询目录列表中的目录 同:ls -d * 
        ls -l |grep “^d[d]” 在一个目录中查询不包含目录的所有文件 
        ls -l |grpe “^d.....x..x” 查询其他用户和用户组成员有可执行权限的目录集合

    扩展grep(grep -E 或者 egrep):

        使用扩展grep的主要好处是增加了额外的正则表达式元字符集。
        打印所有包含NW或EA的行。如果不是使用egrep,而是grep,将不会有结果查出。
            # egrep 'NW|EA' testfile     
            northwest       NW      Charles Main        3.0     .98334
            eastern         EA      TB Savage           4.4     .84520
        对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。
        #grep 'NW\|EA' testfile
        northwest       NW      Charles Main        3.0     .98334
        eastern         EA      TB Savage           4.4     .84520
         
        搜索所有包含一个或多个3的行。
        # egrep'3+' testfile
        # grep -E '3+' testfile
        # grep'3\+' testfile        
        #这3条命令将会
        northwest       NW      Charles Main          3.0     .98334
        western         WE      Sharon Gray           5.3     .97523
        northeast       NE      AM Main Jr.           5.1     .94313
        central         CT      Ann Stephens          5.7     .94513
        搜索所有包含0个或1个小数点字符的行。
        # egrep'2\.?[0-9]' testfile 
        # grep -E '2\.?[0-9]' testfile
        # grep'2\.\?[0-9]' testfile 
        #首先含有2字符,其后紧跟着0个或1个点,后面再是0和9之间的数字。
        western         WE       Sharon Gray          5.3     .97523
        southwest       SW      Lewis Dalsass         2.7     .8218
        eastern         EA       TB Savage             4.4     .84520
        搜索一个或者多个连续的no的行。
        # egrep'(no)+' testfile
        # grep -E '(no)+' testfile
        # grep'\(no\)\+' testfile   #3个命令返回相同结果,
        northwest       NW      Charles Main        3.0     .98334
        northeast       NE       AM Main Jr.        5.1     .94313
        north           NO      Margot Weber        4.5     .8959
    
    不使用正则表达式
        fgrep 查询速度比grep命令快,但是不够灵活:它只能找固定的文本,而不是规则表达式。
        如果你想在一个文件或者输出中找到包含星号字符的行
        fgrep  '*' /etc/profile
        for i in /etc/profile.d/*.sh ; do
        或
        grep -F '*' /etc/profile
        for i in /etc/profile.d/*.sh ; do
 

6.top 查看系统健康状态

    top 进程活动
        top提供一个当前运行系统实时动态的视图,包括内存、交换分区和CPU的使用率等。
        默认情况下,显示系统中CPU使用率最高的任务,并每3秒钟刷新一次。


    【参数说明】
        top -d Number 制定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变。
        top -p ID     通过制定监控进程ID来仅仅监控某个进程的状态
        top -s        使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
        top -i        使top不显示任何闲置或者僵死进程。
        top -c        显示整个命令行而不是显示命令名


    【交互命令】
        Ctrl+L             擦除并重写屏幕
        h后者?            显示帮助画面,给出一些简短的命令总结说明。
        Kill -15(-9)PID  终止一个进程。
                            系统将提示用户输入需要终止的进程PID,以及需要发送该进程什么样的信号。
                            一般的终止进程可使用15信号,如不能结束那就是用信号9强制结束该进程。
        i                  忽略闲置和僵死进程。
        q                  退出程序
        r                  重新安排一个进程的优先级别,输入需要改变的PID机优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认是10.
        s                  改变两次刷新之间的延迟时间。输入时间值S。小数算成ms。输入0值系统将不断刷新从而根本来不及看清显示的情况,而且系统负载也会大大增加。
        f/F                从当前显示中添加/删除项目,按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。前面标记“*”的项代表现实,不带则代表隐藏。
        o/O                改变显示项目的顺序,按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
        按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
        l                  切换显示平均负载和启动时间信息
        m                  切换显示内存信息
        t                  切换显示进程和cpu状态信息。
        c                  切换显示项目命令名称和完整命令行
        M                  根据驻留内存大小进行排序(降序)
        P                  根据cpu使用百分比大小进行排序
        T                  根据时间/累计时间进行排序
        W                  将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。


    输出样例分析:
        $ top
        top - 19:54:51 up 331 days, 3:04, 4 users, load average: 0.59, 0.38, 0.29
        Tasks: 344 total, 1 running, 343 sleeping, 0 stopped, 0 zombie
        Cpu(s): 0.1%us, 1.0%sy, 0.0%ni, 98.8%id, 0.0%wa, 0.1%hi, 0.0%si, 0.0%st
        Mem: 8174256k total, 7004368k used, 1169888k free, 840524k buffers
        Swap: 5242872k total, 357676k used, 4885196k free, 2577344k cached


          PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
         3653 root 16 0 10228 768 688 S 3.3 0.0 7577:01 hald-addon-stor
        22183 unionmon 15 0 12872 1284 804 R 1.0 0.0 0:00.05 top
            1 root 15 0 10348 588 556 S 0.0 0.0 35:34.11 init
            2 root RT -5 0 0 0 S 0.0 0.0 1:56.33 migration/0   


        统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime  命令的执行结果。
        第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
            Tasks: 344 total     进程总数
            1 running    正在运行的进程数
            343 sleeping    睡眠的进程数
            0 stopped    停止的进程数
            0 zombie    僵尸进程数
            Cpu(s): 0.1% us    用户空间占用CPU百分比
            1.0% sy    内核空间(系统模式)占用CPU百分比
            0.0% ni    用户进程空间内改变过优先级的进程占用CPU百分比
            98.8% id    空闲CPU百分比
            0.0% wa    等待输入输出的进程占用CPU时间百分比
            0.1% hi    硬中断请求服务占用的CPU百分百
            0.0% si       软中断请求服务占用的CPU百分百
            0.0% st      st(Steal time)虚拟时间百分比,就是当有虚拟机时,虚拟cpu等待实际cpu的时间百分百。

        第四行为物理内存信息,第五行为交换分区(swap)信息。内容如下:
            Mem: 8174256k total    物理内存总量,单位KB
            7004368k used    已经使用的物理内存总量
            17616k free       空闲内存总量
            22052k buffers    用作内核缓存的内存量
            Swap: 192772k total    交换区总量
            357676k used    使用的交换区总量
            192772k free    空闲交换区总量
            123988k cached    缓冲的交换区总量。
                        内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
                        该数值即为这些内容已存在于内存中的交换区的大小。
                        相应的内存再次被换出时可不必再对交换区写入。


        进程信息区统计信息区域的下方显示了各个进程的详细信息。
            序号    列名    含义
            a        PID    进程id
            b        PPID    父进程id
            c        RUSER    Real user name
            d        UID    进程所有者的用户id
            e        USER    进程所有者的用户名
            f        GROUP    进程所有者的组名
            g        TTY    启动进程的终端名。不是从终端启动的进程则显示为 ?
            h        PR    优先级
            i        NI    nice值。负值表示高优先级,正值表示低优先级
            j        P    最后使用的CPU,仅在多CPU环境下有意义
            k        %CPU    上次更新到现在的CPU时间占用百分比
            l        TIME    进程使用的CPU时间总计,单位秒
            m        TIME+    进程使用的CPU时间总计,单位1/100秒
            n        %MEM    进程使用的物理内存百分比
            o        VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
            p        SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
            q        RES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
            r        CODE    可执行代码占用的物理内存大小,单位kb
            s        DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
            t        SHR    共享内存大小,单位kb
            u        nFLT    页面错误次数
            v        nDRT    最后一次写入到现在,被修改过的页面数。
            w        S    进程状态。
                            D=不可中断的睡眠状态
                            R=运行
                            S=睡眠
                            T=跟踪/停止
                            Z=僵尸进程
            x        COMMAND    命令名/命令行
            y        WCHAN    若该进程在睡眠,则显示睡眠中的系统函数名
            z        Flags    任务标志,参考 sched.h
            
            默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过下面的快捷键来更改显示内容。
            更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z  即可显示或隐藏对应的列,最后按回车键确定。
            按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。
            按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的  R 键可以将当前的排序倒转。 


7.进程命令

 

    进程和程序的区别:
        1、程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的。
        2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个进程在活动中有可顺序地执行若干个程序。

    父进程与子进程:
        1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
        2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境。
        3、父进程终止子进程自然终止。

    进程和线程的区别:
        进程: 就是正在执行的程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
        线程: 轻量级的进程;进程有独立的地址空间,线程没有;线程不能独立存在,它由进程创建;相对讲,线程耗费的cpu和内存要小于进程。

    前台进程和后台进程:
        前台进程:
            在Shell提示处打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。
            这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行另一个命令。
        后台进程:
            在Shell提示处打入命令,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对
            用户给出提示。这条命令与Shell同步运行,即在后台运行。后台进程必须是非交互式的。

    进程状态:
        就绪:进程已经分配到资源,但因为其它进程正占用CPU,所以暂时不能运行而等待分配CPU的状态。
        等待:因等待某种事件而暂时不能运行的状态。
        运行:进程分配到CPU,正在处理器上运行。

    进程状态细化:
        用户态运行:在CPU上执行用户代码
        核心态运行:在CPU上执行核心代码
        在内存就绪:具备运行条件,只等调度程序为它分配CPU
        在内存睡眠:因等待某一事件的发生,而在内存中排队等待
        在外存就绪:就绪进程被交换到外存上继续处于就绪状态
        在外存睡眠:睡眠进程被交换到外存上继续等待
        在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令。
        在外存暂停:处于跟踪暂停态的进程被交换到外存上
        创建态:新进程正在被创建、但尚未完毕的中间状态
        终止态:进程终止自己

    linux 下查端口 netstat -nap| grep "port" 
        再使用  lsof -i :port    查出使用该端口的进程
        再使用kill 杀掉进程

    查看用户信息 w:

        1,w显示信息的含义
            JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里
            PCPU:CPU执行程序耗费的时间
            WHAT:用户正在执行的操作
        2,查看个别用户信息:w 用户名
        3,w显示信息的含义
             load average:分别显示系统在过去1、5、15分钟内的平均负载程度。
             FROM:显示用户从何处登录系统,“:0”的显示代表该用户时从X Window下,打开文本模式窗口登录的
             IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置

    查看系统中的进程 ps:
        ps - report a snapshot of the current processes
        ps命令查找与进程相关的PID号:  最常用的方法是 ps  aux 
        ps a 显示现行终端机下的所有程序,包括其他用户的程序。
        ps -A 显示所有程序。
        ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
        ps -e 此参数的效果和指定"A"参数相同。
        ps e 列出程序时,显示每个程序所使用的环境变量。
        ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
        ps -H 显示树状结构,表示程序间的相互关系。
        ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
        ps s 采用程序信号的格式显示程序状况。
        ps S 列出程序时,包括已中断的子程序资料。
        ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
        ps u 以用户为主的格式来显示程序状况。
        ps x 显示所有程序,不以终端机来区分。

    常用选项
        a:显示所有用户的进程
        u:显示用户名和启动时间
        x:显示没有控制终端的进程
        e:显示所有进程,包括没有控制终端的进程
        l:长格式显示
        w:宽行显示,可以使用多个w进行加宽显示

    eg:ps -ef|grep *** 查询进程,如果有多个,可再加通道|grep  ***
        删除进程时,如果有多个进程,不能直接区分启动的目录
        则可以使用 cd /proc/PID,再ll一下,就能看到启动的目录了

    查看系统中所有进程
        # ps aux     #查看系统中所有进程,使用BSD操作系统格式
        # ps -le     #查看系统中所有进程,使用Linux标准命令格式

    ps -aux常用输出信息的含义
        USER:用户名
        PID:进程号
        PPID:父进程的进程号
        %CPU:占用CPU时间和总时间的百分比
        %MEM:占用内存与系统内存总量的百分比
        VSZ:该进程占用虚拟内存的大小,单位是KB
        RSS:该进程占用实际物理内存的大小,单位是KB
        TTY:进程启动的终端,其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。pts/0-255代表虚拟终端
        STAT:进程当前状态    S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止,s:包含子进程,+:位于后台
        START:该进程的启动时间
        NI:进程优先级
        TIME:进程自从启动以来占用CPU的总时间
        COMMAND/CMD:进程的命令名

    ps应用实例
        # ps      查看隶属于自己的进程
        # ps -u or -l     查看隶属于自己进程详细信息
        # ps -le or -aux     查看所有用户执行的进程的详细信息
        # ps -aux --sort pid    可按进程执行的时间、PID、UID等对进程进行排序
        # ps -aux | grep sam    查看用户sam执行的进程 
        # ps -uU sam               查看用户sam执行的进程  
        # ps -le | grep init        查看指定进程信息
    ------------------------------------------------

    进程管理的作用
        1,判断服务器健康状态
        2,查看系统中所有进程
        3,杀死进程

    kill – 杀死进程

    为什么要杀死进程
        1,该进程占用了过多的CPU时间
        2,该进程占用了过多的CPU时间无法运行
        3,运行时间过长,但没有预期效果
        4,产生了过多到屏幕或磁盘文件的输出
        5,无法正常退出
     
    kill
        kill [ -s signal | -p ] [ -a ] pid ... 
        kill -l [ signal ] 
        kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号 
        -s (signal):其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l 
        -p:印出 pid , 并不送出信号 
        -l (signal):列出所有可用的进程信号


    常用的进程信号:

    kill –,关闭进程

        关闭进程:kill进程号
            kill -9 进程号(强行关闭)
            kill -1 进程号(重启进程)
        关闭图形程序:xkill
        结束所有进程:killall
            killall -i    交互式,询问是否要杀死某个进程
            killall -0   进程名   检测进程是否存在,
            killall -I    忽略进程名的大小写
        查找服务进程号:pgrep 服务名称
        关闭进程:pkill 进程名称
            pkill -t  终端号:    按照终端号踢出用户
        怎么使用pkill呢?
            1,w命令 查询本机已登录的用户,TTY(终端号)
            2,pkill -9 -t    pst/1    强制杀死从pst/1虚拟终端登录的进程

    把进程放入后台
        1,在命令后加 &
        2,在执行命令的过程中,按下ctrl+z快捷键(可以以top命令示范)

    查看后台的工作
        jobs    [-l]
        -l    显示工作的PID
        "+"号代表最近一个放入后台的工作,也是工作恢复时,默认优先恢复的工作。"-"号代表倒数第二个放入后台的工作。

    将后台暂停的工作恢复到前台执行
        # fg  %工作号
        参数:%工作号:    %号可以省略,但是注意工作号和PID的区别 

        补:如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    把后台暂停的工作恢复到后台继续执行
        # bg    %工作号
        注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行,比如说,top命令和vi命令,是不能在后台恢复执行的

        补:如果后台中有多个命令,同样可以用bg %jobnumber将选中的命令调出

    nice和renice
    nice
        指定程序的运行优先级
        格式:nice -n command
        例如:nice -5 myprogram
    renice
        改变一个正在运行的进程的优先级
        格式:renice n pid
        例如:renice -5  777
        优先级取值范围为(-20,19)*

    nohup
        使进程在用户退出登陆后仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认储存到文件nohup.out中
        格式:
        nohup program &

        进程的挂起和恢复

         进程的中止(挂起)和终止
            挂起(Ctrl+Z)
            终止(Ctrl+C)
        进程的恢复
            恢复到前台继续运行(fg)
            恢复到后台继续运行(bg)
        查看被挂起的进程(jobs)

    top 查看系统健康状态 

    作用:进程状态显示和进程控制,每3秒钟自动刷新一次(动态显示)
    常用选项:
        -d:    指定刷新的时间间隔    默认是3秒
        c:    显示整个命令行而不仅仅显示命令名
        u:    查看指定用户的进程
        k:    终止执行中的进程
        h or ?:    获得帮助
        r:    重新设置进程优先级
        s:    改变刷新的时间间隔
        W:    将当前设置写入~/.toprc文件中
        P:以CPU使用率排名,默认项
        M:以内存的使用率排名
        N:以PID排序
        q:退出top
                


8.时间命令


    hwclock   硬件时钟
    date     软件时钟
    hwclock  --hctosys   根据硬件时钟来同步软件时钟
    hwclock  --systohc   根据软件时钟来同步硬件时钟
    
    设置硬件时间
    hwclock --set --date="10/30/14 00:00"        格式:月/日/年  时:分:秒
    
    设置软件时间
    法一: date 11121314    11月12日13点14分
    法二: date -s 12/31/2015     date -s 13:14:00      设置时间为2015年12月13日,13时14分
    
    同步系统时间 时间同步
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime      
    该命令作用:把当前时区调整为上海就是+8区 
    
    ntpdate us.pool.ntp.org        
    该命令作用:利用ntpdate同步标准时间
    
    可以加入定时计划任务,每隔10分钟同步一下时钟:
    crontab -e
    添加如下:
    0-59/10 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP 

    时间戳换算:
    把时间戳换算成日期
    date -d "1970-01-01 17382 days"
    把日期换算成时间戳:
    echo $(($(date --date="2017/08/05" +%s)/86400+1))


9.中文语言环境


    #vi /etc/sysconfig/i18n 
        将 LANG="en_US.UTF-8" 
            SYSFONT="latarcyrheb-sun16" 
    修改为 
        LANG="zh_CN.GB18030" 
        LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" 
        SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" 
        SYSFONT="lat0-sun16"
    重启机器生效
    如果重启未生效,可用 yum 安装中文字体 
    #yum install fonts-chinese.noarch 


10.mail


    命令路径:/bin/mail        执行权限:所有用户
    作用:查看发送电子邮件    
    语法:mail  [用户名]              以ctrl+D结束
    再使用mail直接回车,查看邮件
    & 邮件数字编号 查看邮件的详细信息,& h 查看邮件列表,
    & d 删除该邮件,& q 退出
    每个用户的邮箱在  /var/spool/mail/用户名

11.系统中7种运行级别


    0:关机
    1:单用户模式(类似windows安全模式,无图形化界面,只有root可登录)
    2:字符界面的多用户模式,是广泛使用的服务器模式(未启动NFS服务)
    3:字符界面的多用户模式,是广泛使用的服务器模式
    4:自定义的运行级别
    5:图形化的多用户的模式(系统默认的级别)
    6:重启
    etc/rc.d/rc*.d (*可取值:0,1,2,3,4,5,6) 不同的运行级别,运行不同的目录下文件
    

你可能感兴趣的:(linux)