您的位置:澳门新葡8455最新网站 > 澳门新葡8455最新网站 > 随即更新

随即更新

发布时间:2019-12-31 04:27编辑:澳门新葡8455最新网站浏览(147)

    •    1 LINUX COMMAND
    •        1.1 cat
    •        1.2 ls
    •        1.3 echo
    •        1.4 sort
    •        1.5 awk
    •        1.6 df
    •        1.7 du
    •        1.8 fsck
    •        1.9 dumpe2fs
    •        1.10 rpm
    •            1.10.1 RPM校验
    •            1.10.2 RPM包中文件提取
    •            1.10.3 源码包与RPM包的区别
    •        1.11 yum
    •        1.12 head
    •        1.13 tail
    •        1.14 chmod
    •        1.15 chown
    •        1.16 systemctl
    •        1.17 chkconfig
    •        1.18 mount
    •            1.18.1 挂载命令格式
    •            1.18.2 挂载光盘
    •            1.18.3 卸载光盘
    •            1.18.4 挂载U盘
    •            1.18.5 NTFS u盘支持
    •        1.19 swap
    •        1.20 free
    •        1.21 Compression 压缩 command
    •            1.21.1 gzip
    •            1.21.2 bz2
    •            1.21.3 xz
    •            1.21.4 zip
    •        1.22 tar
    •            1.22.1 *.tar.gz
    •            1.22.2 *.tar.bz2
    •        1.23 locate
    •        1.24 find
    •            1.24.1 根据文件名查找:
    •            1.24.2 根据文件从属关系查找:
    •            1.24.3 根据文件的类型查找:
    •            1.24.4 根据文件的大小查找:
    •            1.24.5 根据时间戳查找
    •            1.24.6 根据权限来查找:
    •            1.24.7 处理动作:
    •        1.25 history
    •        1.26 vim
    •        1.27 useradd
    •        1.28 userdel
    •        1.29 id
    •        1.30 usermod
    •        1.31 groupadd
    •        1.32 su
    •        1.33 chage
    •        1.34 passwd
    •        1.35 gpasswd
    •        1.36 groups
    •        1.37 date
    •        1.38 hwclock
    •        1.39 ln
    •        1.40 SElinux
    •        1.41 crontab
    •        1.42 fdisk
    •    2 LINUX THE DOCUMENT
    •        2.1 用户和用户组管理
    •            2.1.1 /etc/passwd:用户信息文件
    •            2.1.2 影子文件:/etc/shadow
    •            2.1.3 组信息文件/etc/group
    •            2.1.4 组密码文件/etc/gshadow
    •            2.1.5 用户的家目录
    •        2.2 linux的特殊权限
    •            2.2.1 SUID
    •            2.2.2 SGID
    •            2.2.3 STICKY
    •        2.3 facl
    •        2.4 文件系统属性chattr权限
    •        2.5 sudo权限
    •        2.6 linux下查看帮助命令
    •        2.7 linux根目录结构和文件系统
    •    3 SHELL
    •        3.1 shell更改

     

    Description:"【中文中括号】"表示单一的解释,不在所属的问题之中,勿需与所在命令比较。 
    Red coloured words 表示重点,linux不同文件类型以不同颜色区分。本文档中出现的color与linux系统相对应。 
    Blue coloured words 为给出的例子。 :表示换行。 
    linux the document出现的黑色背景矩形方框为区别给出的例子
    color= #FF1493 区分RED标记.     背景color=#778899叙述或解释。
    Typeface color=#FF6347区分标题

    一、系统管理与设置

    本文档部分内容参考于网友个人博客以及各大搜索网站 禁止分享

     

    1 LINUX COMMAND

    [root@pan ~]# root:登录的用户 @分隔符  pan主机名 ~当前路径
    :newline

    1、信息显示命令

    1.1 cat

    cat 由第一行开始显示文件内容
    tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
    nl 显示的时候,顺道输出行号!
    -A:查询所有的内容包括隐藏字符

     

    1.2 ls

    -F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

    # man & info  //帮助手册

    1.3 echo

    #echo [选项][输出内容]
    -e:支持反斜线控制的字符转换

    控制字符 作用
    \ 输出本身
    a 输出警告音
    b 退格键,也就是向左删除键
    c 取消输出行末的换行符,和“-n”选项一致
    e ESCAPE键
    f 换页符
    n 换行符
    r 回车键
    t 制表符,也就是Tab键
    v 垂直制表符
    nm 按照八进制ASCII码输出字符,其中0为数字零,nnn是三位八进制数
    xhh 按照十六进制ASCII码表输出字符。其中hh是两位十六进制数。

    echo -e "e[1;31m abcd e[0m" 输出颜色
    =30m 黑色,=31m 红色,=32m 绿色,
    =33m 黄色,=34m 蓝色,=35m 洋红,
    =36m 青色,=37m 白色。
    #echo -e abbc

     

    1.4 sort

    sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,不加参数时依次按ASCII码值进行比较,最后将他们按升序输出
    -n :依照数值的从小到大排序;
    -r :以相反的顺序来排序; 
    -u :忽略相同行使用-u选项或者uniq 文件名
    -t <分隔符>:指定排序时所用的栏位分隔字符;
    -k 是指定需要排序的栏位(字母按ASCII排序,数字按从小到大。先数字后字母)
    [root@mail text]# sort -nrk 3 -t: sort.txt  将CC列数字从大到小顺序排列:
    eee:40:5.4
    eee:60:5.1
    ddd:20:4.2
    ccc:50:3.3
    bbb:10:2.5
    aaa:30:1.6
    AAA:BB:CC 列图片 1

    # man 命令 //显示相应命令的帮助内容

    1.5 awk

    1. awk '{print $1}' 文件名  $1第一列,$2第二列,$NF最后一列.$(NF-1)倒数第二列)。 现在是以文件的空格为分隔符这样打印
    2. awk -F ":" '{print $1}' /etc/passwd  -F指定分隔符,并打印文件第一列
      多列打印 [root@pan ~]# awk -F ":" '{print $2 $3}' /etc/passwd 这样打印$2 $3之间是没有分隔符 要加分隔符就是 awk -F ":" '{print $2"分隔符符号"$3}' /etc/passwd $0表示整个文件

     

    1.6 df

    文件系统查看命令
    -a:显示所有的文件系统信息信息,包括特殊文件系统,如,/proc,/sysfs
    -h:使用习惯单位显示容量,如KB,MB或GB等。
    -T:显示文件系统类型
    -m: 以MB为单位显示容量。
    -k:以KB为单位显示容量,默认就是以KB为单位显示容量。

    du命令和df命令的区别
    df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间) 
    du命令是面向文件的,只会计算计算机文件或目录占用的空间。

     

    # arch  //显示当前系统体系结构

    1.7 du

    是通过搜索文件来计算每个文件的大小然后累加,du能看到的文件只是一些当前存在 的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和 
    -h : 以K,M,G为单位,提高信息的可读性。
    -s : 统计总占用量,而不列出子目录和子文件的占用量。
    ls -h是目录下文件名占用大小   du -h 是目录下所有文件的大小
    -k : 以KB(1024bytes)为单位输出。
    -m : 以MB为单位输出。
    -a显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量。

     

    1.8 fsck

    文件系统修复命令
    fsck [选项] 分区设备文件名
    -a:不显示用户提示,自动修复文件系统
    -y:自动修复。和-a作用一致,不过有些文件系统只支持-y

    # cal  //显示当前月份

    1.9 dumpe2fs

    显示磁盘状态命令
    #dumpe2fs 分区设备名

     

    1.10 rpm

    rpm是Linux标准基础(LSB)兼容发行版所使用的一种软件包管理器,用来对软件包进行低级处理rpm可以查询、安装、检验、升级和卸载软件包,它多数用于基于Fedora的系统,比如RHEL和CentOS
    只有安装和升级要加包全名。-ivh: -i:安装,-v:显示详细信息,-h:显示进度,--nodeps:不检测依赖性。
    -Uvh包全名:RPM包升级. 
    -q :接软件包名字 #查询软件是否已经安装 -q(查询query)
    -qa :#查询所有已经安装的RPM包。-a(所有all)
    -qi :包名字#查询软件包详细信息 -i :显示软件包的相关信息
    -ql 包名:查询软件包安装位置 -l :显示套件的文件列表。
    -qf +系统文件名。查看一个文件是由哪个包安装的
    -qip 包全名:查询未安装软件包信息,必须在软件包目录进行查询。
    -qR :查询软件包的依赖性。
    -qRp :查询未安装软件包的依赖性必须在Packages目录查询。
    -e 包名:卸载软件。

    rpm -qf `which 程序名`  #返回软件包的全名    已安装的软件包
    rpm -qif `which 程序名`  #返回软件包的有关信息
    rpm -qlf `which 程序名`  #返回软件包的文件列表

     

    # cal 2012  //显示2012年的月历

    1.10.1 RPM校验

    #rpm -V 已安装的包名
    选项:-V 校验指定RPM包中的文件。(verify)
    [root@Tiger ~]#rpm -V httpd
    S.5....T. c /etc/httpd/conf/httpd.conf
    验证内容中的8个信息的具体内容如下:
    S:文件大小是否改变;
    M:文件的类型或文件的权限(r w x)是否被改变;
    5:文件MD5校验和是否改变(可以看成文件的内容是否改变);
    D:设备的主,从设备号是否改变;
    L:文件路径是否改变;
    U:文件的属主(所有者)是否改变;
    G:文件的属组是否改变;
    T:文件的修改时间是否改变;
    文件类型:
    c :配置文件(config file)
    d :普通文档(documentation)
    g :"鬼"文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
    l :授权文件(license file)
    r :描述文件(read me)

     

    1.10.2 RPM包中文件提取

    #rpm2cpio 包全名 | cpio -idv .文件绝对路径 反斜杠:换行的作用。 rpm2cpio:将rpm包转换为cpio格式的命令。
    cpio:是一个标准工具,他用于创建软件档案文件和从档案文件中提取文件。
    #cpio 选项 < [文件|设备]
    选项: -i:copy-in模式,还原
       -d:还原时自动新建目录
       -v:显示还原过程
    #rpm -qf /bin/ls 查询ls命令属于哪个软件包 
    #mv /bin/ls /tmp 造成ls命令误删除的假象
    #rpm2cpio /mnt/Packages/coreutils-8.4-37.el6.x86_64.rpm | cpio -idv ./bin/ls 提取RPM包中ls命令到当前目录的/bin/ls下
    cp /root/bin/ls /bin 把ls命令复制到/bin目录,修复文件丢失。

    # cal 10 2012  //显示2012年10月的月历

    1.10.3 源码包与RPM包的区别

    安装在指定位置当中,一般是/usr/local/软件名/。
    RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装apache的启动方法是:
    /etc/rc.d/init.d/httpd start: 绝对路径启动服务。 
    service httpd start
    源代码保存位置:/usr/local/src/
    软件安装位置:/usr/local/
    如何确定安装过程报错:安装过程停止;并出现error、warning或no的提示。
    源码包安装过程:
    下载源码包;解压缩下载的源码包;进入解压缩目录。

    CRT中sftp里面要设置远程的路径和本地的路径: 
    cd 1 进入远程连接到的Linux的1目录
    lcd text 本地的c盘text目录
    get abc.c 从远程目录得到文件abc.c放入本地目录text
    put a11.txt 从Windows上将文件a11.txt传入linux

    源码包配置:
    ./configure软件配置与检查

    1. 定义需要的功能选择。
    2. 检测系统环境是否符合安装需求。
      3. 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。
      ./configure --prefix=/usr/local/apache2安装路径
      详情参考INSTALL
      源码包的卸载:
      不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件。
      脚本安装包:
      脚本安装包并不是独立的软件包类型,常见安装的是源码包。
      是人们把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。
      非常类似于Windows下软件的安装方式。

     

     

    1.11 yum

    能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
    remove :删除指定的rpm软件包; yum -y remove 软件包名
    yum update +包名 :升级。 禁用
    yum grouplist:列出所有可用的软件组列表;
    yum groupinstall 软件组名:安装指定的软件组,组名可以由goruplist查询出来;
    yum groupremove:卸载指定软件组;

    配置yum仓库:     
      [base]  
      name=centos  
      baseurl=file:///mnt/  
      enabled=1  
      gpgcheck=0 
    

     

    # cal -y  //显示整年日历

    1.12 head

    head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行 
    -n:显示文件的前n行 head -n 5 a.txt 显示文件的前5行
    -c显示文件前n个字节 head -c 20 a.txt
    head -c -32 log2014.log文件的除了最后n个字节以外的内容
    head -n -6 log2014.log 输出文件除了最后n行的全部内容

     

    1.13 tail

    主要用来从指定点开始将文件写到标准输出。很多人喜欢使用tail -f 来监控日志文件。
    -f该参数用于监视文件的增长 tail -f filename 监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。
    -n从指定行位置读取指定文件。tail -n 20 filename 显示filename最后20行。
    -c显示文件最后n个字节 tail -c 20 a.txt

    # cat /etc/issue  //看当前系统发行版本

    1.14 chmod

    chmod命令用来变更文件或目录的权限,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件
    -f :若该文件权限无法被更改也不要显示错误讯息
    -R :对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
    r=读取属性 值=4  w=写入属性 值=2  x=执行属性 值=1

     

    1.15 chown

    改变某个文件或目录的所有者和所属的组
    Grammar:chown USER:GROUP 对象
    chown USER 对象  chown :group 对象

    # cat /etc/redhat-release //看操作系统版本(redhat和centos)

    1.16 systemctl

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起
    图片 2

     

    1.17 chkconfig

    1.服务概述: 在linux操作系统下,经常需要创建一些服务,这些服务被做成shell脚本,这些服务需要在系统启动的时候自动启动,关闭的时候自动关闭。 将需要自动启动的脚本/etc/rc.d/init.d目录下,然后用命令chkconfig --add filename将自动注册开机启动和关机关闭。实质就是在rc0.d-rc6.d目录下生成一些文件连接,这些链接连接到/etc/rc.d /init.d目录下指定文件的shell脚本。

    --list :列出所有系统服务
    --add httpd:增加httpd服务。
    --del httpd:删除httpd服务。
    --list mysqld:列出mysqld服务设置情况
    --level 35 mysqld on:设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。
    chkconfig mysqld on:设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。

    chkconfig 设置是当前不生效,linux重启后才生效. service 设置是即时生效,linux关机重启后设置失效

    # cat /etc/shells  //查看shell版本

    1.18 mount

    查询与自动挂载(Auto Mount)图片 3
    #mount [-l]
    查询系统中已经挂载的设备,-l会显示卷标名称
    #mount -a
    依据配置文件/etc/fstab的内容,自动挂载

     

    1.18.1 挂载命令格式

    #mount [-t 文件系统] [-L卷标名] [-o特殊选项] 设备文件名 挂载点
    -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
    -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
    -o 特殊选项:可以指定挂载的额外选项。
    图片 4
    #mount -o remount,noexec /home这里的/home是df可以查看到的分区重新挂载/home分区,并使用noexec权限
    #cd /home 
    #vi hello.sh

    #!/bin/bash
    echo "i love you"

    #chmod 755 
    #./hello.sh 会显示没有权限执行 
    #mount -o remount,exec /home 记得改回来,要不然会影响系统启动的。

     

    # cat /etc/services | more  //查看各种服务的port

    1.18.2 挂载光盘

    #mkdir /mnt/cdrom 建立挂载点
    #mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘
    #mount /dev/sr0 /mnt/cdrom

     

    1.18.3 卸载光盘

    #umount设备文件名或挂载点
    #umount /mnt/cdrom

    # cat /proc/cpuinfo  //显示CPU信息

    1.18.4 挂载U盘

    fat32格式:

    #fdisk -l 查看U盘设备文件名
    #mount -t vfat /dev/sdb1 /mnt/usb/
    注意:fat16分区识别为fat,fat32分区识别为vft。linux默认是不支持NTFS文件系统的

     

     

    1.18.5 NTFS u盘支持

    下载NTFS-3G插件 
    解压 tar -zxvf filename
    安装 ./configure && make && make install
    fdisk -l查看linux的U盘分区:sdc1
    #mount -t ntfs-3g /dev/sdc1 /mnt/usb/ #mkfs -t ext4 /dev/sdb1/ 格式化分区,扩展分区不可格式
    #mkdir /disk1 建立挂载点
    #mount /dev/sdb1 /disk1 挂载

    # cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l  //结果大于0, 说明支持64位计算。lm指long mode, 支持lm则是64位

    1.19 swap

    新增swap空间:free查看swap大小
    新增一个分区,改分区号82,保存退出
    格式化:mkswap /dev/sdb6 
    加入swap分区:swapon /dev/sdb6
    取消swap分区:swapoff /dev/sdb6 但是每次开机都要手动挂载一遍,可以写入fatab开机自动挂载
    vi /etc/fstab

    /dev/sdb6 swap swap defaults 0 0
    

     

    # getconf LONG_BIT  //查看CPU位数(32 or 64)

    1.20 free

    显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。 
    -b :以Byte为单位显示内存使用情况;
    -k :以KB为单位显示内存使用情况;
    -m :以MB为单位显示内存使用情况;
    图片 5
    total:去掉为硬件和操作系统保留的内存后剩余的内存总量。许多人奇怪自己的电脑安装了一共8G的内存,但是显示总共只有七点几G的,现在应该没什么疑惑了把,不管Linux还是Windows都会有部分内存是保留给硬件和操作系统的!
    userd:当前已使用的内存总量。
    free:空闲的或可以使用的内存总量
    shared:共享内存大小,主要用于进程间通信
    buff(buffers):缓冲,主要用于块设备数据缓冲(磁盘缓存大小),例如记录文件系统的metadata(目录、权限等等信息)。是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减小了磁盘碎片和硬盘反复寻道,加速了数据的写入过程。
    cache:缓存,主要用于文件内容缓冲,是指把读取出来的数据保存在内存当中,当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程。
    available:可以使用的内存总量.

     

    1.21 Compression 压缩 command

    # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c  //查看CPU型号

    1.21.1 gzip

    gzip filename压缩 *.gz :"后缀名" 
    gzip -d filename.gz gunzip filename.gz 解压缩 
    不解压查看:zcat filename.gz

     

    1.21.2 bz2

    bzip2 filename压缩 *.bzip2:"后缀名"
    bzip2 -k filename 保存源文件压缩
    bzip2 -d filename.bz2 bunzip2 filename.bz2解压缩 
    不解压查看:bcat filename.bz2

    # cat /proc/cpuinfo | grep physical | uniq -c  //查看实际有几颗CPU

    1.21.3 xz

    xz filename压缩 .xz:"后缀名" 
    xz -d filename.xz 解压缩
    unxz -k filename.xz 保存源文件解压

     

    1.21.4 zip

    zip默认保存源文件,可以压缩目录
    解压:unzip FileName.zip
    压缩:zip FileName.zip DirName
    -r :递归处理,将指定目录下的所有文件和子目录一并处理;

    # getconf LONG_BIT  //显示当前CPU运行在什么模式下

    1.22 tar

    -c: 建立压缩档案 
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

    这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的
    

    tar cf file.tar files 将一个或多个文件、目录打包到tar包。
    tar rf file.tar file 将文件file添加到tar包中。
    tar uf file.tar file 将文件file更新tar包中相应的文件。
    tar tf file.tar 查看tar内容。
    tar xf file.tar 解压tar包。 
    -z:有gzip属性,即需要用 gzip 压缩
    -j:有bz2属性,即需要用 bzip2 压缩 
    -v:显示处理过程 
    -C:指定解压输出目录 tar zxvf test.tar.gz -C test
    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名
    -Z:有compress属性的
    -O:将文件解开到标准输出 
    格式:tar Zcf file.tar.Z files 将一个或多个文件、目录压缩到file.tar.Z中。需要安装了ncompress软件包才行。
    解压.tar.Z文件。格式:tar Zxf file.tar.Z  
    归档并压缩:使用时间格式打包数据:
    tar zcf etc-$(date +%F).tar.gz /etc   tar zcf etc-`date +%F`.tar.gz /etc

     

    1.22.1 *.tar.gz

    归档并调用gzip压缩 tar -zcf 新文件名.tar.gz /etc/passwd /var/log/messagages
    调用gzip解压缩并展开归档 tar -zxvf filename.tar.gz

    # cat /proc/devices  //列出字符和块设备的主设备号,以及分配到这些设备号的设备名称

    1.22.2 *.tar.bz2

    归档并调用bzip2压缩 tar -jcf 新文件名.tar.bz2 /etc/passwd /var/log/messages
    调用bzip解压缩并展开归档 tar -jxf filename.tar.bz2

     

    1.23 locate

    其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。 
    所以你要知道:

    1. locate的速度比find快,因为它并不是真的查找文件,而是查数据库
      2. locate的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护
    2. 升级数据库命令:locate -- u 
      CentOS系统找不到locate命令,原因是系统中没有安装 mlocate 这个包,然后更新数据库:updatedb 。 
      -c :只显示找到条目的号码
      -b :匹配唯一的路径名称的基本文件名
      -r :基于基本正则表达式进行匹配操作

    # cat /proc/filesystems  //看文件系统

    1.24 find

    实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找:

     

    1.24.1 根据文件名查找:

    -name "pattern"
    -iname "pattern" 支持glob风格的通配符: *,?,[],[^]  i忽略大小写
    -regex pattern :基于正则表达式查找文件,匹配整个路径而非其名;

    # cat /proc/interrupts  //显示中断

    1.24.2 根据文件从属关系查找:

    -user USERNAME:查找属主指定用户的所有文件;
    -goup GROUPNAME:查找属组指定组的所有文件;
    -uid UID:查找属主指定的UID的所有文件;
    -gid GID:查找属组指定的GID的所有文件;
    -nouser :查找没有属主的文件;
    -nogroup :查找没有属组的文件;

     

    1.24.3 根据文件的类型查找:

    -type TYPE :按name查找 
    f:普通文件  d:目录   l:符号链接文件   b:块设备文件   c:字符设备文件
    p:管道文件 s:套接字文件   【 ./可执行文件 】
    组合测试:   与:-a,默认组合逻辑;  或:-o;  非:-not,! 
    !A -a !B =!(A -o B)      !A -o !B =!(A -a B)    例:查找tmp目录下不包含“fstab”的字符文件   find /tmp -not -iname "*fstab*"  

    # cat /proc/ioports  //看设备io端口

    1.24.4 根据文件的大小查找:

    -size [+|-]#UNIT 常用单位:K,M,G 
    例:size 10K filename,大小表示 (#-1,#]   9K<filename<10K 
      size -10K filename,大小表示[0-UNIT-1] 
      size +10K filename,大小表示(#,∞)

     

    1.24.5 根据时间戳查找

    以“天”为单位: 
    # [#,#-1]距现在为止过去几天访问过文件。
    -#:(0,#) 几天访问过文件。
    +#(oo, #-1] 几天前至-oo访问过的所有文件
    -atime

    显示的是文件中的数据最后被访问的时间,比如系统的进程直接使用或通过一些命令和脚本间接使用。
    

    -mtime

    显示的是文件内容被修改的最后时间,比如用vi编辑就会发生改变。
    

    -ctime

    显示的是文件的权限、拥有者、所属的组、链接数发生改变时的时间。当然当内容改变时也会随之改变。
    

    以“分钟”为单位:
    -amin  -mmin  -cmin 同上

     

    # cat /proc/loadavg  // 看系统负载

    1.24.6 根据权限来查找:

    -perm [/|-]mode     例:find ./ -perm 644  
    mode:精确权限匹配;
    /mode :任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足 9位权限之间存在“或”关系;
    -mode :每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足 9位权限之间存在"与"关系; 
    例: 440属于/666有读的权限 find./ -perm /666 符合这一查找

     

    1.24.7 处理动作:

    -print :输出至标准输出:默认的动作; 
    -ls :类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息
    -delete :删除找到的文件
    -fls :/PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中; 
    -ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认; 
    -exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令; 
    例:find ./ -perm /002 -exec mv {} {}.txt ;
    注意: find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次性传递后面的命令;但是有些命令不能接受过长的参数,此时执行命令会失败;另一种方式可规避此问题:find | xargs command
    :
    1、 查找/var目录下属主为root,且属组为mail的所有文件或目录;
    find /var -user root -a -group mail -ls

    2、 查找/usr目录下不属于root,bin或hadoop的所有文件或目录;用两种方法;

    find /usr -not -user root -a -not -user bin -a -not -user hadoop
    find /usr -not ( -user root -o -user bin -o -user hadoop ) -ls

     

    3、 查找/etc目录下最近一周内其内容修改过,且属主不是root也不是hadoop用户的文件或目录;
    find /etc -mtime -7 -a -not -user root -a -not -user hadoop
    find /etc -mtime -7 -a -not (-user root -o -user hadoop) -ls

    4、查找当前系统上没有属主或属组,且最近一周内曾今被访问过的文件或目录; 
    find ./ -nouser -o -nogroup -ls 如果有文件属于可查找项,但是加ls选项最后会无法输出显示 加了-o(或条件)和ls后只会对后一半生效。

    需要→ find ./ ( -nouser -o -nogroup) -atime -7 -ls

     

    5、 查找/etc目录下大于1M且类型为普通文件的所有文件;
    find /etc -size +1M -ls
    find /etc -size +1M -type f -exec ls -lh {} ;

    6、 查找/etc目录下所有用户都没有写权限的文件;

    find /etc -not -perm /222 -type f -ls 至少有一个用户 有

    7、 查找/etc目录至少有一类用户没有执行权限的文件;
    find /etc -not -perm -type f -111

    8、 查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的所有文件;

    find /etc -perm -111 -a -perm -002 -ls
    find /etc -perm -113 -ls -type f

     

    # cat /proc/meminfo  //看内存信息

    1.25 history

    #history [选项][历史命令保存文件]
    -c:清空历史命令
    -w:把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

    历史命令默认保存1000条,可以在环境变量配置文件/etc/profile中修改

    历史命令的调用: 1. 使用上、下箭头调用以前的历史命令

    1. 使用"!n"重复执行第n条历史命令
    2. 使用"!!"重复执行上一条命令
    3. 使用"!字符串"重复执行最后一条以该字符串开头的命令。

     

    1.26 vim

    :.,$y 复制当前行到末尾行
    :! 调用系统命令,可临时执行
    使vim设置永久生效:vim /etc/vimrc 把设置写到这个文件的最后,对所有账户生效
    set nu 显示行号   set nonu 取消行号
    set ic 不区分大小写 set noic 取消不区分大小写
    set ts=4 设置tab键长度
    set sw=4 设置自动缩进的tab键长度 
    vim /root/.vimrc 也可以把设置写到此文件,只对root生效 
    vim字符替换:

    :%s/this/that 每一行的第一个this被替换成that 
    :%s/this/that/g 将文本中所有的this替换成that %从每一行的开头到结尾 s表示替换 
    :1,5 s/old/new/g #替换第一行到第5行中所有匹配的内容

    字符操作:u撤销上一步 
    i当前插入,I行首插入。
    a当前字符插入(光标后一位插入),A行尾插入。 
    o表示:本行回车到下一行插入,O上一行插入。
    x删除光标所在字符,X向前删除一个字符。
    dd删除光标所在的行,dG删除光标所在开始行到文件尾的所有字符。 
    J合并两行。 
    行操作:home 键或^键行首,$或end行尾
    dd删除一行Ndd(删除本行与下一行)。
    yy复制一行,Nyy复制n行,p将复制行粘贴,p向光标下一行粘。(N表示数字)
    词操作:dw删除一个词,y+$复制至行尾。y+^复制至行首。yw复制一个词。:.,$y 复制当前行到末尾

    v模式:编程的时候需要进行多行注释: (删除是要将光标移到这个词的行首,如果光标不在行首则删除光标之后的字母。) 块操作:D或d+$删除至行尾 d+^删除至行首
    1、注释:ctrl+v进入列编辑模式 
    2、向下或向上移动光标 (ctrl L 向下全部选中)
    3、把需要注释的行开头的开头标记起来
    4、然后按大写的I
    5、再插入注释符,比如“#”
    6、再按Esc,就会全部注释了
    删除多行注释:按ctrl+v进入列编辑模式;向下或向上移动光标;选中注释部 分然后按d,就会删除注释符号。

    vim编辑器: :wq 可以保存外 :w +路径+文件名直接保存在某个位置和重命名:w 路径/文件名
    ZZ 保存退出  :x 保存退出  :!命令:!ifconfig 
    vi的行定位功能:
    ctrl+f 向前卷动一个屏幕
    ctrl+b 向后卷动一个屏幕
    G 到文件最后一行行首
    :$ 到文件最后一行行尾
    mG 到指定行,m为目标行数 或者mgg 
    set nu 显示行号 
    /内容 查找指定内容 
    n 查找下一个
    N 回到前一个
    ? 寻找上一个

    /^字符串 查找以字符串开始的行
    /字符串$ 查找以字符串结尾的行 
    /a.b 查找字符串a任意字符b vim替换 
    r 替换当前光标字符 
    :r 文件名 在光标当前位置载入另一个文件

     

    # cat /proc/mounts  //显示当前系统所安装的文件系统信息

    1.27 useradd

    useradd命令用来建立用户帐号和创建用户的起始目录,使用权限是终极用户.
    -u :uid指定用户ID
    -d:指定用户登入时的启始目录。
    -g:指定用户所属的群组 
    -G:指定用户所属的附加群组。 
    -s:指定用户登入后所使用的shell。
    tom 用户的登陆 shell 为非交互式 shell  #useradd –s /sbin/nologin tom 
    -e :指定账号的有效期限,缺省表示永久有效
    useradd user1——创建用户user1; 
    useradd –e 12/30/2009 user2——创建user2,指定有效期2009-12-30到期
    -c:用户说明,手工指定用户的说明,添加说明有Spacebar时要加" "

    用户默认值文件:/etc/defalut/useradd
    1. GROUP=100 :用户默认组ID (公有模式)
    2. HOME=/home :用户家目录
    3. INACTIVE=-1 :密码过期宽限天数(shadow文件7字段)
    4. EXPIRE=no value :密码失效时间(8字段)
    5. SHELL=/bin/bash :默认的shell
    6. SKEL=/etc/skel :模板目录
    7. CREATE_MAIL_SPOOL=yes :是否建立邮箱
    /etc/login.defs
    PASS_MAX_DAYS 999 :密码有效期(5字段)
    PASS_MIN_DAYS 0 :密码修改间隔(4字段)
    PASS_MIN_LEN 5 :密码最小5位(PAM)
    PASS_WARN_AGE 7 :密码到期警告(6)
    UID_MIN 500 :最小和最大UID范围
    GID_MIX 60000
    ENCRYPT_METHOD SHA512 :加密模式

     

     

    1.28 userdel

    删除用户userdel [-r] 用户名
    -r:删除用户的同时删除用户家目录

    # free  //看内存信息

    1.29 id

    查看用户id:#id 用户名
    查询用户的UID,初始组ID,附加群组ID

     

    1.30 usermod

    usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序.
    -g <群组> 修改用户所属的原始群组。
    #usermod -g root username 
    -G <群组> 修改户所属的附加群
    -a -G 无限增加到附加组,可拥有多个附加组. 将a1添加附加组user3 #usermod -a -G user3 a1 
    -c:修改用户的说明usermod -c "test user" username

    当某一用户拥有多个附加组之后,使用usemod -G会修改附加组,则多个组消失掉变成唯一当前修改的附加组.

     

    1、将 newuser2 添加到附加组 staff  #usermod -G staff newuser2 
    -l <帐号名称> 修改用户帐号名称。 
    2、修改 newuser 的用户名为 newuser1 #usermod -l newuser1 newuser 
    -L 锁定用户密码,使密码无效。
    -U 解除密码锁定。
    3、锁定账号 newuser1 #usermod -L newuser1 
    4、解除对 newuser1 的锁定 #usermod -U newuser1 
    -d 改变用户家目录,常与-m结合使用 
    -m 将主目录的内容移动到新目录 
    usermod -m -d /home/user2 -uid username 若使用报错使用以下命令: 
    cat /dev/null > /var/run/utmp

    清空此文件。utmp是一个文件,除了utmp程序你不能编辑这个文件,删掉他的话,当前登陆信息都会丢失。它就好比系统开启后它会把系统成员的信息迅速的记录下来,过一段时间它就不再记录,确认系统的用户配置就是这样了,这个文件在每次机器reboot起来后都会重新创建。

     

    # dmidecode  //查看内存型号

    1.31 groupadd

    -gGID: 修改组ID
    -n新组名: 修改组名

     

    1.32 su

    su: [选项] 用户名
    -:选项只使用"-"代表连带用户的环境变量一起切换。

    可使用env命令查看

    -c:仅执行一次命令,而不切换用户身份
    #su - root -c "useradd user3"不切换成root,但是执行useradd命令添加user1用户。

     

    # /usr/platform/sun4u/sbin/prtdiag -v  //查看内存信息(unix)

    1.33 chage

    修改用户密码状态chage 
    #chage [选项] 用户名 
    -l:列出用户的详细密码状态
    -d 日期:修改密码最后一次更改日期(shadow3字段)
    -m 天数:两次密码修改间隔(4字段)
    -M 天数:密码有效期(5字段)
    -W 天数:密码过期前警告天数(7字段)
    -I 天数:密码过后宽限天数(7字段)
    -E 日期:账号失效时间(8字段)
    #chage -d 0 username这个命令其实是把密码修改日期归0了(shadow第3字段),这样用户只要一登录就要修改密码。第三字段是指密码最后一次修改时间的日期。1970年1月1号到现在修改密码的时间戳。如果第3字段改为0,系统会认为用户没有修改过操作密码,那么当此用户一旦登录系统就会提示要修改密码,才可正常使用。

     

    1.34 passwd

    -S:查询用户密码的密码状态,仅root用户可用。
    -l:暂时锁定用户。仅root用户可用。
    -u:解锁用户。仅root用户可用。
    --stdin:可以通过管道符输出的数据作为用户的密码。 # echo "123" | passwd --stdin user

    # cat /proc/modules  //看当前系统模块

    1.35 gpasswd

    -d :从组删除用户 gpasswd -d username groupadd 
    -a :添加用户到组(附加组),同时保留以前的组

    添加用户到某一个组可以使用 usermod -G groupB userA 这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉. 所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作用户

    -A :指定组内管理员 gpasswd -A username groupname

     

    1.36 groups

    groups username 显示linux用户所属的组

    # cat /proc/net/dev 显示网络适配器及统计

    1.37 date

    date 根据给定格式显示日期或设置系统日期时间。print or set the system date and time 指令所在路径:/bin/date  #date "+%Y-%m-%d %H:%M:%S" 
    -d:显示字符串所指的日期与时间。字符串前后必须加上双引号;#date -d now
    #date -d 'next monday'  #date -d yesterday +%Y-%m-%d
    -r:显示文件最后修改时间 
    -s:设置系统时间 #date -s "2018-11-11 00 00 00"

    在使用date -s这个命令修改时间后,系统重启后就失效了,因此为了将这个时间永久生效,需要将修改的时间写入CMOS,查看CMOS的时间:#clock –r 。 将当前系统时间写入CMOS中去#clock –w

    在生产环境中常使用时间格式打包数据:#tar zcvf etc-$(date +%F).tar.gz /etc
    #tar zcvf etc-`date +%F`.tar.gz /etc 
    图片 6

     

    1.38 hwclock

    查看硬件时间
    设置硬件时间hwclock --set --date="07/07/06 10:19" (月/日/年 时:分:秒)
    硬件时间和系统时间的同步:重新启动系统,硬件时间会读取系统时间,实现同步,但是在不重新启动的时候,需要用hwclock命令实现同步。
    硬件时钟与系统时钟同步: #hwclock --hctosys(hc代表硬件时间,sys代表系统时间)
    系统时钟和硬件时钟同步:(让系统的时间同步到硬件时钟)#hwclock –-systohc

    # cat /proc/partitions  //看当前系统分区

    1.39 ln

    ln:链接命令
    硬链接:复制并同步 ln /etc/passwd /tmp/password
    软链接:类似windows下的快捷方式 ln -s /etc/passwd /tmp password
    软链接和硬链接的区别:
    1.创建命令不同: ln -s /root/ruan.txt /root/桌面/ ln /root/ying.txt /root/桌面/
    2.软链接创建时必须使用绝对路径(链接和源文件在同一目录下,可以相对路径)硬链接创建时可以绝对路径也可相对路径
    3.软链接的源文件不可以剪切,重命名,删除 硬链接的源文件可以剪切,重命名,删除
    4.软链接的链接文件权限永远是777,即使将链接文件的权限进行了修改,也不会发生变化,变得是源文件的权限 硬链接的链接文件权限永远和源文件相同
    5.软链接的链接文件的inode号和源文件不同 硬链接的链接文件的inode号和源文件相同
    6.软链接可以对目录操作 硬链接不支持对目录操作,是针对于上层来说,底层是可以针对于目录做硬链接的,通过代码就可以实现
    7.软链接可以跨文件系统 硬链接不可以跨文件系统,因为硬链接是存放在源文件的同一个block上面的

     

    1.40 SElinux

    安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
    DAC:在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。 只要访问这个资源的进程符合以上的条件就可以被访问。 而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。
    MAC:在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。 这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。 即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。 这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。
    getenforce 命令是单词get(获取)和enforce(执行)连写,可查看selinux状态
    setenforce 命令则是单词set(设置)和enforce(执行)连写,用于设置selinux防火墙状态,如: setenforce 0用于关闭selinux防火墙,但重启后失效。图片 7
    SELinux status:selinux防火墙的状态,enabled表示启用selinux防火墙 
    关闭SElinux:
    临时关闭 :[root@localhost ~]# setenforce 0 用于关闭selinux防火墙,但重启后失效 
    永久关闭:修改selinux的配置文件:vim /etc/selinux/config
    将SELINUX=enforcing改为SELINUX=disabled,保存后退出,此时获取当前selinux防火墙的安全策略仍为Enforcing,配置文件并未生效。重启后验证。
    SELinux 有三种工作模式,分别是: 1. enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。

    1. permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
    2. disabled:关闭 SELinux

    # cat /proc/scsi/scsi  //查看scsi硬盘信息

    1.41 crontab

    1.Crontab是一个用于设置周期性执行任务的工具;
    2.周期性执行的任务我们称为Cron Job;
    3.周期性执行的任务列表我们称为Cron Table
    crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    * * * * * command minute hour day month week command 顺序:分 时 日 月 周
    

    minute: 表示分钟,可以是从0到59之间的任何整数。
    hour:表示小时,可以是从0到23之间的任何整数。
    day:表示日期,可以是从1到31之间的任何整数。
    month:表示月份,可以是从1到12之间的任何整数。
    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文
    -u:编辑某个用户的cron,只用root可以使用此参数为别的用户设置cron服务。也可用于给用户指定crontab文件。
    -l:列出当前用户的crontab。
    -r:删除当前用户的crontab。
    -e:编辑当前用户的crontab,默认使用vi,或者是由 VISUAL或EDITOR环境变量指定的编辑器。
    -i与-r一起使用,用来询问用户是否直接删除crontab 
    1、安装cron
    – yum install vixie-cron 
    – yum install crontabs1、检查cron服务:
    – 检查crontab工具是否安装:crontab -l 
    – 检查crond服务是否启动:service crond status
    检查crontab服务状态:service crond status 
    图片 81.每晚的21:30重启apache
    30 21 * * * service httpd restart
    2.每月1,10,22日的4:45重启apache

    45 4 1,10,22 * * service httpd restart

     

    3.每月1-10日的4:45重启apache
    45 4 1-10 * * service httpd restart

    4.每天18:00-23:00之间每隔30分钟重启apache

    0,30 18-23 * * * service httpd restart
    0-59/30 18-23 * * * service httpd restart

     

    5.每晚11-早上7点之间,每隔一个小时重启apache
    * 23-7/1 * * * service httpd restart

    6.每隔两分钟重启apache

    */2 * * * * service httpd restart
    1-59/2 * * * * service httpd restart(奇数分钟重启)
    0-58/2 * * * * service httpd restart(偶数分钟重启)

    小结: 
    -*表示任何时候都匹配;
    -可以用"A,B,C"表示A或者B或者C时执行命令
    -可以用"A-B"表示A到B之间时执行命令
    -可以用"*/A"表示每A分钟(小时等)执行一次命令

     

    */1 * * * * /usr/sbin/ntpdate us.pool.ntp.org | logger -t NTP
    

    图片 9

     

    1.42 fdisk

    fdisk命令操作磁盘详解--添加、删除、转换分区等
    主分区和扩展分区(扩展分区不能直接使用)(1-4),扩展分区下面再分逻辑分区(5开始)。
    [root@Tiger]#fdisk /dev/sda
    图片 10
    分区保存报错需要重启时,强制读取分区表信息
    #partprobe
    yum install -y parted

    # cat /proc/swaps  //看所有swap分区

    2 LINUX THE DOCUMENT

     

    2.1 用户和用户组管理

    # cat /proc/version  //查看Linux内核版本

    2.1.1 /etc/passwd:用户信息文件

    user1:x:500:500::/home/user1:/bin/bash
    第一字段:用户名称;
    第二字段:密码标志;
    第三字段:UID(用户ID);
    0:超级用户;
    1-499:系统用户(伪用户);
    500-65535:普通用户;
    第4字段:GID(用户初始组ID)
    第5字段:用户说明
    第6字段:家目录
    普通用户:/home/用户名/
    超级用户:/root/
    第7字段:登录之后的Shell

     

    2.1.2 影子文件:/etc/shadow

    第1字段:用户名
    第2字符:加密密码 加密算法升级为SHA512散列加密算法
    如果密码位是“ !”或“ * ”代表没有密码,不能登录。
    第3字段:密码最后一次修改日期:使用1970年1月1号作为标准时间,每过一天时间戳加1。
    第4字段:两次密码的修改间隔时间(和第3字段相比)间隔多少时间后才可以修改密码。
    第5字段:密码有效期(和第3字段相比)
    第6字段:密码修改到期前的警告天数(和第5字段相比)
    第7字段:密码过期后的宽限天数(和第5字段相比)
    0:代表密码过期后立即失效。
    -1:则代表密码永远不会失效。
    第8字段:账号失效时间,要用时间戳表示
    第9字段:保留
    把时间戳换算为日期:
    date -d "1970-01-01 17740 days" 
    把日期换算为时间戳:
    echo $(($(date --date="2018/07/28" +%s)/86400+1))

    # cat /etc/security/limits.conf  //查看打开最大文件数等设置

    2.1.3 组信息文件/etc/group

    第一字段:组名
    第二字段:组密码标志
    第三字段:GID
    第四字段:组中附加用户

     

    2.1.4 组密码文件/etc/gshadow

    第一字段:组名
    第二字段:组密码
    第三字段:组管理员用户名
    第四字段:组中附加用户

    # cd /proc/pid号;ls -l exe  //查看进程的完整路径

    2.1.5 用户的家目录

    • 普通用户:/home/用户名/,所有者和所属者都是此用户,权限是700
    • 超级用户:/root/,所有者和所属者都是root用户,权限是550。
    • 用户的邮箱:/var/spool/mail/用户名/
    • 用户模板目录:/etc/skel:创建用户时,用户的家目录会自动创建一些隐藏文件,这些文件是从/etc/skel/ cp过去的。想要每个新添加用户时家目录自动出现共享文件可在此目录添加。

     

    2.2 linux的特殊权限

    特殊权限: SUID,SGID,STICKY 
    1.进程以某用户的身份运行;进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;
    2.权限匹配模型: 
    (1)判断进程的属主,是否为被访问的文件属 主 ;如果是,则应用属主的权限;否则进入第2步;
    (2)判断进程的属主,是否属于被访问的文件属 组 ;如果是,则应用属组的权限;否则进入第3步;
    (3)应用other的权限;

    # date //显示当前时间

    2.2.1 SUID

    SetUID的功能:

    1. 只有可以执行的二进制程序才能设定SUID权限。 
    2. 命令执行者要对该程序拥有X(执行)权限
    3. 命令执行者在执行该程序时获得该程序文件属主的身份
    4. SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

    SUID :默认情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份运行;
    SUID 的功用:用户运行某程序时,如果此程序拥有SUID的权限,那么程序运行为进程时,进程的属主不是发起者,而程序文件自己的属主;
    管理文件的SUID权限: 
    chmod u+|-s FILe 
    展示位置:属主的执行权限位。 
    #chomod 4644 filename
    取消suid权限:#chmod 644 filename
    大写S为报错,检查是否有x权限

     

     

    2.2.2 SGID

    用户在执行程序时候,组身份变为该程序文件的属组与SUID类似。

    管理文件的 SGID 的权限: 
    chmod g+|-s FILE SGID : 功用:当目录属组有写的权限,且SGID权限时,当你给一个目录添加了sgid之后,后面不管谁来这个目录下创建文件,文件的所属组都会继承目录的所属组
    展示位置:属组的执行权限位
    如果属组原本有执行权限,则显示为小写s;否则,显示为大写S; 
    #ll /usr/bin/locate
    #ll /var/lib/mlocate/mlocate.db
    图片 11

    # date +'%Y/%m/%d'  //以yyyy/mm/dd格式显示日期

    2.2.3 STICKY

    图片 12
    sticky :t权限只能给目录添加,当你给一个目录添加了t权限之后,后面所有人在这个目录下不能删除其他人的文件,只能删除自己的文件;
    管理文件的Sticky权限: chmod o+|-t FILE
    展示位置:其他用户的执行权限位
    如果其他用户原本有执行权限,显示为小写t;否则为大写T。
    系统上的/tmp和/var/tmp目录下默认均有Sticky权限

    SUID SGID STICKY 八进制权限
    0 0 0 0
    0 0 1 1
    0 1 0 2
    0 1 1 3
    1 0 0 4
    1 0 1 5
    1 1 0 6
    1 1 1 7

    基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;
    例:chmod 1777 中的 1 表示特殊权限

     

    2.3 facl

    facl:file access control lists 文件访问控制列表
    文件的额外赋权机制:在原有的u,g,o之外,另一层让普通用户控制赋权给另外的用户或组的赋权机制;
    查看分区ACL权限是否开启
    #dumpe2fs -h /dev/sda3
    dumpe2fs命令是查询指定分区详细文件系统信息的命令.选项:
    -h仅显示超级块中的信息,而不显示磁盘块组的详细信息
    临时开启分区ACL权限:
    #mount -o remount,acl / 重新挂载根分区,并挂载加入acl权限。
    永久开启分区ACL权限#vi /etc/fstab

      UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 dufaults,acl 1 1         加入ACL
    

    #mount -o remount / :重新挂载文件系统或重启动系统,使修改生效。
    getfacl filename :查看文件额外的权限 
    setfacl命令: setfacl -m u:username:rw filename 
    赋权给用户: setfacl -m u:USERNAME:MODE file 
    赋权给组: serfacl -m g:GROUPNAME:MODE file 
    撤销赋权:serfacl -x u:USERNAME file
        serfacl -x g:USERNAME file 
    递归ACL权限:#setfacl -m u:用户名:权限 -R 目录名

     

    默认ACL权限:默认acl权限的作用是如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录ACL的权限。#setfacl -m d:u:用户名:权限 文件名

    图片 13
    setfacl 选项 文件名
    选项: 
    -m :设定ACL权限
    -x :删除指定的ACL权限
    -b :删除文件所有的ACL权限
    -d :设定默认ACL权限
    -k :删除默认ACL权限
    -R :递归设定ACL权限
    最大有效权限mask mask是用来指定最大有效权限的。如果我给用户赋予了ACL权限,是需要和mask的权限"相与"才能得到用户的真正权限。

    A B and
    r r r
    r - -
    - r -
    - - -

    修改最大有效权限:#setfacl -m m:rx filename 设定mask权限为r-x。使用“m:权限”格式。

    mask值只能添加ACL权限之后后期更改,当更改mask值以后再添加ACL权限,mask值就会变为777

    # date +'%Y-%m-%d'  //以yyyy-mm-dd格式显示日期

    2.4 文件系统属性chattr权限

    #chattr [+-=] [选项] 文件或目录名
    +:增加权限
    -:删除权限
    =:等于权限 
    选项:

    -i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据还可以cp,但不允许建立和删除文件
    -a:如果对文件设置a属性,那么只能在文件中增加数据(只能用echo增加数据,不能用vim),但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除。

    chattr +i a.txt
    lsattr -a a.txt 
    ----i--------e- a.txt   e:代表此文件在ext4文件系统下建立的。 
    查看文件系统属性:
    #lsattr 选项 文件名
    -a显示所有文件和目录
    -d若目标是目录,仅列出目录本身的属性,而不是子文件。

     

     

    2.5 sudo权限

    root把本来只能超级用户执行的命令赋予普通用户执行。
    sudo的操作对象是系统命令
    whereis 命令 查看命令的绝对路径
    #visudo
    实际修改的是/etc/sudoers文件
    root  ALL=(ALL)   ALL
    用户名  被管理主机的地址=(可使用的身份)  授权命令(绝对路径)
    被管理的主机地址可写成主机ip和ALL 
    %wheel  ALL=(ALL)  ALL
    组名   被管理的主机地址=(可使用的身份)  授权命令(绝对路径) 
    root  ALL=(ALL)   ALL
    st  192.168.81.137=/sbin/shutdown -r now 添加内容
    st   ALL=/usr/bin/vim 危险操作 
    #su - st:切换用户 
    #sudo -l 查看可用的sudo命令
    #sudo /sbin/shutdown -r now 普通用户执行sudo赋予的命令

    # date +%H:%M  //显示时、分

    2.6 linux下查看帮助命令

    whatis :用于查询一个命令执行什么功能,并将查询结果打印到终端上
    [root@localhost ~]# whatis ls
    man :Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可   man command    

     

    2.7 linux根目录结构和文件系统

    进程的类型:
      终端:硬件设备,关联一个用户接口。
      与终端相关:通过终端启动。 
      与终端无关:操作引导启动过程中自动启动 
    操作系统的组成:
      静态:kernel,application
      文件系统:层级结构
    FHS:  Filesystem Hierarchy Standard
      /bin:所有用户可用的基本命令程序文件;
      /sbin:供系统管理使用的工具程序;
      /boot:引导加载器必须用到的各种静态文件:Kernel,initramfs(initrd),grub等;
      /dev:存储特殊文件或设备文件;
       设备有两种类型:字符设备(线性设备)、块设备(随机设备);
      /etc:系统程序的配置文件,只能为静态:
      /home:普通的家目录的集中位置:一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
      /lib:为系统启动或根文件系统上的应用程序(/bin,/sbin)等提供共享库,以及为内核提供内核模块
       libc.so.*:动态链接的C库;
       ld*:运行时链接器/加载器;
       modules:用于存储内核模块的目录;
      /lib64:64位系统特有的存放64位共享的路径;
      /media:便携式设备挂载点,cdrom,floppy等;
      /mnt:其他文件系统的临时挂载点;
      /opt:附加应用程序的安装位置:可选路径;
      /srv:当前主机为服务提供的数据;
      /tmp:为那些会产生临时文件的程序提供的用于临时文件的目录:可供所用户执行写入操作:有特殊权限;
      /usr:usr Hierarchy,全局共享的只读数据路径:
       bin,lib64
       include:C程序头文件;
       share:命令手册页和自带文档等架构特有的文件的存储位置
       local:另一个层级目录;
       X11R6:X-widow程序的安装位置
       src:程序源代码文件的存储位置   

    # date -r test  //显示test文件最后一次的修改时间

    3 SHELL

    shell就是linux的命令解释器。
    在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin。
    脚本执行:

    1. 赋予脚本权限,直接运行
      chmod 755 hello.sh
      ./hello.sh 
    2. 通过bash调用执行脚本
      bash hello.sh

     

    3.1 shell更改

    shell 程序执行有三种方式 filename:foo.sh  #. foo.sh   #bash foo.sh  #chmod +x foo.sh→#./foo.sh linux读取shell配置文件的执行顺序
    Bash Shell的配置文件启动系统执行顺序
    #/etc/bashrc 文件   #/etc/profile 文件  #/etc/profile.d 目录  #~/.bashrc 文件#~/.bash_profile 文件
    切换不同的类型和版本的Shell   查看shells # cat /etc/shells 
    通过配置文件修改用户Shell
    # /etc/passwd    # /etc/shells
    通过命令自定义切换

    • chsh 自定义shell (请勿更改) 
      例:cp /bin/bash /bin/pan copy     vim /etc/shells 添加 /bin/pan add 
      chsh 切换shell /bin/shell change

     

    # dmesg  //看启动信息

     

    # dmidecode | grep "Product Name"  //查看机器型号

     

    # dmidecode | more  //查看硬件(如内存型号、生产厂家等)信息

     

    # dmidecode |grep 'Serial Number'  //查看主板的序列号

     

    # dmidecode -q  //显示硬件系统部件 (SMBIOS / DMI)

     

    # dmidecode -s system-serial-number  //查看系统序列号

     

    # dmidecode -t 11  //查看OEM信息

     

    # dmidecode -t memory  //查看内存信息

     

    # dmidecode -t processor  //查看CPU详细信息

     

    # echo  //显示文本行

     

    # echo $LANG  //显示系统语言

     

    # echo $PATH  //显示系统的环境变量

     

    # env  //显示所有环境变量

     

    # export  //查看环境变量(在bash下)

     

    # fgconsole  //显示活动的虚拟终端数目

     

    # file -s /dev/sd*  //查看设备信息

     

     

     

    # file /sbin/init  //查看系统是32位还是64位:

     

    64位系统输出信息如下:

     

    sbin/init: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

     

     

     

    32位系统输出信息如下:

     

    /sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

     

     

     

    # free -m  //以M为单位显示内存状态

     

    # free -m -s5  //以M为单位,每隔5秒刷新一次内存状态

     

    # gcc -v  //查看GCC版本

     

    # getconf LONG_BIT  //查看系统是32位还是64位

     

    # glxinfo  //显示有关GXL扩展和OpenGL渲染器的信息

     

    # grep -i '10.52' /etc/hosts  //查找/etc/hosts文件中包含10.52的行,不区分大小写

     

    # hdparm -i /dev/hda 罗列一个磁盘的架构特性

     

    # hdparm -tT /dev/sda 在磁盘上执行测试性读取操作

     

    # head -5 /etc/passwd  //看文件passwd的前5行

     

    # tail -10 /etc/passwd  //看文件passwd的后10行

     

    # sed  -n '5,10p' /etc/passwd  //查看文件passwd的第5行到第10行

     

    # history  //显示历史记录

     

    # history  5  //显示最近执行的5个历史记录

     

    # history  -c  //清除历史记录

     

    # sysdef -h  //查看主机ID(Unix)

     

    # hostname  //显示主机名

     

    # hostname  -a  //显示主机别名

     

    # hostname  -d  //显示主机域名

     

    # hostname  -i  //显示主机IP地址

     

    # hostname 主机名 //设置主机名称

     

    # hwclock  //获取当前硬件时间

     

    # hwclock --show  //查看硬件时间

     

    # clock --show    //查看硬件时间

     

    # hwclock –version  //显示hwclock命令的版本信息

     

    # info 命令 //显示相应命令info内容

     

    # iostat -d 2 3  //评估磁盘性能,每隔2s刷新一次信息,且刷新3次

     

    # lastlog   //最近登入的时间

     

    # locale  //显示系统当前的语言设置

     

    # locale -a  //显示所有可用字体

     

    # /etc/sysconfig/i18n  //语言配置文件

     

    # lsb_release -a  //查看系统发行版本,该命令适合所有的linux发行版本

     

    # lsmod  //显示所有已加载的模块

     

    # lspci | more //显示当前系统的硬件配置

     

    # lspci -v  //查看系统硬件配置详细信息

     

    # lspci -vv |more //查看系统硬件配置更为详细的信息

     

    # lspci| grep Ethernet  //查看网卡信息

     

    # lspci -tv  //列出所有PCI设备

     

    # lsusb  //输出所有的usb设备

     

    # ls /etc/rc3.d/S* |cut -c 15-  //显示运行3级别开启的服务

     

    # ls -l /lib/modules/$(uname -r)/kernel/fs  //查看Linux支持哪些文件系统

     

    # cat /proc/filesystems  //查看当前已加载到内存中支持的文件系统

     

    # mount  //列出系统的所有分区

     

    # mpstat  //多处理器使用率

     

    # netstat -pan|grep 177  //查看177端口情况

     

    # netstat -nlap  //查询进程占用哪些端口

     

    # ps aux  //显示所有进程状态和进程的基本信息

     

    # ps -e  //查看当前所有进程

     

    # ps -u root –N  //显示所有不是以root身份运行的进程

     

    # ps -U ow2003  //显示ow2003用户进程

     

    # ps -ef |grep ow2003  //显示ow2003用户进程

     

    # pstree  -h  //高亮显示当前正在执行的进程

     

    # pstree  -p  //以树状图方式显示进程及进程号

     

    # pwd  //显示当前目录

     

    # rpm -qa redhat-release  //看操作系统版本(只适用RH系列)

     

    # rpm -qa | xargs rpm -V  //查看系统中所有被修改过的文件,这对新安装的系统比较有效

     

    # rpm -qa vsftpd | xargs rpm -V  //查看系统中某个rpm包中的文件是否被修改

     

    # runlevel  //显示系统运行级别

     

    # set  //显示所有本地定义的Shell变量

     

    # stat -f filename  //显示文件系统状态

     

    # stat filename  //显示文件详细内容

     

    # tac /etc/hosts  //与cat相反,是将hosts内容从最后一行到第一行反向显示在屏幕上

     

    # time ls  //查看执行ls命令所需的时间

     

    # top n 2  //显示进程信息,刷新两次后退出

     

    # top -d 2 -n 3 -b >test.txt  //将top的结果输出到文件test.txt中(每隔2秒,打印3次)

     

    # top -bn1  //top命令列出所有进程

     

    # top -bn1 > 1.txt  //将进程输出到文件1.txt里

     

    # touch --help //显示touch帮助信息

     

    # tty  //显示当前终端的名称

     

    # uname -a  //显示全部信息

     

    64位系统输出如下信息:

     

    Linux server141.guodu.net 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

     

     

     

    32位系统输出如下信息:

     

    Linux bank.guodu.net 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux

     

     

     

    # uname -i  //显示硬件平台

     

    # uname -m  //显示机器硬件名

     

    # uname -n  //显示网络节点主机名

     

    # uname -o  //显示操作系统

     

    # uname -p  //显示处理器类型

     

    # uname -r  //显示内核版次

     

    # uname -s  //显示内核名

     

     

     

    Linux内核版本信息:

     

    Redhat 9.0———————————————2.4.20-8

     

    RHEL 3 Update 8————————————2.4.21-47

     

    RHEL 4 ————————————————2.6.9-5

     

    RHEL 4 Update 1————————————2.6.9-11

     

    RHEL 4 Update 2————————————2.6.9-22

     

    RHEL 4 Update 3————————————2.6.9-34

     

    RHEL 4 Update 4————————————2.6.9-42

     

    RHEL 4 Update 5————————————2.6.9-55

     

    RHEL 4 Update 6————————————2.6.9-67

     

    RHEL 4 Update 7————————————2.6.9-78

     

    CENTOS 5/RHEL 5 ———————————2.6.18-8

     

    CENTOS 5.1/RHEL 5 Update 1——————2.6.18-53

     

    CENTOS 5.2/RHEL 5 Update 2——————2.6.18-92

     

    CENTOS 5.3/RHEL 5 Update 3——————2.6.18-128

     

    CENTOS 5.4/RHEL 5 Update 4——————2.6.18-164

     

    CENTOS 5.5/RHEL 5 Update 5——————2.6.18-194

     

    CENTOS 5.6/RHEL 5 Update 6——————2.6.18-238

     

     

     

    # uptime  //查询系统自启动到现在总的运行时间及负载情况

     

    # vmstat  //显示虚拟内存的使用信息

     

    # vmstat  2  3  //显示虚拟内存每隔2s刷新一次信息,且刷新3次

     

    # whatis [命令或数据]  //相当于man -f [命令或数据]

     

    # yes  string  //设定重复显示的字符串

     

    2、系统管理命令

     

    # bc  //调用计算器(如果要输出小数,则要执行 scale=number,这个number就是小数点后的位数),输入quit退出bc

     

    # chkconfig rlogin on  //开启rlogin服务

     

    # chkconfig rsh on  //开启远端服务器rsh

     

    # chsh  //shell设置

     

    # chsh  -l  //列出当前所有可用的shell

     

    # chsh -s /bin/bash  //改变当前的shell设置为/bin/bash

     

    # /bin/sh  //切换shell

     

    # exit  //退出shell

     

    # clear  //清除终端屏幕

     

    # cp /dev/cdrom mycd.iso & //后台运行制作镜像(加&)

     

    # Ctrl + L  //清除终端屏幕

     

    # dos2unix filedos.txt fileunix.txt  //将一个文本文件的格式从MSDOS转换成UNIX

     

    # unix2dos fileunix.txt filedos.txt  //将一个文本文件的格式从UNIX转换成MSDOS

     

    # recode ..HTML page.html  //将一个文本文件转换成html

     

    # recode -l | more  //显示所有允许的转换格式

     

     

     

    # badblocks -v /dev/hda1  //检查磁盘hda1上的坏磁块

     

    # fsck /dev/hda1  //修复/检查hda1磁盘上linux文件系统的完整性

     

    # fsck.ext2 /dev/hda1  //修复/检查hda1磁盘上ext2文件系统的完整性

     

    # e2fsck /dev/hda1  //修复/检查hda1磁盘上ext2文件系统的完整性

     

    # e2fsck -j /dev/hda1  //修复/检查hda1磁盘上ext3文件系统的完整性

     

    # fsck.ext3 /dev/hda1  //修复/检查hda1磁盘上ext3文件系统的完整性

     

    # fsck.vfat /dev/hda1  //修复/检查hda1磁盘上fat文件系统的完整性

     

    # fsck.msdos /dev/hda1  //修复/检查hda1磁盘上dos文件系统的完整性

     

    # dosfsck /dev/hda1  //修复/检查hda1磁盘上dos文件系统的完整性

     

    # echo $shell  //显示当前用户的默认shell

     

    # fg 2178 //将后台进程编号为2178调到前台

     

    # ftp 10.52.19.189 &  //让ftp进程在后台执行

     

    # init 0   //关闭系统(停止)

     

    # telinit 0  //关闭系统(3)

     

    # init 1   //单用户模式(root)

     

    # init 2   //多用户文本模式(不能使用NFS)

     

    # init 3   //多用户文本模式(能使用网络共享)

     

    # init 5   //图形登录模式

     

    # init 6   //重新启动系统

     

    # shutdown -h now  //关闭系统(1)

     

    # shutdown -h hours:minutes &   //按预定时间关闭系统

     

    # shutdown -c   //取消按预定时间关闭系统

     

    # shutdown -r now   //重启(1)

     

    # reboot   //重启(2)

     

    # logout   //注销

     

    # jobs 查看后台运行的进程

     

    # kill -9 2178 //强制终止ID为2178的进程(强制法可能导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效)

     

    # mc  //对当前目录文件进行可视化管理

     

    # ntsysv  //设置系统开机时启动的各种服务

     

    # system-config-services  //图形界面的设置系统开机时启动的各种服务

     

    # pgrep nslookup  //显示与指定字符串相关的进程

     

    # pgrep -u root -l  //查找由root用户创建的进程

     

    # pgrep -u root -l -v  //查找不是由root用户创建的进程

     

    # ps -aux //显示当前运行的进程(静态)

     

    # ps -ef  // 查看所有进程

     

    # pstree //查看当前进程树

     

    # pwck /etc/passwd  //检测passwd文件的正确性

     

    # pwck /etc/shadow  //检测shadow文件的正确性

     

    # rlogin -l ow2003 10.52.19.200  //以用户ow2003登录远端主机

     

    # rmmod 未使用的模块名  //卸载unused模块

     

    # rsh 10.52.19.189  //登录远端主机10.52.19.189

     

    # rsh -l ow2003 10.52.19.189  //以用户ow2003登录远端主机

     

    # runlevel //显示系统当前运行级别

     

    # sleep 2m  //让系统休眠2分钟

     

    # ssh 10.52.19.189  //登录远端主机10.52.19.189

     

    # ssh -l ow2003 10.52.19.189  //以用户ow2003登录远端主机

     

    # sudo -L  //显示sudo命令可以使用的参数及相关描述信息

     

    # sudo -u ow2003 ls -l /home  //以用户ow2003身份执行命令

     

    # suspend  //暂停正在使用的shell

     

    # suspend -f  //强制暂停正在使用的shell

     

    # symlinks -v /  //显示根目录下的所有符号链接

     

    # testparm  //测试samba配置,回车后继续

     

    # top //显示当前运行的进程(动态)

     

    # top (Ctrl+Z) // 将当前top进程调到后台并停止

     

    # vlock  //锁定虚拟终端

     

    # watch -n 10 --difference=cumulative who  //以高亮字符显示累加差异

     

    # watch -n 10 who  //每隔10秒执行一次who命令

     

    # whereis  //找到指定文件的源、二进制文件和手册等各部分

     

    # xkill  //鼠标点死掉的图形即可终止,如果想终止xkill ,按右键取消

     

     

     

    bash 快捷键:

     

    常用:

     

    Ctrl+a  开始位置

     

    Ctrl+e  最后位置

     

    Ctrl+k  删除此处至末尾所有内容

     

    Ctrl+u   删除此处至开始所有内容

     

    Ctrl-C  杀死当前任务

     

    Ctrl-L  刷新屏幕

     

    Ctrl-shift-c  复制

     

    Ctrl-shift-v  粘贴

     

    tab  补全

     

     

     

    terminal窗口操作:

     

    Alt+1  切换到标签页1

     

    Alt+2  切换到标签页2

     

    Alt+3  切换到标签页3

     

    Ctrl+PageDown  后一标签页

     

    Ctrl+PageUp  前一标签页

     

    Shift+Ctrl+N  新建窗口

     

    Shift+Ctrl+PageDown  标签页右移

     

    Shift+Ctrl+PageUp  标签页左移

     

    Shift+Ctrl+Q  关闭终端

     

    Shift+Ctrl+T  新建标签页

     

    Shift+Ctrl+W  关闭标签页

     

     

     

    terminal窗口中的复制/粘贴:

     

    Shift+Ctrl+C  复制

     

    Shift+Ctrl+V  粘贴

     

     

     

    改变terminal窗口大小:

     

    !!  执行上一条命令

     

    !?string?  执行含有string字符串的最新命令

     

    !num  执行命令历史列表的第num条命令

     

    ↑(Ctrl+p)  显示上一条命令

     

    ↓(Ctrl+n)  显示下一条命令

     

    Alt+<  历史列表第一项

     

    Alt+>  历史列表最后一项

     

    Ctrl -   减小

     

    Ctrl+Shift +  放大

     

    Ctrl 0  原始大小

     

    Ctrl+r  然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令

     

    Ctrl+s  与Ctrl+r类似,只是正向检索

     

    F11:全屏

     

    history  显示命令历史列表

     

    ls !$  执行命令ls,并以上一条命令的参数为其参数

     

     

     

    光标移动:

     

    Alt+b  光标向后移动一个单词

     

    Alt+c  把当前词汇变成首字符大写

     

    Alt+d   剪切光标之后的词

     

    Alt+f  光标向前移动一个单词

     

    Alt+l  把当前词转化为小写

     

    Alt+t  交换当前与以前单词的位置

     

    Alt+u  把当前词转化为大写

     

    Ctrl+(x u)  按住Ctrl的同时再先后按x和u,撤销刚才的操作

     

    Ctrl+a  光标移到行首。

     

    Ctrl+b  光标左移一个字母

     

    Ctrl+c  删除整行

     

    Ctrl+d  删除光标所在字母(注意与backspace以及Ctrl+h的区别,这两个是删除光标前的字符)

     

    Ctrl+d  退出当前 Shell(当前行无字符时)

     

    Ctrl+e  光标移到行尾。

     

    Ctrl+f  光标右移。

     

    Ctrl+h  删除光标前一个字符,相当于按 backspace 键。

     

    Ctrl+k  清除光标后至行尾的内容。

     

    Ctrl+l  清屏,相当于clear

     

    Ctrl+q  重新启用挂起的shell

     

    Ctrl+r  搜索以前输入过的命令。将有提示,根据输入的关键字搜索bash的history

     

    Ctrl+s  挂起当前shell

     

    Ctrl+t  交换光标位置前的两个字符。

     

    Ctrl+u  清除光标前至行首间的所有内容。

     

    Ctrl+v 插入特殊字符,如Ctrl+v+Tab加入Tab字符键

     

    Ctrl+w  清除光标所在处之前的一个词(以空格、标点等为分隔符)

     

    Ctrl+y  粘贴或恢复上次的删除。

     

    Ctrl+z  把当前进程转到后台运行,使用 fg 命令恢复。

     

    Esc+b  移动到当前单词的开头

     

    Esc+f  移动到当前单词的结尾

     

    Esc+t  颠倒光标所在处及其相邻单词的位置

     

    Esc+w  删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符)

     

     

     

    3、系统维护命令

     

    # alias  //列出已设置的别名

     

    # alias rm 'rm -i'  //设置别名

     

    # authconfig  //设置系统的认证信息

     

    # bind -l  //显示按键组合的内容

     

    # bind -q abort  //查询abort上绑定的键

     

     

     

    # chattr +i filename  //禁止删除

     

    # chattr -i filename  //取消禁止

     

    # chattr +i /etc/fstab  //禁止修改fstab文件

     

    # chattr -i /etc/fstab  //取消禁止修改fstab文件

     

    # chmod 4755 test  //使test文件具有SUID权限(4为SUID)。SUID对目录是无效的

     

    # chmod 2755 test  //使test文件具有SGID权限(2为SGID)。SGID可用于文件或目录

     

    # chmod 1755 /test  //使/test目录具有SBIT权限(1为Sticky bit即SBIT)。SBIT只对当前目录有效

     

    # chmod 7666 test  //test文件拥有者无执行权限,设置后的大写S、T表示“空的”,即没有执行权限

     

    # lsattr -a  test //显示文件test的隐藏属性

     

    # lsattr -a  //显示当前目录下所有的目录和文件,包括隐藏文件或目录

     

    # lsattr -R  //递归显示指定目录及子目录的内容

     

    # lsattr  //显示当前目录下的文件属性

     

    # chkconfig  --list  //列出chkconfig所知道的所有服务

     

    # chkconfig telnet off  //关闭telnet服务

     

    # chkconfig telnet on  //开启telnet服务

     

    # cat /etc/sysconfig/clock  //查看所属时区和是否使用UTC时间

     

     

    # date -s 2007-08-03  //只修改日期

     

    # date -s "2007-08-03 14:15:00"  //同时修改日期和时间,加双引号

     

    # date -s 02/16/2012  //修改日期(按月日年格式)

     

    # date -s 13:56:00  //修改时间(按时分秒格式)

     

    # clock -r  //查询BIOS时间

     

    # cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime  //修改时区

     

    修改/etc/sysconfig/clock文件的内容为:

     

    ZONE=”Asia/Shanghai”

     

    UTC=false

     

    ARC=false

     

    # hwclock –w  //同步BIOS时间

     

    # hwclock -set -date="07/07/06 10:19:00''  //设置硬件时间(月/日/年 时:分:秒)

     

    # clock -set -date="07/07/06 10:19:00''    //设置硬件时间(月/日/年 时:分:秒)

     

    # hwclock -hctosys  //硬件时钟与系统时钟同步(hc代表硬件时间,sys代表系统时间)

     

    # clock -hctosys  //硬件时钟与系统时钟同步(hc代表硬件时间,sys代表系统时间)

     

    # hwclock -systohc  //系统时钟与硬件时钟同步

     

    # clock -systohc  //系统时钟与硬件时钟同步

     

    # tzselect  //时区设置

     

    # DEB 包 (Debian, Ubuntu 以及类似系统)

     

    # dpkg -i package.deb  //安装/更新一个 deb 包

     

    # dpkg -r package_name  //从系统删除一个 deb 包

     

    # dpkg -l  //显示系统中所有已经安装的 deb 包

     

    # dpkg -l | grep httpd  //显示所有名称中包含 "httpd" 字样的deb包

     

    # dpkg -s package_name  //获得已经安装在系统中一个特殊包的信息

     

    # dpkg -L package_name  //显示系统中已经安装的一个deb包所提供的文件列表

     

    # dpkg --contents package.deb  //显示尚未安装的一个包所提供的文件列表

     

    # dpkg -S /bin/ping  //确认所给的文件由哪个deb包提供

     

    # declare BASH=/bin/csh  //修改变量BASH的值为/bin/csh

     

    # declare -p  //显示shell的所有变量及值

     

    # declare -x  //显示所有环境变量的值

     

    # dircolors -b  //显示Bourne Shell颜色代码设置

     

    # dircolors -c  //显示C Shell颜色代码设置

     

    # dircolors -p  //显示ls命令默认颜色值

     

    # enable -a  //显示shell的所有内置指令

     

    # enable alias  //加载内部命令alias

     

    # enable -n alias  //关闭alias

     

    # eval pwd;df -h;ls  //连接多个命令pwd,df -h和ls

     

    # export MYENVIRON  //自定义一个环境变量MYENVIRON

     

    # export MYNAME= " Wang Xuri"  //定义环境变量并赋值

     

    # export -p  //列出当前的环境变量值

     

    # unset MYNAME  //清除环境变量MYNAME

    (注:以上命令使用的shell是bash)

     

     

     

    # fdisk /mbr  //删除GRUB

     

    # hostid  //显示当前主机的数字标识

     

    # ldd /bin/ls  //显示/bin/ls命令所使用的共享函数库

     

    # ldd -v /bin/ls  //以冗余模式显示的/bin/ls所使用的共享函数库

     

    # losetup /dev/loop0  //显示设备/dev/loop0的状态

     

    # depmod  //分析可载入模块的相依性

     

    # insmod  //载入模块

     

    # lsmod  //显示所有已加载的模块

     

    # lsmod -v usb-uhci  //使用insmod命令安装模块"usb-uhci"

     

    # modinfo  //显示kernel模块的信息

     

    # modprobe  //自动处理可载入模块

     

    # modprobe -c  //显示当前自动处理可载入模块的默认配置

     

    # rmmod  //删除模块

     

    # modprobe -v 8139too  //安装网卡8139too

     

    # mouseconfig --device psaux  //指定鼠标端口为PS/2,鼠标为psaux

     

    # mouseconfig --noui genericusb  //以命令形式指定鼠标类型为genericusb

     

    # mouseconfig --text  //在图形界面方式下配置鼠标

     

    # resize -c  //使用C shell表示当前终端窗口大小

     

    # resize -s 30 100  //设置虚拟终端大小,高为30列,长为100个字符

     

    # resize -u  //使用Bourne shell表示当前终端窗口大小

     

    # rpm --checksig package.rpm   //确认一个rpm包的完整性

     

    # rpm -e package-name //卸载具体的软件包

     

    # rpm -ev RealPlayer  //卸载软件RealPlay

     

    # rpm -hiv RealPlayer10GOLD.rpm  //安装RealPlayer10GOLD.rpm包

     

    # rpm -i mplay.rpm   //安装mplay软件包(不显示信息)

     

    # rpm -ivh --force mplay.rpm    //强制安装mplay软件包(显示信息)

     

    # rpm -ivh package-name //安装软件包并显示过程

     

    # rpm -oldpackge mplay.rpm  //降级mplay软件包

     

    # rpm -q http //查询指定的包http是否安装

     

    # rpm -q installed-package-name //查看是否安装

     

    # rpm -q telnet-server //查看telnet服务器包

     

    # rpm -qa //查看系统中已安装的所有rpm包(不分屏)

     

    # rpm -qa|grep ftp //查询指定RPM

     

    # rpm -qa|less //查询已安装RPM(分屏)

     

    # rpm -qf luo //查询文件luo所属的软件包

     

    # rpm -qf package-name //查询某个文件所属的软件包

     

    # rpm -qi http    //查询指定的包http详细信息(已安装)

     

    # rpm -qi package-name //查看软件的描述信息

     

    # rpm -qi Realplayer  //查询RealPlay的安装信息

     

    # rpm -ql http    //查询指定的包http文件列表(已安装)

     

    # rpm -ql package-name //查询软件包的文件列表

     

    # rpm -qp package-name //查询未安装的软件包信息

     

    # rpm -qpi http   //查询指定的包http详细信息(未安装)

     

    # rpm -qpl http   //查询指定的包http文件列表(未安装)

     

    # rpm -U mplay.rpm //升级mplay软件包

     

    # rpm -Uvh package-name //升级软件包并显示过程

     

    # rpm -V package-name //验证软件包的大小,类型等等

     

    # which mount //获得mount所属包可执行文件路径

     

    # for i in ‘rpm -qa |grep -i php’

     

      >do rpm -e $i -nodeps

     

      >done  //删除系统中与软件php相关的所有已安装的软件包

     

    # alias td  //显示别名信息

     

    # alias td=tcpdump  //tcpdump命令设置别名td

     

    # runlevel  //显示当前系统运行等级

     

    # runlevel 2  //设置执行级别

     

    # set  //显示当前的环境变量设置

     

    # set SHELL “/bin/sh”  //设置环境变更SHELL的值为/bin/sh

     

    # setserial -a /dev/ttyS1  //显示串口/dev/ttyS1的详细配置信息

     

    # setserial -v /dev/ttyS1  //显示串口/dev/ttyS1的配置信息

     

    # setup  //用来设置认证、防火墙、鼠标、网络配置、系统服务等公用程序

     

    # fdisk -l  //显示分区信息

     

    # startx & init 5  //进入图形界面

     

    # swapoff /dev/sda3  //卸载交换区/dev/sda3

     

    # swapon /dev/sda3  //加载交换区/dev/sda3

     

    # sync  //将内存信息同步写入磁盘(在一些“危险”操作前使用)

    # system-config-  //连续按两下tab键,调出配制命令列表,以备选用

     

    # tmpwatch -t 100 /tmp/  //查看100小时内未被使用的文件(不删除文件,仅进行测试)

     

    # tmpwatch 100 /tmp/  //删除/tmp目录下100小时内未被使用的文件

     

    # tmpwathc -s 100 /tmp/  //在删除文件之前,使用fuser命令检测该文件是否正被使用

     

    # ulimit -a  //显示系统资源配置

     

    # ulimit -n 1000  //设置同一时间可打开的文件数目

     

    # ulimit -u 500  //设置单用户创建进程上限为500

     

    # ulimit -v 1024  //设置最大虚拟内存数

     

    # unalias td  //删除别名

     

    # unset pwd  //删除环境变量

     

    # up2date  //升级Red Hat Linux系统

     

    # up2date -l  //列出所有可用的升级包

     

     

     

    释放linux系统的内存(在RHEL4.0及以上版本测试通过。注:在应用程序未退出时不能使用该命令):

     

    # free -m

     

    # sync

     

    # echo 3 > /proc/sys/vm/drop_caches

     

    # cat /proc/sys/vm/drop_caches

     

    # free -m

     

     

     

    # ./configure;make;make install  //编译安装过程(cd到安装目录执行)

     

    # sh ./file_name  //安装.run后缀文件

     

    # system-config-packages //启动图形界面包管理程序

     

    # nvidia-settings  //设置nvidia显卡

     

     

     

    为内核打补丁

     

    # bunzip2 patch-2.6.0-rmk2.bz2  //将包解压成patch-2.6.0-rmk2

     

    # mv patch-2.6.0-rmk2 ./linux-2.6.0  //将补丁移到大内核目录

     

    # cd linux-2.6.0   //进入内核目录

     

    # patch -p1 < patch-2.6.0-rmk2   //“<”前后各有一个空格,-p1中的1是数字1。若补丁文件非bz2格式,如gz,则可用以下命令为内核打补丁:

     

    # zcat ./patch-2.6.0-rmk2.gz | patch -p1

     

    # YUM 软件包升级器 - (Fedora, RedHat及类似系统)

     

    # yum install package_name  //下载并安装一个rpm包

     

    # yum localinstall package_name.rpm  //将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系

     

    # yum update package_name.rpm  //更新当前系统中所有安装的rpm包

     

    # yum update package_name  //更新一个rpm包

     

    # yum remove package_name  //删除一个rpm包

     

    # yum list  //列出当前系统中安装的所有包

     

    # yum search package_name  //在rpm仓库中搜寻软件包

     

    # yum clean packages  //清理rpm缓存删除下载的包

     

    # yum clean headers  //删除所有头文件

     

    # yum clean all  //删除所有缓存的包和头文件

     

    # iconv -f big5 -t utf8 vi.big5 -o vi.utf8  //把用big5编码的文件vi.big5转成utf8编码文件vi.utf8

     

    # iconv -f utf8 -t big5 vi.utf8 |

     

    > iconv -f big5 -t gb2312 | iconv -f gb2312 -t utf8 -o vi.gb.utf8  //把用繁体编码的utf8文件vi.utf8转成简体的utf8文件vi.gb.utf8

     

     

     

     

    4、自动作业处理

     

    # /sbin/service anacron restart  //重启anacron服务

     

    # /sbin/service anacron start  //启动anacron服务

     

    # /sbin/service anacron stop  //停止anacron服务

     

    # /usr/sbin/atd  //启动atd守护进程

     

    # at -c 6  //显示已经设置的任务6的内容

     

    # at -l  //查询已设置的任务

     

    # atd  -d  //以输出调试信息的方式运行队列中的任务

     

    # atq  //查询当前已设置的任务

     

    # atrm 3  //删除当前任务队列中的第3个任务

     

    # atrun  //执行已排队的任务

     

    # cat /var/spool/cron/root //查看任务内容

     

    # chkconfig --level 35 crond off //关闭crond服务(在3,5级别)

     

    # chkconfig --level 35 crond on  //启动crond服务(在3,5级别)

     

    # chkconfig --level级别列表 服务名称 [on|off|reset]

     

    # chkconfig --level 24 syslog off //设置syslog 2,4级别的启动状为off

     

    # chkconfig --list 服务名称

     

    # chkconfig --list //显示已运行所有服务的启动状态

     

    # chkconfig --list syslog //显示指定syslog服务的启动状态

     

    # chkconfig服务名 [on,off,reset]

     

    # chkconfig rsync on //设置rsync服务状态为启动

     

    # chkconfig --list crond  //查询crond在各运行级别的启动状态

     

    # chkconfig --list|grep iptables  //查看防火墙状态

     

    # crontab -e //编辑cron任务(编完后,系统默认保存位置是/tmp)

     

    # crontab -l //查看当前的cron任务列表

     

    # crontab -r //删除cron任务

     

    # rpm -qa anacron  //查看系统中是否已安装anacron服务

     

    # rpm -qa crontabs  //检查系统中是否已安装crond服务

     

    # service crond restart  //重启cron服务

     

    # service crond start  //启动crond服务

     

    # service crond status  //查看cron服务启动状态

     

    # service crond stop  //停止crond服务

     

    # pgrep crond  //判断crond 是否在运行

     

    # pkill crond  //杀掉正在运行中的crond

     

    # pgrep crond  //查看是否被杀掉了

     

    # /usr/sbin/crond  //运行crond

     

    # /etc/init.d/crond stop  //停止cron服务

     

    # /etc/init.d/crond restart  //重启cron服务

     

     

     

    5、系统日志

     

    # /sbin/syslogd  //启动syslog日志守护进程

     

    # /sbin/syslogd -r  //守护进程可以接收来自网络的syslog信息

     

    # killall -HUP syslogd  //重新修改配置文件后,重启syslog进程使其生效

     

    # echo > /user/local/apache/logs/error_log  //清空Apache服务日志

     

     

     

    二、用户和用户组管理

     

    # ac  //查看系统总的连接时间

     

    # ac -d  //按天对连接进行汇总

     

    # ac -p  //列出所有用户的连接时间

     

    # cat /etc/shadow  //查看/etc/shadow文件

     

    # chage  //改变用户变更密码的期限,要求用户必须在几天之内变更密码

     

    # chage -l ow2003  //查看ow2003用户密码的有效期

     

    # chfn  //用来改变一个用户的完整用户名和其他信息

     

    # chpasswd  //一次性更新一组现有用户的密码

     

    # chroot /tmp/empty /ls –Rl /  //以/tmp/empty为根运行ls命令

     

    # chsh  //改变用户的缺省登陆shell

     

    # cut -d: -f 1 /etc/group  // 查看系统所有组

     

    # cut -d: -f 1 /etc/passwd  // 查看系统所有用户

     

    # dpasswd  //删除或者更新用户登录shell的拨号密码

     

    # expiry  //检查并强制执行密码失效策略

     

    # faillog  //检查登录失败日志/var/log/faillog,设置允许登录失败的次数或重置失败次数

     

    # finger -l  //列出当前登录用户的相关信息

     

    # finger ow2003  //查看ow2003用户描述信息

     

    # gpasswd  //用来管理/etc/group文件

     

    # grep ow2003 /etc/shadow  //查看ow2003是否禁用(用户名后紧跟!号)

     

    # grep ow2003 /etc/shadow  //查看ow2003是否启用(用户名后无!号)

     

    # groupadd  //建立新的用户组

     

    # groupadd benet //添加benet组

     

    # groupadd -g 502 student  //添加用户组student,GID为502

     

    # groupadd -g benet st03 //添加st03用户并指定属于benet组

     

    # groupdel  //删除用户组

     

    # groupdel benet //删除benet组

     

    # groupmod  //修改用户组

     

    # groupmod -n new_group_name old_group_name   //重命名一个用户组

     

    # groupmod -g 503 teacher  //修改teacher用户的组标识为503

     

    # groupmod -g  550 -n dirctor teacher  //将teacher用户组标识号改为550,用户组名改为director

     

    # groups  //显示当前用户所属的用户组

     

    # grpck  //校验用户组文件的完整性,/etc/group 和 /etc/gshadow

     

    # grpconv  //根据/etc/group文件建立/etc/gshadow文件

     

    # grpunconv  //根据/etc/group和/etc/gshadow文件建立新的/etc/group文件,并删除/etc/gshadow文件

     

    # id  //显示当前用户的UID、GID和用户所属的组列表

     

    # id  用户名 // 查看指定用户信息

     

    # id -g  //显示当前用户的用户组GID

     

    # id -G  //显示所有的用户组GID

     

    # id -G -n  //显示所有的群组名称

     

    # id ow2003  //显示指定用户ow2003的用户信息

     

    # id root  //显示root用户的用户信息

     

    # last  //显示最近用户的登录信息(last命令查找/var/log/wtmp文件)

     

    # last -n 10  //仅显示10行记录

     

    # last -x  //查询最近用户登录情况,同时显示系统关机及系统运行等级变化

     

    # lastb  //显示最近登录失败用户信息(lastb命令查找/var/log/btmp文件)

     

    # lastlog  //格式化并输出最后一个登录日志的内容,或者是某个用户的最近一次登陆内容

     

    # ln /usr/sbin/groupadd /usr/sbin/addgroup  //创建名为addgroup的链接命令,链接到groupadd命令

     

    # login  //系统用它来允许用户登陆

     

    # logname  //显示登录用户的用户名

     

    # logoutd  //用/etc/porttime中的设置强制限制登录时间和端口

     

    # mkpasswd  //读取参数设定的某格式文件并转化至相应的数据库文件格式

     

    # newgrp  //不指定转换的用户组时,系统默认转换为登录时的用户组

     

    # newgrp [-] [groupname]  //选项“-”用于重新加载用户工作环境。如果不带“-”选项,则在切换用户组时,用户的工作环境(包括当前工作目录等)不会改变

     

    # newgrp bin  //改变当前用户的主用户组为bin

     

    # newusers  //批量加入新的用户

     

    # passwd  //修改当前用户的密码

     

    # passwd -d ow2003  //快速删除ow2003用户的密码

     

    # passwd -l ow2003  //锁定ow2003用户使其不能登录

     

    # passwd ow2003  //根用户修改普通用户ow2003的密码

     

    # passwd -u ow2003  //解锁ow2003用户使其可以登录

     

    # pwck  //校验密码文件的完整性,/etc/passwd 和 /etc/shadow

     

    # pwconv  //根据/etc/passwd文件建立/etc/shadow文件(解决两者不匹配时的问题,如用户ow203在passwd中有记录而在shadow中无记录的现象;解决无法进入图形界面的用户和组管理器现象)

     

    # pwunconv  //根据/etc/shadow和/etc/passwd文件建立新的/etc/passwd文件,并删除/etc/shadow文件

     

    # rwho -a  //显示局域网内所有用户

     

    # sg  //设置用户的GID到指定组,或者以指定组的身分执行一个命令

     

    # su -  //切换为根用户

     

    # touch /etc/nologin  //在系统维护期间禁止用户登录(但不限于SSH登录)

     

    # useradd  //添加新的用户或者改变新用户的默认信息

     

    # useradd -D  //显示当前的默认值

     

    # useradd -D -s /bin/csh  //修改该命令所用shell的默认值为/bin/csh

     

    # useradd wxr2 -u 502 -d /home/wxr -s /bin/bash -e 10/30/11 -g 100  //添加一新用户wxr2,UID为502,用户组ID为100,用户目录为/home/wxr,用户的默认shell为/bin/bash,账号的失效期为2011年10月30日

     

    # userdel  /删除用户

     

    # userdel ow2003 //删除 ow2003用户(仅删帐号)

     

    # userdel -r ow2003 //删除 ow2003用户(连同主目录删除)

     

    # usermod  //修改用户信息

     

    # usermod -d /home/wxr2 -s /bin/ksh -g users wxr  //用户登录目录改为/home/wxr2,用户登录shell改为ksh,用户所在组改为users和wxr

     

    # usermod -g benet st03 //设置st03用户新的组名为benet

     

    # usermod -G szxs st03  //添加st03用户到其它组szxs(多组)

     

    # usermod -L ow2003 //禁用ow2003用户

     

    # usermod -U ow2003 //启用ow2003用户

     

    # usermod -u0 -o ow2003 //提升ow2003用户管理员权限

     

    # users  //显示所有登录的用户

     

    # vigr  //能用来编辑 /etc/group 或 /etc/gshadow文件

     

    # vigr /etc/group  //编辑group时自动对该文件加锁,编辑结束时自动解锁

     

    # vipw  //编辑passwd时将自动对该文件加锁,编辑结束时自动解锁

     

    # vipw  //能用来编辑 /etc/passwd 或 /etc/shadow文件

     

    # w -f  //显示登录用户信息,但不显示登录位置(即from字段)

     

    # w -h  //在显示登录用户信息时,不显示标题栏

     

    # w root  //只查询指定用户root的信息

     

    # w -s  //以精简模式显示登录用户信息

     

    # w // 查看当前登陆用户及所进行的操作

     

    # who -H  //显示登录系统的用户信息时,显示标题栏

     

    # who -H -m  //只显示使用当前标准输入设备的用户

     

    # who -H -p  //显示由init进程创建的活动进程

     

    # who -H -u  //显示空闲时间段

     

    # who -q  //显示所有登录的用户名以及登录用户的数目

     

    # who -T -H  //显示用户状态信息

     

    # who  // 显示当前登陆系统的用户

     

    # whoami  //显示当前登录用户名称

    # skill -9 pts/2  //杀掉从pts/2虚拟终端登录的用户

     

    # write wang

     

    EOF  //向登录用户wang发送即将关机的信息

     

    System will shutdown soon!

     

     

     

    三、磁盘管理

     

    # blkid  //列出当前系统中所有已挂载文件系统的类型

     

    # blkid -s LABEL  //仅显示每个(指定)设备相匹配的标签

     

    # blkid /dev/sda1  //查看/dev/sda1设备所采用的文件系统类型

     

    # e2label device [newlabel]  //改变本地设备文件系统的label名称

     

    # dd if=/dev/zero of=f1 bs=10MB count=2  //用虚拟文件f1检查配额情况

     

    # dd if=/dev/sda of=/home/backup/boot_MBR bs=446 count=1  //备份MBR。解决Linux和Windows双系统的引导问题(IED硬盘为hda)

     

    # dd if=/home/backup/boot_MBR of=/dev/sda bs=446 count=1  //恢复MBR

     

    # dd if=/dev/zero of=/home/loopdev bs=1M count=512  //创建一个空的文件在/home/loopdev

     

    # mkfs -t ext3 /home/loopdev  //对/home/loopdev进行格式化

     

    # mount -o loop /home/loopdev /media/cdrom  //挂载/home/loopdev这个loop设备到/media/cdrom目录

     

    # df //用于报告文件系统的总容量,使用量,剩余容量

     

    # df -ah  //查询所有分区使用量,以可被识别的方式展现

     

    # df -h  //以用户容易识别的方式显示磁盘空间使用情况

     

    # df -i  //以inode模式显示磁盘的使用情况

     

    # df -T //查看磁盘格式挂载后的信息

     

    # df -t ext3  //只显示ext3类型磁盘的信息

     

    # df -x ext3  //不显示指定磁盘类型的磁盘使用信息

     

    # dmesg | grep IDE  // 查看启动时IDE设备检测状况

     

    # dmesg | grep DMA  //查看硬盘是否运行在DMA模式

     

    # du -a DirPath  //显示所有文件及其子目录占用的数据块数

     

    # du -a | sort -n > /home/disk_used &  //将显示结果储存到/home/disk_used文件中

     

    # du -b /home  //查看目前/HOME目录的容量(k)及子目录的容量(k)

     

    # du -sh DirPath //以用户易读格式显示目录大小

     

    # du -sk DirPath //查看目录的容量(k)

     

    # du -sm DirPath  //查看目录的容量(m)

     

    # fdisk /dev/sda //对磁盘sda进行分区

     

    # fdisk -l  //查看磁盘及分区信息

     

    # sfdisk -l  //查看磁盘及分区信息

     

    # sfdisk -s  //查看系统中所有磁盘的大小

     

    # fdisk -s /dev/sdb  //显示/dev/sdb设备中所有分区大小总和

     

    # fdisk -s /dev/sdb2  //显示/dev/sdb2分区大小

     

    # fdisk -v  //显示fdisk版本号

     

    # hdparm -i /dev/hda // 查看磁盘参数(仅适用于IDE设备)

     

    # mkfs.ext2 /dev/sda1 //格式化sda1为ext2格式

     

    # mkfs.ext3 /dev/sda2  //格式化sda2为ext3格式

     

    # mount  //显示当前已挂载的文件系统

     

    # mount -a  //搜索/etc/fstab文件中满足条件的文件系统,进行挂载操作。只有root用户可以操作。

     

    # mount -l  //列出所有已经挂载的文件系统列表

     

    # mount /dev/sda1 /bbb //挂载sda1到/bbb目录下

     

    # mount | column -t // 查看挂接的分区状态

     

    # mount -t 文件系统类型 设备路经 访问路经

     

    # mount -t iso9600 /dev/cdrom /mnt/cdrom  //在/mnt/cdrom目录下挂载光驱(iso9600为光盘的标准文件系统类型)

     

    # mount /dev/cdrom  /aaa/   //挂载设备CDROM到/aaa/目录下

     

    # mount -t ntfs-3g /dev/sdb* /mnt/aaa  //不编译内核,mount ntfs分区

     

    # cp /dev/cdrom 123.iso  //将cdrom内容制作成123.iso镜像

     

    # mount -t iso9660 -o loop xxx.iso /path  //挂载ISO文件

     

    # mount -o loop 123.iso /bbb/  //将123.iso镜像文件挂载到/bbb/下

     

    # mount -t isoDVD /dev/cdrom /mnt/cdrom //挂载光驱

     

    # mount -t iso9660 /dev/cdrom /mnt/cdrom  //挂载光盘

     

    # mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2  //挂载fat32分区

     

    # mount -t ntfs -o nls=utf8,umask=000 /dev/hda3 /mnt/hda3  //挂载ntfs分区

     

    # mount -t vfat /dev/hda6 /mnt/cdrom   //挂第一个ide的第六个逻辑分区

     

    # mount -no remount, ro /  //以只读模式重新挂载/分区

     

    # mount -n -o remount, rw /  //以读写模式重新挂载/分区(单用户维护模式时有用)

     

    # umount /aaa/    //卸载目录/aaa

     

    # umount /dev/cdrom  //卸载设备 cdrom

    # showmount -e 10.52.19.4  //显示对方服务器nfs共享目录

    ==========================

    参考:

    mount远程目录并让本地非root用户可读可写

     

    ==========================

     

    # fuser -km /mnt   //当设备繁忙时强制卸载

     

    # eject -n  //查看系统默认的弹出设备

     

    # eject  //弹出默认的设备

     

    # quotastats  //显示系统磁盘空间限制的当前状态

     

    # repquota -a  //显示文件系统的磁盘使用情况

     

    # edquota -u ccnp    //对组ccnp设置配额

     

    # edquota -u st26    //对用户设置配额

     

    # quota -g ccnp   //查看组ccnp配额情况

     

    # quota -u st26   //查看用户st26配额情况

     

    # quotacheck -cmug /     //创建配额文件

     

    # quotacheck -mfvug /    //对文件系统的配额进行一致性检测

     

    # quotaon -a  //启用所有的磁盘配额限制

     

    # quotaon /home  //启用/home的磁盘空间配额

     

    # quotaon -aguv  //不指定分区,使用自动搜索启用磁盘配额

     

    # quotaoff -a  //关闭所有配额限制

     

    # quotaoff /home  //关闭/home的磁盘配额

     

    # quotaoff -aguv  //不指定分区,使用自动搜索关闭磁盘配额

     

    # quotaoff -aguv  //不指定分区,使用自动搜索关闭磁盘配额

     

    # reboot  //重启系统

     

    # swapon /dev/sdb2  //开启交换分区/dev/sdb2

     

    # swapoff /dev/sdb2  //关闭交换分区/dev/sdb2

     

    # swapon -s // 查看所有交换分区

     

    # grep SwapTotal  /proc/meminfo  //查看swap空间大小

     

    # swapoff -a  //关闭所有交换区

     

    # swapon -a  //开启所有交换区(与上面成对使用后可使swap还原到初始状态)

     

    # fdisk /dev/sdb  //由设备分区(sdb1)来创建SWAP分区,注意分区类型82

     

    # mkswap /dev/sdb1  //格式化分区并创建文件系统

     

    # vi /etc/fstab  //添加:/dev/sdb1   swap   swap   defaults   0 0 

     

    # dd if=/dev/zero of=/data1/image/swap bs=1024 count=2048000  //添加交换文件并设置其大小为2G

     

    # mkswap /data1/image/swap  //创建交换空间

     

    # swapon /data1/image/swap  //启动新增加的2G的交换空间

     

    # vi /etc/fstab  //在文件最后加入:/data1/image/swap  swap  swap  defaults 0 0 使得新加的2G交换空间在系统重新启动后自动生效

     

    # vi /etc/fstab //自动挂载磁盘分区,添加: /dev/sdb5 dd ext3 defauls 0 0

     

    # vi /etc/fstab  //修改fstab文件中分区装载设置在defaults后加入usrquota,grpquota 重新挂载文件系统(对根分区设置配额重启)

     

    # sync --version  //显示sync命令版本信息

     

    # sync --help  //显示sync命令的帮助信息

     

    # sync  //将内存数据写入磁盘

     

    # rsync -av -e ssh /home/share/*.doc root@teacher.example.com:/usr/local/share  //将一台名为student.example.com主机上的/home/share目录中的所有doc文件备份到主机teacher.example.com的/usr/local/share目录下

     

    # pvdisplay  //查看组成LVM卷的物理卷(PV)

     

    # pvcreate /dev/sdd  //在二级SCSI控制器的从属驱动器上创建一个新物理卷

     

    # vgcreate myvolume /dev/sdd1 /dev/sdc2  //创建一个名为myvolume的VG

     

    # lvextend -L 2000M /dev/myvolume/mylogical  //对dev/myvolume/mylogical的容量进行添加

     

    # smartctl -H /dev/sdb  //对sdb盘做一下健康自检(PASSED为合格)

     

    # tune2fs -l /dev/sdc1 |grep "Block size"  //查看ext3文件系统的block size(bytes)

     

    Block size:               4096

     

     

     

    四、文件和目录管理

     

    # cat /home/333   //查看/home下文件333的内容(不停顿)

     

    # cd  //进入当前帐户所在目录

     

    # cd 配合通配符*会更方便些

     

    # cd /home/ccc //进入/home/ccc目录

     

    # cd -  //可以回到你之前所在的那个目录

     

    # cd ../..  //返回上两级目录

     

    cp [-adfilprsu] 源文件(source) 目标文件(destination)

    cp [options] source1 source2 source3 … directory

    参数:

    -a:相当于-pdr的意思,见后文(常用);

    -d:若源文件为连接文件属性,则复制连接文件属性而非文件本身;

    -f:若目标文件已存在且无法开启,则删除后再尝试一次;

    -i:若目标文件已存在时,在覆盖时会先询问操作的进行(常用);

    -l:进行硬连接的连接文件创建,而非复制文件本身;

    -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);

    -r:递归持续复制,用于目录的复制行为(常用);

    -s: 复制成为符号链接文件,即“快捷方式”文件;

    -u:若destination比source旧才更新destination。最后需注意的是,如果源文件有两个以上,则最后一个目的文件一定要是“目录”才行。

     

    # cp 333 /home/ccc //复制文件333到/home/ccc下

     

    # cp 333 444 //复制文件333为444(同目录下)

     

    # cp -fr test/ /data1/wxr/  //复制当前路径下的目录test到指定路径/data1/wxr/

     

    # cp .bashrc bashrc  //将 .bashrc 拷贝成 bashrc 这个文件

     

    # cp -a /etc /tmp  //将目录/etc以完整权限复制到/tmp目录

     

    # dos2unix a.txt b.txt  //将dos格式的a.txt转换成unix格式的b.txt

     

    # dos2unix a.txt  //直接将a.txt中的^M符号删除(也可用vi命令(:%s/^m//g)删除)

     

    # scp -rp /path/filename username@remoteIP:/path  //从A机复制到B机

     

    # scp -rp username@remoteIP:/path/filename /path  //从B机复制到A机

     

    # cp /dev/cdrom mycdrom.iso  //将光盘中的内容制成镜像文件,文件名为mycdrom.iso

     

    # cp /dev/cdrom mycdrom.iso &  //将光盘中的内容制成镜像文件,文件名为mycdrom.iso(后台运行,加&)

     

    # dd if=/dev/cdrom of=file.iso  //把 CD/DVD 作成 ISO 文件

     

    # mkisofs -r -o mybackup.iso /home/backup  //将/home/backup目录下的所有文件制成镜像文件,文件名为mybackup.iso

     

    # mount -o loop mybackup.iso /mnt  //将镜像文件mybackup.iso挂接到/mnt目录下

     

    # file 222 //显示文件222的文件类型

     

    # file *  //显示当前目录下所有文件的文件类型

     

    # find /etc -name "host*" -print  //在/etc目录中查找文件名以host开头的文件

     

    # find  //显示当前目录下所有内容(无参数)

     

    # find $HOME -print  //查找当前用户主目录下的所有文件

     

    # find . -group root -exec ls -l { } ;  //查找系统中所有属于root组的文件

     

    # find . -maxdepth 1 -size +1000000c  //查找当前目录下的大于1M的文件

     

    # find . -name "[A-Z]*" -print  //在当前目录及子目录中查找文件名以大写字母开头的文件

     

    # find . -perm -7 -print | xargs chmod o-w  //在当前目录下查找所有用户具有读、写和执行权限的文件,并取消others用户的写权限

     

    # find . -perm 755 -print  //当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件

     

    # find . -type d | sort  //查找当前文件系统中的所有目录并排序

     

    # find . -type d -exec tree {} ; | more  //显示当前目录的目录结构并以树形结构分页显示

     

    # find . -type f -exec ls -l {} ; | more //查当前目录下的所有普通文件,并用ls -l命令将它们分页列出

     

    # find . -type f -perm 644 -exec ls -l { } ;  //让当前目录中文件属主具有读、写权限,且文件所属组的用户和其他用户具有读权限的文件

     

    # find . -type f -print | xargs file  //查找当前目录下的文件属于哪类文件

     

    # find / -name "file*" -print | xargs echo "" > /temp/core.log  //在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中

     

    # find / -type f -size 0 -exec ls -l { } ;  //查找系统中所有文件长度为0的普通文件,并列出它们的完整路径

     

    # find /apps -path "/apps/bin" -prune -o -print  //在/apps目录下(排除/apps/bin目录)查找文件

     

    # find /home -name “*.sgy” –print //查找/home下所有sgy文件

     

    # find /usr/sam -path "/usr/sam/dir1" -prune -o -print  //在/usr/sam目录下查找不在dir1子目录之内的所有文件

     

    # find /var/log -type f -mtime +7 -ok rm { } ;  //查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们

    # find /data/pa/xyz/ -name "*.cgm" -atime +8 -exec rm -f {} ;  //查找并删除8昼夜(不含8昼夜本身)前被访问过的cgm文件

     

    # find ~ -print  //查找当前用户主目录下的所有文件

     

    # find DirPath -type f | wc -l  //查看某目录下有多少个文件

     

    # find -name 11*  //查找文件名包含11的所有文件

     

    # find -user luo  //查找属于用户luo的所有文件

     

    # mv 333 /home/ccc //移动文件333到/home/ccc下

     

    # mv 333 444 //移动文件333为444(同目录下改名)

     

    # mv 目录名 目录名  //目标目录已存在,源目录移到目标目录,目标目录不存在,改名

     

    # rm 333 //删除文件333

     

    # touch 333 //创建333空文件

    chmod ---=0 -w-=2 r--=4  rw-=6 --x=1 -wx=3 r-x=5 rwx=7 s,S,t,T=特殊权限

     

    # chmod [ugoa][+-=][rwx] file

    u=属主 g=属组 o=其它用户 a=所有用户 rwx=读,写,执行

    +-=:加权限,减权限,赋权限

     

    # chown -R ow2003 wxr  //更改目录wxr属于用户ow2003

     

    # chgrp -R ow2003 wxr  //更改目录wxr属于组ow2003

     

    # chgrp root *  //把当前目录中所有文件的组属性设置成root

     

    # chmod 765 111 //为111文件的属主设为完全权限,属组设成读写权,其它用户具有读和执行权限

     

    # chmod a-r 111 //将111文件所有用户撤消读取权限

     

    # chmod g+x 111 //将111文件属组增加执行权限

     

    # chmod o+r 111 //将111文件其它用户增加读取权限

     

    # chmod u+w 111 //将111文件属主增加可写权限

     

    # chmod g-r,o-r 111  //去掉文件111的同组和其他用户的读权限

     

    # chmod o=rwx 111  //重设文件111的其他用户权限为读、写执行

     

    # chown :benet 222 //更改文件222属于组benet

     

    # chown st03 222 //更改文件222属于用户st03

     

    # chown st03:benet 222 //更改文件222属于用户st03组benet

     

    # find / -perm -u+s  //罗列一个系统中所有使用了SUID控制的文件

     

    # chmod u+s /bin/file1  //设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限

     

    # chmod u-s /bin/file1  //禁用一个二进制文件的 SUID位

     

    # chmod g+s /home/public  //设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的

     

    # chmod g-s /home/public  //禁用一个目录的 SGID 位

     

    # chmod o+t /home/public  //设置一个文件的 STIKY 位 - 只允许合法所有人删除文件

     

    # chmod o-t /home/public  //禁用一个目录的 STIKY 位

     

    # cut -d ":" -f 1,7 /etc/passwd  //只显示第一列(user ID)和第 7 列(user shell) 内容

     

    # file  //查看文件类型

     

    # grep 字符 文件名 //根据字符匹配来查看文件部分内容

     

    # head 10 /home/333 //查看/home下文件333的头部10行内容

     

    # less用法:

     

    空格键:向下翻动一页;

     

    [PageDown]:向下翻动一页;

     

    [PageUp]:向上翻动一页;

     

    /字符串:向下查询“字符串”的功能;

     

    ?字符串:向上查询“字符串”的功能;

     

    n:重复前一个查询(与/或?有关);

     

    N:反向重复前一个查询(与/或?有关);

     

    q:离开less这个程序。

     

    # less /home/333 //查看/home下文件333的内容(分屏,可以往前翻页)

     

    # ln -s source_dir destination_dir  //将目标目录链接到源目录。用绝对路径。在与源目录的同级目录处创建。文件链接同理。用ls -l查看,会看到destination_dir -> source_dir 如:

     

    # ln -s /home /disk1

     

    # ls -l

     

    lrwxrwxrwx    1 root   root     4 Apr  7  2010 disk1 -> home/

     

     

     

    # unlink destination_dir  //取消目标目录与源目录的链接

     

    # ll -h  //以用户容易识别的方式的长格式显示当前目录的内容

     

    # lsattr -a  //显示所有文件和内容,包括现行目录“.”与上层目录“..”

     

    # lsattr -R  //递归显示目录下的所有文件和子目录

     

    # lsattr test  //显示文件test有属性

     

    # ls  //以短格式显示当前目录的内容

     

    # ls *  //显示当前目录下的所有文件

     

    # ls -l  //以长格式显示当前目录的内容

     

    # ls -l /home/bbb/   //显示指定目录/home/bbb的内容

     

    # ls -l 111   //只显示当前目录下文件111的信息

     

    # ls c*  //列出当前目录下以字母“c”开头的文件

     

    # ls ??n*  //列出当前目录下所有第3个字母是“n”的文件

     

    # ls [b,c]*  //显示所有以字母b或c开头的文件名

     

    # ls -F | grep /$  //只列子目录(短格式)

     

    # ls -l | grep "^d"  //只列子目录(长格式)

     

    # ls -l |grep "^-"|wc -l  //计算当前目录下的文件数

     

    # ls -l |grep "^d"|wc -l  //计算当前目录下的目录数

     

    # ls -lSr |more   //以尺寸大小排列文件和目录

     

    # ls --color=never  //不要根据文件特性给予颜色

     

    # ls --color=always  //显示颜色

     

    # ls --color=auto  //让系统自行依据设置来判断是否给予颜色

     

    # ls --full-time  //以完整时间模式(包含年、月、日、时、分)输出

     

     

     

    # lsof |grep 文件系统的挂接点  //查看是否有任何程序正在使用挂接点的文件系统

     

    # man -t ls | ps2pdf - ls.pdf  //创建ls命令的pdf格式文件

     

    # man -t manpage | ps2pdf - filename.pdf  //创建man的pdf格式文件

     

    # mkdir ddd   //在当前目录下创建ddd目录

     

    # mkdir -p /a/b/c //创建/a/b/c目录(多层目录)

     

    # mkdir -m a=r wxr  //创建一个目录wxr且指定该目录的属性为对所有用户可读

     

    # mkdir -m 700 /data1/wxr/test  //创建新目录/data1/wxr/test,且指定权限为700

     

    # more /home/333 //查看/home下文件333的内容(仅分屏)

     

    # nl  filename  //显示文件内容时,同时输出行号

     

    # od  filename  //以二进制方式读取文件内容

     

    # pwd //显示当前所在目录

     

    # rmdir ddd   //删除ddd目录(空)

     

    # rm -r ddd   //删除ddd目录(非空,先询问)

     

    # rm -rf ddd //直接删除ddd目录(非空,不询问)

     

    # rm -f /data/*.cgm  //超级用户下删除/data目录下所有.cgm文件(不再询问)

     

    # rm  -i -r ddd  //交互模式删除ddd目录(删除前先询问)

     

    # rm -r ddd/*    //删除ddd目录下文件(不询问)

     

    # sed -n '5,10p' /etc/passwd  //只查看passwd的第5行到第10行内容

     

    # setfacl -m u:ow2003:rwx /home/hoework  //对用户ow2003设置对/homework目录的读、写和执行权限

     

    # setfacl -m u:ow2003:rw /home/hoework  //对用户ow2003设置对/homework目录的读、写权限

     

    # setfacl -m u:dba:r /home/hoework  //对用户组dba设置对/homework目录的读权限

     

    # setfacl l -x u:dba /home/hoework  //删除用户组dba的权限

     

    # setfacl -d g:rw  /home/ftp  //对/home/ftp目录的用户组设定默认的权限为读、写(若组中用户重新指定了权限,则默认的组权限将被覆盖,即具体指定的ACL权限优先于默认ACL权限)

     

    # sort /home/ow2003/dk  //显示文档dk内容并排序

     

    # split -b 900m file file_part  //把文件file以900m增量来分割

     

    # cat file_part* >file  //将分割后的文件重新组装

     

    # tac /home/ow2003/dk  //以逆序显示文档dk内容(注:与cat相反)

     

    # tail 10 /home/333 //查看/home下文件333的尾部10行内

     

    # touch aa  //使用touch命令创建aa文件(aa文件不存在)

     

    # touch aa  //使用touch命令更新文件aa的时间为当前时间(aa文件存在)

     

    # touch aa -t 200808081500.00  //更新文件aa的存取时间为指定时间2008年8月8日15点

     

    # tree  //显示文件和目录由根目录开始的树形结构

     

    # wc /home/ow2003/dk  //显示文档dk的行数、词数和字数

     

    # which ssh  //通过命令which,查找文件ssh(其查找范围由环境变量$PATH设置)

     

    # yes |rm *.cgm  //自动回答rm提出的问题,无需用户再连续输入yes

     

     

     

    五、备份与压缩

     

    # dd if=/dev/sda | gzip -c | ssh user@ip 'dd of=/mnt/backups/sda.dd'  //通过ssh复制整个硬盘到远程目录(带压缩)

     

    # tar -c 创建包;-x 释放包;-v 显示命令过程;-z 代表压缩包;-t 列出包文件(打包时应尽量采用相对路径,而不用绝对路径)         

     

    # tar -cvf wxr.tar wxr //把当前wxr目录打包

     

    # tar -cvf wxr.tar wxr --exclude '*.3dv' --exclude '*.3dh' --exclude '*.cgm' --exclude '*.inp'  //把当前wxr目录打包,并排除.3dv、.3dh、.cgm、.inp文件

     

    # tar -zcvf apache.tar.gz --exclude=c --exclude=d   apache  //若/opt/apache/目录下有 a,b,c,d目录,只打包a 、b目录,不打包c 、d目录

     

    # tar -zcvf wxr.tar.gz wxr //把当前wxr目录打包压缩

     

    # tar -hcvf wxr.tar wxr  //对目录wxr中链接文件也一并打包

     

    # tar -rvf wxr.tar file1  //向wxr.tar包添加文件file1

     

    # tar -tf  wxr.tar //查看包wxr.tar内容

     

    # tar -tzf wxr.tar.gz //查看压缩包wxr.tar.gz的内容

    # tar -jtv -f wxr.tar.bz2 //查看压缩包wxr.tar.bz2的内容

    # tar -jcv -f wxr.tar.bz2 bar/  //将目录bar打包并压缩为wxr.tar.bz2

     

    # tar -jxv -f wxr.tar.bz2  //对压缩包wxr.tar.bz2解压恢复

     

    # tar -jxv -f wxr.tar.bz2 -C bar/  //将压缩包解压到目录bar/      

     

    # tar -xvf  wxr.tar -C /home  //恢复包wxr.tar到指定目录/home

     

    # tar -xvf wxr.tar  //解压缩包wxr.tar

     

    # tar -xzf  wxr.tar.gz -C /home //恢复压缩包wxr.tar.gz到指定目录/home(不带-C则恢复到原目录)

     

    # tar -xzf wxr.tar.gz  //解压缩包wxr.tar.gz    

     

    # tar -xzf wxr.tar.gz blah.txt  //从压缩包wxr.tar.bz2解压出文件blah.txt

     

    # tar -zcvf wxr.tar.gz /project //把目录project打包并压缩

     

    # tar -zxvf wxr.tar.gz    //压缩包的文件解压恢复

    # tar cvf - dir1 dir2 | (cd /dir3; tar xvf - )  //将当前目录dir1 dir2边打包边释放到/dir3目录下

     

    # for ARK in ./*.tar.gz; do tar xvf $ARK; done  //解压当前目录下的所有 .tar.gz 结尾的文件(把当前目录下所有的 .tar.gz 文件的文件名逐一赋给变量 ARK,让 tar 来引用 ARK 变量)

     

    # dump -0f home.dump /home  //将/home目录备份到文件home.dump

     

    # dump -0j -f /root/etc.dump.bz2 /etc  //备份/etc目录并含压缩功能

     

    # restore -rvf home.dump  //恢复home目录

     

    # restore -tf home.dump  //查看备份文件home.dump的文件列表

     

    # dump -w  //查看有无任何文件系统被dump过的数据

     

    # zip -r data.zip data //将data文件夹压缩成了data.zip格式

    # unzip data.zip //将data.zip文件解压到当前文件夹

    # zip -r yasuo.zip abc.txt dir1 //把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip

    # unzip yasuo.zip //解压缩yasuo.zip文件

    # unzip abc?.zip //将当前目录下的abc1.zip,abc2.zip和abc3.zip一起解压缩(?表示一个字符,如果用*表示任意多个字符) 

    # unzip -v large.zip //不解压,只想查看压缩文件large.zip的内容

    # unzip -t large.zip //检验压缩文件large.zip是否下载完全了

    # unzip -j music.zip //用-v选项发现music.zip里有多级目录,且子目录中均为mp3文件,若想把这些文件都下载到第一级目录,而非一层一层建目录

     

    六、网络管理与相关应用

     

    # arp -a | awk '{print $4}'  //得到网卡的 MAC地址

     

    # dd if=/dev/zero bs=4096 count=1048576 | ssh user@ip 'cat > /dev/null'  //不浪费磁盘的情况下测试网络速度(通过 ssh 发送 4 GB 数据到远程主机,但不会占用任何磁盘空间)

     

    # dmesg | grep eth  //显示每个网卡的硬件配置信息

     

    # echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all  //关闭ping

     

    # echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all  //重启ping

     

    # ethtool eth0  //显示或改变网卡设置(参考:man ethtool)

     

    # ifconfig //查看当前有效网络接口信息

     

    # ifconfig -a  //查看当前所有网络接口信息

     

    # ifconfig eth0 //查看指定网络接口eth0信息

     

    # ifconfig eth0 192.168.1.11  //设置eth0接口IP地址(标准掩码)(相当于动态修改IP)

     

    # ifconfig eth0 192.168.1.11 netmask 255.255.255.128 //设置eth0接口IP地址及子网掩码

     

    # ifconfig eth0 hw ether 000C1254D321 //更改网卡物理地址

     

    # ifconfig lo  //查看lo状态

     

    # ifdown eth0  //禁用eth0网络接口

     

    # ifdown lo  //关闭本地回环网络接口

     

    # ifup eth0  //启用eth0网络接口

     

    # ifup lo  //启动本地回环网络接口

    # ip ad sh  //显示IP地址等信息

     

    # iptables -L  // 查看防火墙设置

     

    # iptraf  //可交互式IP网络监控工具

    # mii-tool -v  //查看网卡有关信息

     

    # netconfig  //设置网络环境

     

    # netstat -antp  // 查看所有已经建立的连接

     

    # netstat -apt  //显示所有TCP应用程序所使用的端口号,并显示使用此端口号的进程

     

    # netstat -lntp  // 查看所有监听端口

     

    # netstat -s // 查看网络统计信息

     

    # netstat -tulnp  //目前系统上已在监听的网络连接及其PID

     

    # ping 10.52.19.187  //检测到10.52.19.187之间是否连通

     

    # ping -c 5 10.52.19.187  //向10.52.19.187发送5个分组报文

     

    # ping -s 6553 -c 5 10.52.19.187  //向10.52.19.187发送5个分组、每组大小为6553字节的报文(注:最大分组报文不能超过65507字节)

     

    # ping -c 8 -i 3 -s 1024 -t 25 10.52.19.187  //向10.52.19.187以3秒间隔、包大小1024字节、IP生存期25、8个包发送报文

     

    # route -n  // 查看路由表

     

    # tracepath 10.52.19.189  //显示连接到10.52.19.189的路由

     

    # traceroute -n 10.52.19.190  //对到达10.52.19.190的路由进行跟踪,且使用IP地址表示每一跳主机

     

    # ss  //显示网络套接字信息,它允许显示类似netstat一样的信息

     

    # wget 192.168.20.148  //从网站192.168.20.148下载资料

     

     

     

    动态增加IP

     

    # traceroute 211.148.192.136 //检测到目的IP经过的路由信息

     

    # hostname //查看主机名称

     

    # hostname luo //设置主机名称为 luo

     

    # ping 192.168.1.10 //Ping主机192.168.1.10

     

    # ifconfig eth0 add 10.52.19.147

     

    # ifconfig eth0:0 broadcast 10.52.19.255

     

     

     

    DNS域名

     

    # nslookup 待解析域名(或IP)

     

    # nslookup 211.148.192.136 //反向解析IP---域名

     

    # nslookup www.163.com   //解析指定的域名---IP

     

    # route add default gw 192.168.1.1 //添加默认网关为192.168.1.1

     

    # route del default gw 192.168.1.1 //删除默认网关为192.168.1.1

     

     

     

    NFS服务

     

    # exportfs -auv   //停止输出所有共享目录

     

    # exportfs -av  //输出启用所有共享目录

     

    # exportfs -rv    //重新输出共享目录

     

    # mount -t nfs 192.168.2.10:/luo /wei //在客户机上挂载共享目录到/wei

     

    # service iptables stop //关闭防火墙

     

    # service nfs start //启动nfs服务

     

    # service portmap start //启动portmap服务

     

    # showmount -a    //显示NFS服务器的客户与被挂载目录

     

    # showmount -d    //显示NFS服务器被挂载的目录

     

    # vi /etc/exports  //修改共享配置文件(加共享目录)

     

    showmount -e 192.168.2.10 6  //在客户上查看服务器共享目录

     

     

     

    配置文件

     

    vi /etc/hosts  vi /etc/network //修改主机名称配置文件

     

    vi /etc/rc.local //修改mac地址配置文件

     

    vi /etc/resolv.conf //修改DNS配置文件

     

    vi /etc/sysconfig/network-scripts/ifcfg-eth0 //修改网卡配置文件

     

    vi /var/spool/cron/username  //修改cron任务配置文件

     

    vi /var/spool/mail  //修改邮件配置文件

     

     

     

    七、vi/vim编辑器

     

    也可建立vi到vim的符号连接(即实际调用的是vim)

     

    # mv /bin/vi /bin/vi.bak

     

    # ln -s /usr/bin/vim /bin/vi

     

     

     

    进入vi的命令:

     

    vi  直接进入编辑并创建新文件

     

    vi filename  编辑文件(不存在则创建文件),并将光标置于第一行首

     

    vi +n filename  打开文件,并将光标置于第n行首

     

    vi + filename   打开文件,并将光标置于最后一行首

     

    vi +/pattern filename  打开文件,并将光标置于第一个与pattern匹配的串处

     

    vi -r filename   在上次正用vi编辑时发生系统崩溃,恢复文件

     

    vi file1....filen   打开多个文件,依次进行编辑

     

    vi -o aaa bbb   水平窗口打开aaa,bbb两个文件

     

    vi -O aaa bbb   垂直窗口打开aaa,bbb两个文件(Ctrl+W两次可在多个文件间切换)

     

    多文本编辑的按键:

    :n  编辑下一个文件

    :N  编辑上一个文件

    :files  列出目前这个vi的打开的所有文件

     

    多窗口情况下的按键功能:

    :sp [filename]  打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)

     

    [ctrl]+w+j

    [ctrl]+w+↓   按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头键),则光标可移动到下方的窗口

     

    [ctrl]+w+k

    [ctrl]+w+↑    同上,不过光标移动到上面的窗口

     

    [ctrl]+w+q    其实就是:q结束离开。例如,想要结束下方的窗口,那么利用[ctrl]+w+↓移动到下方窗口后,按下:q即可离开,也可以按下[ctrl]+w+q

     

    块选择的按键意义:

    v  字符选择,将光标经过的地方反白选择

     

    V  行选择,将光标经过的行反白选择

     

    Ctrl + v  块选择,可以用长方形的方式选择数据

     

    y  将反白的地方复制起来

    d  将反白的地方删除

     

     

    恢复命令:

     

    u  恢复最后一个指令之前的结果

    .  继续最后一个指令的执行结果

     

    ctrl+r  撤销恢复

     

    U  恢复光标该行之所有改变

     

     

     

    移动光标命令:

     

    h   光标左移一个字符

     

    l   光标右移一个字符

     

    space  光标右移一个字符

     

    Backspace  光标左移一个字符

     

    k或Ctrl+p  光标上移一行

     

    j或Ctrl+n   光标下移一行

     

    Enter   光标下移一行

     

    w或W   光标右移一个字至字首

     

    b或B   光标左移一个字至字首

     

    e或E   光标右移一个字至字尾

     

    )   光标移至句尾

     

    (   光标移至句首

     

    }  光标移至段落开头

     

    {  光标移至段落结尾

     

    nG  光标移至第n行首

     

    n+  光标下移n行

     

    n-  光标上移n行

     

    n$  光标移至第n行尾

     

    H   光标移至屏幕顶行

     

    M   光标移至屏幕中间行

     

    L   光标移至屏幕最后行

     

    0  (注意是数字零)光标移至当前行首

     

    $  光标移至当前行尾

     

     

     

    翻屏命令:

     

    Ctrl+u  向文件首翻半屏

     

    Ctrl+d  向文件尾翻半屏

     

    Ctrl+f  向文件尾翻一屏

     

    Ctrl+b  向文件首翻一屏

     

    nz  将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

     

     

     

    插入文本、复制与粘贴:

     

    i   在光标前插入

     

    I   在当前行首插入

     

    a  在光标后插入

     

    A  在当前行尾插入

     

    o  在当前行之下新开一行

     

    O  在当前行之上新开一行

     

    r  替换当前字符

     

    R  替换当前字符及其后的字符,直至按ESC键

     

    s  从当前光标位置处开始,以输入的文本替代指定数目的字符

     

    S  删除指定数目的行,并以所输入文本代替之

     

    ncw或nCW  修改指定数目的字

     

    nCC  修改指定数目的行

     

    yy  p  复制当前行,并粘贴到下一行

    nyy  n为数字。复制光标所在的向下n行,例如20yy,则是复制20行

    y1G  复制光标所在行到第一行的所有数据

    yG   复制光标所在行到最后一行的所有数据

    y0    复制光标所在的那个字符到该行行首的所有数据

    y$    复制光标所在的那个字符到该行行尾的所有数据 

     

    shift + i  在该行之首插入字符

     

    shift + a   在该行末尾输入字符

     

    shift + r  改写自光标位置及后面的所有内容

     

    shift +o  在光标之上新增一行输入字符

     

     

     

    删除命令:

     

    ndw或ndW  删除光标处开始及其后的n-1个字

     

    d0  删至行首(为数字0)

     

    d$  删至行尾

    shift + d  剪切至行尾

     

    dd  删除一行

     

    ndd  删除自光标开始的n行

     

    s  删除光标所在之字符,并进入输入模式直到《ESC》

     

    S  删除光标所在之该行资料,并进入输入模式直到《ESC》

     

    x或X  删除一个字符,x删除光标后的,而X删除光标前的

    nx  n为数字,连续向后删除n个字符。如,要连续删除10个字符,则:“10x”

     

    Ctrl+u  删除输入方式下所输入的文本

     

     

     

    搜索及替换命令:

     

    /pattern  从光标开始处向文件尾搜索pattern

     

    ?pattern  从光标开始处向文件首搜索pattern

     

    n  在同一方向重复上一次搜索命令

     

    N  在反方向上重复上一次搜索命令

     

    :s/p1/p2/  替换当前行第一个p1为p2

     

    :s/p1/p2/g  将当前行中所有p1均用p2替代

     

    :n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代

     

    :g/p1/s//p2/g  将文件中所有p1均用p2替换

     

    : 1,$s/old/new/g  将文件中所有的『old』改成『new』

    : 1,$s/old/new/gc  将文件中所有的『old』改成『new』,并在改前提示用户确认

     

    : 10,20s/^/ /  将第10行至第20行资料的最前面插入5个空格

     

    : %s/^m//g  删除文件中所有的^M符号

     

     

     

    选项设置:

     

    all  列出所有选项设置情况

     

    term  设置终端类型

     

    ignorance  在搜索中忽略大小写

     

    list  显示制表位(Ctrl+I)和行尾标志($)

     

    number  显示行号

     

    report  显示由面向行的命令修改过的数目

     

    terse  显示简短的警告信息

     

    warn  在转到别的文件时若没保存当前文件则显示NO write信息

     

    nomagic  允许在搜索模式中,使用前面不带“”的特殊字符

     

    nowrapscan  禁止vi在搜索到达文件两端时,又从另一端开始

     

    mesg  允许vi显示其他用户用write写到自己终端上的信息

     

     

     

    最后行方式命令:

     

    :n1,n2 co n3  将n1行到n2行之间的内容拷贝到第n3行下

     

    :n1,n2 m n3  将n1行到n2行之间的内容移至到第n3行下

     

    :n1,n2 d   将n1行到n2行之间的内容删除

     

    :e filename  打开文件filename进行编辑

     

    :e! dd   强制关闭当前文件(不保存)打开新文件dd

     

    : e!  放弃修改重新编辑 

     

    :q!  不保存文件并退出vi

     

    :r fff 在当前位置读入fff文件

     

    :set nonu 不显示行号

     

    :set nu 显示行号

     

    :w  保存输入的内容到当前文件

     

    :w eee 另存为eee文件

     

    :wq  保存并退出

     

    :x  保存当前文件并退出

     

    :n1,n2 w eee  将文件中n1行至n2行的内容保存成eee文件

    :!command  暂时离开vi到命令行模式下执行command的显示结果。例如,“:! ls /home”即可在vi当中查看/home下面以ls输出的文件信息

     

     

     

    寄存器操作:

     

    "?nyy  将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

     

    "?nyw  将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

     

    "?nyl  将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

     

    "?p  取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

     

    ndd  将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

     

    vim操作环境(不建议修改/etc/vimrc文件;建议手动修改~/.vimrc文件)

     

    vim常用指令示意图

     

     

     

     

     

     

    八、shell编程

     

    # grep $LOGNAME /etc/passwd  //显示当前登录用户使用的shell

     

    # sh  //启动bsh(为Bourne Shell的简称---伯恩shell)

     

    # bash  //启动bash(为Bourne Again Shell的简称)

     

    # csh  //启动C Shell

     

    # type [-tpa] name  //bash shell的内置命令。

    type:不加任何参数时,type会显示出name是外部命令还是bash内置命令

    -t :当加入-t参数时,type会将name以下面这些字眼显示出它的意义:

           file:表示为外部命令

           alias:表示该命令为命令别名所设置的名称;

           builtin:表示该命令为bash内置的命令功能。

    -p :如果后面接的name为外部命令时,才会显示完整文件名;

    -a :会由PATH变量定义的路径中,将所有含name的命令都列出来,包含alias

     

    # cp /var/spool/mail/root  /etc/crontab

    >  /etc/fstab  /root  //将三个文件复制到root目录下(如果命令串太长的话,可以用两行来输出)。“[Enter]”为转义符,“>”为系统自动出现的,不需要输入。

     

    # source  ~/.bashrc  //将主文件夹的~/.bashrc的设置读入目前的bash环境中

     

    # .  ~/.bashrc   //将主文件夹的~/.bashrc的设置读入目前的bash环境中

     

     

    # ll -d /etc/cron*  //找出/etc/下面以cron为开头的文件名

     

    # ll -d /etc/?????  //找出/etc/下面文件名刚好是五个字母的文件名

     

    # ll -d /etc/*[0-9]*  //找出/etc/下面文件名含有数字的文件名

     

    # ll -d /etc/[^a-z]*  //找出/etc/下面文件名开头非为小写字母的文件名

     

    # cp -a /etc/[^a-z]* /tmp  //将上例找到的文件复制到 /tmp中

     

    # last | cut -d  ' '  -f1 | sort  //将输出的数据仅取账号,并加以排序

    # last | cut -d  ' '  -f1 | sort  | uniq  //将输出的数据仅取账号,排序后仅取出一位

    # last | cut -d  ' '  -f1 | sort  | uniq  -c  //将输出的数据仅取账号,排序后仅取出一位并显示每个账号登录的总次数

     

    # last | grep [a-zA-Z] | grep -v ‘wtmp’| wc -l  //显示登录系统的总人数

     

    # last | tee  last.list | cut -d  “ “  -f1  //将last的输出存一份到last.list文件中

     

    # ls -l /home | tee  ~/homefile | more  //将ls的数据存一份到~/homefile,同时屏幕也有输出信息

     

    # ls -l / | tee  -a  ~/homefile | more  //加上-a参数则能将信息累加

     

    # cp /etc/passwd  /root/passwd && unix2dos /root/passwd

     

    # file /etc/passwd /root/passwd

     

    # cat /root/passwd | tr -d  ‘r’ > /root/passwd.linux

     

    # ll  /etc/passwd  /root/passwd*  //将/etc/passwd转存成dos断行到/root/passwd中,再将^M 符号删除。r指的是dos的断行字符 ^M

     

    # cat  -A /etc/man.config

     

    # cat /etc/man.config | col  -x | cat  -A | more  //利用cat  -A 显示所有特殊按键,最后以 col将[tab]转成空白。上面看到的^I符号就是tab,如此一来,[tab]按键会被替换成为空格键,输出就美观多了

     

    # man col > /root/col.man

     

    # vi /root/col.man

     

    # man col | col  -b > /root/col.man  //将col的man page转存成为/root/col.man的纯文本文件

     

    #############################################

     

    通配符与特殊符号

    符号   意义

    *      代表『 0 个到无穷多个』任意字符

    ?      代表『一定有一个』任意字符

    [ ]    同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可能是 a, b, c, d 这四个任何一个』

    [ - ]  若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!

    [^ ]   若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

     

    bash 环境中的特殊符号

    符号   内容

    #      批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不运行

          跳脱符号:将『特殊字符或通配符』还原成一般字符

    |      管线 (pipe):分隔两个管线命令的界定(后两节介绍);

    ;      连续命令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)

    ~      用户的家目录

    $      取用变量前导符:亦即是变量之前需要加的变量取代值

    &      工作控制 (job control):将命令变成背景下工作

    !      逻辑运算意义上的『非』 not 的意思!

    /      目录符号:路径分隔的符号

    >, >>  数据流重导向:输出导向,分别是『取代』与『累加』

    <, <<  数据流重导向:输入导向 

    ' '    单引号,不具有变量置换的功能

    " "    具有变量置换的功能!

    ` `    两个『 ` 』中间为可以先运行的命令,亦可使用 $( )

    ( )    在中间为子 shell 的起始与结束

    { }    在中间为命令区块的组合!

     

    #############################################

     

    # dmesg | grep -n -color=auto ‘eth’  //用dmesg列出内核信息,再以grep找出内含eth的那些行,并显色、加上行号

     

    # dmesg | grep -n -A3 -B2 -color=auto ‘eth’  //承上,在关键字所在行的前两行与后三行也一起找出来显示

     

    #############################################

     基础正则表达式字符 (characters)

     

    ^word

    意义:待查找的字符串(word)在行首

    范例:查找行首为 # 开始的那一行,并列出行号

    grep -n '^#' regular_express.txt

     

    word$

    意义:待查找的字符串(word)在行尾

    范例:将行尾为 ! 的那一行列印出来,并列出行号

    grep -n '!$' regular_express.txt

     

    .

    意义:代表一定有一个任意字符的字符

    范例:查找的字符串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee),亦即 e 与 e 中间“一定”仅有一个字符,而空格符也是字符

    grep -n 'e.e' regular_express.txt

     

    意义:转义字符,将特殊符号的特殊意义去除

    范例:查找含有单引号 ' 的那一行

    grep -n ' regular_express.txt

     

    *

    意义:重复零个到无穷多个的前一个 RE(regular)字符

    范例:找出含有 (es) (ess) (esss) 等等的字符串,注意,因为 * 可以是 0 个,所以 es 也是符合带查找字符串。另外,因为 * 为重复“前一个 RE 字符”的符号, 因此,在 * 之前必须要紧接著一个 RE 字符喔。例如任意字符则为 “.*” 

    grep -n 'ess*' regular_express.txt

     

    [list]

    意义:从字符集合的 RE 字符里面找出想要选取的字符

    范例:查找含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 [] 当中代表一个待查找的字符, 例如“ a[afl]y ”代表查找的字符串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思

    grep -n 'g[ld]' regular_express.txt

     

    [n1-n2]

    意义:从字符集合的 RE 字符里面找出想要选取的字符范围

    范例:查找含有任意数字的那一行。需特别留意,在字符集合 [] 中的减号 - 是有特殊意义的,他代表两个字符之间的所有连续字符。但这个连续与否与 ASCII 编码有关,因此,你的编码需要配置正确(在 bash 当中,需要确定 LANG 与 LANGUAGE 的变量是否正确)。例如所有大写字符则为 [A-Z]

    grep -n '[A-Z]' regular_express.txt

     

    [^list]

    意义:从字符集合的 RE 字符里面找出不要的字符串或范围

    范例:查找的字符串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [] 内时,代表的意义是“反向选择”的意思。例如,我不要大写字符,则为 [^A-Z]。但是,需要特别注意的是,如果以 grep -n [^A-Z] regular_express.txt 来查找,却发现该文件内的所有行都被列出,为什么?因为这个 [^A-Z] 是“非大写字符”的意思, 因为每一行均有非大写字符,例如第一行的 "Open Source" 就有 p,e,n,o等小写字符

    grep -n 'oo[^t]' regular_express.txt

     

    {n,m}

    意义:连续 n 到 m 个的前一个 RE 字符,若为 {n} 则是连续 n 个的前一个 RE 字符,若是 {n,} 则是连续 n 个以上的前一个 RE 字符

    范例:在 g 与 g 之间有2个到3个的o存在的字符串,亦即 (goog)(gooog)

    grep -n 'go{2,3}g' regular_express.txt

    ======================================

    # test -e /pa/lamprj && echo "exist" || echo "Not exist"  //检查/pa/lamprj目录是否存在

     

    ======================================

    文件测试的标志与意义:

     

    关於某个文件名的“文件类型”判断,如 test -e filename 表示存在否

    -e  该文件名是否存在?(常用)

    -f  该文件名是否存在且为文件(file)(常用)

    -d  该文件名是否存在且为目录(directory)(常用)

    -b  该文件名是否存在且为一个 block device 设备

    -c  该文件名是否存在且为一个 character device 设备

    -S  该文件名是否存在且为一个 Socket 文件

    -p  该文件名是否存在且为一个 FIFO (pipe) 文件

    -L  该文件名是否存在且为一个连结文件

     

    关於文件的权限检测,如 test -r filename 表示可读否 (但 root 权限常有例外)

    -r  检测该文件名是否存在且具有“可读”的权限

    -w  检测该文件名是否存在且具有“可写”的权限

    -x  检测该文件名是否存在且具有“可执行”的权限

    -u  检测该文件名是否存在且具有“SUID”的属性

    -g  检测该文件名是否存在且具有“SGID”的属性

    -k  检测该文件名是否存在且具有“Sticky bit”的属性

    -s  检测该文件名是否存在且为“非空白文件”

     

    两个文件之间的比较,如:test file1 -nt file2

    -nt  (newer than)判断 file1 是否比 file2 新

    -ot  (older than)判断 file1 是否比 file2 旧

    -ef  判断 file1 与 file2 是否为同一文件,可用在判断 hard link 的判定上。 主要意义在判定两个文件是否均指向同一个 inode

     

    关於两个整数之间的判定,例如 test n1 -eq n2

    -eq  两数值相等 (equal)

    -ne  两数值不等 (not equal)

    -gt  n1 大於 n2 (greater than)

    -lt  n1 小於 n2 (less than)

    -ge  n1 大於等於 n2 (greater than or equal)

    -le  n1 小於等於 n2 (less than or equal)

     

    判定字串的数据

    test -z string  判定字串是否为 0,若 string 为空字串,则为 true

    test -n string  判定字串是否非为0,若 string 为空字串,则为 false

                       注:-n 亦可省略

     

    test str1 = str2  判定 str1 是否等於 str2 ,若相等,则回传 true

    test str1 != str2 判定 str1 是否不等於 str2 ,若相等,则回传 false

     

    多重条件判定,例如:test -r filename -a -x filename

    -a  两个条件同时成立!例如 test -r file -a -x file,则 file 同时具有 r 与 x 权限时,才回传 true

    -o  任何一个条件成立!例如 test -r file -o -x file,则 file 具有 r 或 x 权限时,就可回传 true

    !   反相状态,如 test ! -x file ,当 file 不具有 x 时,回传 true

     

    =======

    常用shell命令组合

    # kudzu --probe --class=network  //kudzu查看网卡型号

    # ps -e -o "%C : %p : %z : %a"|sort -k5 -nr  //查看进程,按内存从大到小排列

    # ps -e -o "%C : %p : %z : %a"|sort -nr  //按cpu利用率从大到小排列

    # ls /etc/rc3.d/S* |cut -c 15-   //显示运行3级别开启的服务(从中了解到cut的用途,截取数据)

    # ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-  //显示IP地址

    # free -m |grep "Mem" | awk '{print $2}'  //显示内存的大小

    # cat /proc/cpuinfo |grep -c processor  //显示CPU的数量

    # mpstat 1 1  //显示CPU负载

    # du -cks * | sort -rn | head -n 10  //显存当前路径下从大到小排序的前10个文件或目录大小

    # iostat -x 1 2  //磁盘I/O负载

    # sar -n DEV  //网络负载

    # ps aux | wc -l  //进程总数

     

    本文由澳门新葡8455最新网站发布于澳门新葡8455最新网站,转载请注明出处:随即更新

    关键词:

上一篇:64位系统安装jdk

下一篇:没有了