linux命令集

 

快捷键

ctrl+A  光标移动到命令开头
ctrl+E  光标移动到命令结尾
ctrl+C  强制终止当前命令
ctrl+L  清屏
ctrl+U  剪切或删除光标之前的命令
ctrl+K  剪切或删除光标之后的命令
ctrl+Y  粘贴ctrl+U或ctrl+K
ctrl+R  历史命令中搜索
ctrl+D  退出当前终端
ctrl+S  暂停屏幕输出
ctrl+Q  恢复屏幕输出

 

 

线上查询及帮助

[root@node85 ~]# man help (help command内建命令帮助)
NAME
       bash,  :,  .,  [,  alias,  bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue,
       declare, dirs, disown, echo, enable, eval, exec, exit, export, false, fc, fg,  getopts,  hash,  help,  history,
       jobs,  kill,  let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt,
       source, suspend, test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait  -  bash  built-in
       commands, see bash(1)

 

后台进程管理
&  ctrl + z  jobs  fg  bg  nohup

&           这个用在一个命令的最后,可以把这个命令放到后台执行
#ctrl+z       将一个正在前台执行的命令放到后台,并且暂停
#ctrl+c
#jobs        查看当前有多少在后台运行的命令 #fg(foreground) 将后台中的命令调至前台继续运行,如果后台有多个命令,可以用fg
%job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid) #bg(background) 将一个在后台暂停的命令,变成继续执行,如果后台有多个命令,可以用bg %job号将选中的命令调出,%job号是通过jobs命令查到的后台正在执行的命令的序号(不是pid) #nohup        该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为: nohup conmmand &

后台进程的终止:
  1、通过jobs命令查看job号,然后执行kill %job
  2、通过ps命令查看job的进程号,然后执行kill pid

 

进程管理

#ps  report a snapshot of the current processes.    
# ps -ef | head -3
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Apr22 ?        00:00:00 /sbin/init
root          2      0  0 Apr22 ?        00:00:00 [kthreadd]
# ps aux | head -3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19356  1544 ?        Ss   Apr22   0:00 /sbin/init
root          2  0.0  0.0      0     0 ?        S    Apr22   0:00 [kthreadd]
 
                                           
#pstree        display a tree of processes        
# pstree 2615
httpd---8*[httpd]


#top        #nice        #renice        #kill        #killall    #pkill

 

重定向

  0 标准输入        /dev/stdin  文件描述符为0,使用<或<<,数据流向从右到左
  1 标准输出        /dev/stdout 文件描述符为1,使用>或>>,数据流向从右到左
  2 标准错误输出     /dev/stderr 文件描述符为2,使用2>或2>> 2后面不可有空格
  /dev/null 黑洞,下面的方法相同
      1> /dev/null 2>/dev/null
      > /dev/null 2>&1   (使用此种居多)
      &> /dev/null
command  > filename    把标准输出重定向到一个文件中=command 1> filename
    把标准输出重定向到一个文件中
command > filename 2>&1  把标准输出和错误输出一起重定向到一个文件中
command &> filename    把标准输出和错误输出一起重定向到一个文件中
command > filename1 2>filename2 把错误输出和标准输出放入不同文件

command 2>filename      把标准错误输出重定向到一个文件中
command filename2   以filename1作为标准输入,以filename2作为标准输出
command
command <
command <&m          把文件描述符m作为标准输入
command >&m          把标准输出重定向到文件描述符m中
command <&-           关闭标准输入
command >/dev/null


 

文件与目录操作处理

                                                                
#ls    查看目录列表                                                                      
  -l  长格式显示
  -i  显示每个文件的inode号
  -ld  长格式显示目录的属性
  -F  append indicator (one of */=>@|) to entries 对不同的类型加标识符
  -p  给目录加斜线
  -lrt  最后一个是最新文件   t 时间排序  r  倒着排
  --colour=auto  给不同颜色加颜色
  -a  显示隐藏文件 -A同a,不显示 .及..
  -S  根据文件大小排序
  -t  以文件修改时间排序
  --time-style=long-iso  长时间格式


#cd    路径切换                                                                           
       cd -  切换至上一次所在目录


#cp   [-aifpru] 源 目标
    默认alias成cp -i,有重名时提示是否覆盖。#/bin/cp和#\cp直接使用cp命令
    -r   递归,用于复制目录
    -p   保持属性
    -a   相当于pdr
    -a, --archive    等于-dR --preserve=all
        --backup[=CONTROL    为每个已存在的目标文件创建备份
    -b  类似--backup 但不接受参数
       --copy-contents        在递归处理是复制特殊文件内容
    -d                等于--no-dereference --preserve=links
    -f, --force        如果目标文件无法打开则将其移除并重试(当 -n 选项存在时则不需再选此项)
    -i, --interactive 覆盖前询问(使前面的 -n 选项失效)
    -H          跟随源文件中的命令行符号链接
    -l, --link      链接文件而不复制
    -L, --dereference   总是跟随符号链接
    -n, --no-clobber   不要覆盖已存在的文件(使前面的 -i 选项失效)
    -P, --no-dereference   不跟随源文件中的符号链接
    -p                等于--preserve=模式,所有权,时间戳
        --preserve[=属性列表   保持指定的属性(默认:模式,所有权,时间戳),如果
                   可能保持附加属性:环境、链接、xattr 等
    -R, -r, --recursive  复制目录及目录内的所有项目

#find   -type   f文件、d目录  l连接、p管道、 c字符设备、b快文件、s socket文件   
  -a=and   -o=or  !=-not
  -maxdepth     #find /home/  -maxdepth 1
  -perm         # find ./ -perm 644
  -name         # find /home/ -name "*user*" 查找home目录下包含user的文件和目录
  -iname     不区分大小写
  -empty    空文件
  -size         #find /boot -size +2M
  -newer file1 !file2  new于file1,旧于file2
  -atime(acess time)  文件访问时间
  -ctime(change time) 文件的索引节点(即属性)发生改变。ls -lc filename
  -mtime (modify time) 文件文本内容发生变化。ls -lu filename
  注意:#stat filename查看文件属性信息。#ls -l filename  列出文件的修改时间
    find /目录  -type f或d -exec rm -f {} \;  ==》“{”表示查找出的内容,“\”固定语法
    find /目录  -type f或d | xargs rm -f  
    find /目录  -type f ! -name "filename" | xargs rm -f  保留一个文件
   find /目录 -type f -name *.sh | xargs sed -i 's#a#b#g'


#mkdir   创建目录                                                                         
    -p        递归创建目录
    -m 777    创建目录权限为777
    -v,       每次创建新目录都显示信息

#mv  move (rename) files                                                                    
  -b :若需覆盖文件,则覆盖前先行备份。
  -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;危险
  -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  -u :若目标文件已经存在,且 source 比较新,才会更新(update)

#pwd                                                                           

#rename  rename from to file...                                                                           
    批量改文件名 stu_102999_1.finished.jpg取掉finished [# for i in `seq 10`;do touch stu_102999_$i.finished.jpg;done创建实验数据
    方法a、脚本实现
        for f  in `ls  *finished*.jpg'
        do
        mv  $f  `echo $f | sed 's#finished##g'
        done
        ==># for f in `ls *finished*`;do mv $f `echo $f |sed s#finished##g`;done
    方法b、
        ls *.jpg | awk -F "-finished" '{print "mv " $0,$1$2} |bash    逗号等于空格
        ls *.jpg | awk -F "-finished" '{print "mv " $0 " " $1$2} |bash
    方法c
        # find ./ -type f -name "*.finished*" | sed -r 's#(.*).finished(.*)# mv & \1\2#g' | bash
    方法d
        rename ".finished" "" *.jpg    即把需要去除的内容置为空

#rm                                                                        
    生产环境,尽量不用,一定要的话先备份,或者移动到一个临时目录,或者使用find 删除)
  -f  force无提示
  -r  递归删除目录
    rmdir 删除空目录

#rmdir  remove empty directories                                                 

#touch    创建文件,若文件存在,更新时间戳                                           
    touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间
  -a  或--time=atime或--time=access或--time=use  只更改存取时间。
  -c  或--no-create  不建立任何文档。
  -d  使用指定的日期时间,而非现在的时间。
  -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
  -m  或--time=mtime或--time=modify  只更改变动时间。
  -r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
  -t  使用指定的日期时间,而非现在的时间。




#tree 结构化显示目录文件,通过yum install tree安装                                        
  -L 层数
  -d 显示目录

#dirname                                                                     
  #dirname /usr/bin/sort     ==> "/usr/bin"
  #dirname stdio.h           ==> "."

#basename                                                                      
  #basename /usr/bin/sort         ==> "sort"
  #basename include/stdio.h .h    ==> "stdio"

#chattr    设置特殊属性   #lsattr                                                       
  chattr +i filename    文件不可变,不可删除
  chattr +a filename    设置文件只能添加内容

#file    determine file type                                                        

#md5sum   compute and check MD5 message digest                                                                  

#ln                                                                            
    硬链接#ln       源文件   目标文件
    软连接#ln  -s   源文件   目标文件


查看文件和处理                                                                   
cat  rev   tac   more   less   head   tail    cut   split   paste   sort   uniq   wc   iconv   dos2unix
file    grep  awk  sed  tee  scp
#cat   查看文件内容  -n显示行号 -b显示行号(空行不编号)   #tac 逆反,颠倒行序                                                            
    #cat >> filename <    #cat filename1 >>filename2  
    #cat filename1 filename2 >filename3
   #cat >file1 (ctrl+D)
    -v, --show-nonprinting DOS字符显示
              use ^ and M- notation, except for LFD and TAB
  -E, 行尾加$
  -s, 压缩空行
  -T, tab键以^I代替

#rev
  # echo 123456 | rev
  654321
  
  

#unix2dos    UNIX to DOS text file format converter

#tee      read from standard input and write to standard output and files标准输入并创建拷贝副本                                                             
    tee - read from standard input and write to standard output and files标准输入并创建拷贝副本
    tee [OPTION]... [FILE]...
        -a 追加
    # uname -a | tee -a uanme.txt  显示并追加到文件
#more
  空格 一屏幕
  b  返回一屏幕
  回车 翻一行
  =    显示当前行
  /  搜索  
  
#less  

#head    

#tail                                                                                                  
  tail -15 filename
  head -30 file name |tail -11    取20到30行
  tail -f filename            跟踪文件尾部输出


#split   用于将大文件分割成多个小文件                                              
    #split -10 filename split      文件被分割成 splita  splitb... splitj

#paste                                                                         

#wc                                                                           
    -c 统计字节数(空格也算,另外会多统计一个),例如文件只包含a字符,统计结果是2个字节
    -l 统计行数
    -m 统计字符数,这个标志不能与 -c 标志一起使用。
    -w 统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串。
    -L 打印最长行的长度
  # echo www.baidu.com/1.html | wc                          
      1       1      21 (行数  单词数  字符数)
#iconv   字符编码转换                                                            
    -l列出当前支持的字符便面
#scp                                                                        
    -P     指定端口
    -p     Preserves modification times, access times, and modes from the original file.
    -r     Recursively copy entire directories.
#tar                                                                          
    tar -cf archive.tar foo bar                                                                
     -c 建立压缩文件
     -x 解开压缩文件
     -t 查看压缩文件
     -z gzip压缩
     -f  file
     --exclude=file  排除文件
     -X   exclude from listfile
#unzip    #gzip (扩展名为".gz")#zip


 

信息显示命令

uname   hostname   dmesg   uptime   file   stat   du   df   free   date   cal
#uname                                                                       
    -r内核  -m 位  -n主机名  -a所有  
#
hostname 查看主机名
#dmesg 查看内核打印的错误信息 dmesg是一种程序,用于检测和控制内核环缓冲。程序用来助用户了解系统的启动信息。 Linux命令dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。可利用dmesg来查看。可以从中获得诸如系统架构、cpu、挂载的硬件,RAM等多个运行级别的大量的系统信息。当计算机启动时,系统内核(操作系统的核心部分)将会被加载到内存中。在加载的过程中会显示很多的信息,在这些信息中我们可以看到内核检测硬件设备。开机信息亦保存在
/var/log目录中,名称为dmesg的文件里。 dmesg | grep sd 过滤硬盘设备 dmesg | grep -i usb | head -15 dmesg | grep -i dma | head -15 dmesg | grep -i tty | head -15 dmesg | grep -i memory | head -15 dmesg -c #清ring buffer,不会清‘/var/log/dmesg’文件中的日志,连接新的设备都会产生dmesg日志输出。   -h:以人类可读的方式显示   -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小   -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小   -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和   -l :统计硬链接占用磁盘空间的大小   -L:统计符号链接所指向的文件占用的磁盘空间大小 #df -h:以人类可读的方式显示 -i:显示inode信息 -T:显示出文件系统类型 --sync:先执行sync后统计使用信息 #date #date +%H:%M:%S 06:17:33 # date +%F 2017-02-19 # date +%Y/%m/%d 2017/02/19 # date +%F -d "+2day" 2017-02-21 # date +%F -d "-2day" 2017-02-17 #cal displays a calendar

 

 

搜索文件命令

which   find   whereis   locate
#which  查找命令所在路径                                                      
    搜索全局变量PATH的路径(小窍门:在某目录建立文件并加可执行,并且export PATH临时加入路径,就可以which了)
    # which cp
        alias cp='cp -i'
            /bin/cp
#whereis  locate the binary, source, and manual page files for a command                        
    [root@node81 home]# whereis cp
        cp: /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
    [root@node81 home]# whereis -b cp  -b  Search only for binaries.
#locate(设置列gid)  查找命令所在路径或信息从/var/lib/mlocate/mlocate.db中查找,updatedb更新

用户管理命令

useradd     usermod   userdel  groupadd  passwd  chage  id   su
 sudo  visudo
#visudo 即编辑sudo配置文件(/etc/sudoers)  -c检查语法                              
#sudo   sudo授权后,执行命令时需要命令前带sudo
#useradd     (#usermod改变属性)    #userdel   -r 删除用户连家目录                    
    -c 建立时可以对账号进行描述 已有的用usermod -c
    -d  指定家目录
    -e  账号过期时间
    -f  几日后停权
    -g  指定组(不再创建自身组)
    -G  定义为多个组,逗号分开
    -m 指定家目录
    -M 不创建家目录
    -s  指定shell 
    -u 指定uid
#groupadd  #groupdel  #passwd                                                  
#chage                                                                      
    -l username  查看用户账号密码过期信息
    -E 更改账户过期时间
#id                                                                           
    # useradd gtms -G root
    # id gtms
        uid=500(gtms) gid=500(gtms) groups=500(gtms),0(root)
#su      

查看用户登录信息的命令              
whoami   who   w  last   lastlog  users  finger
#whoami     显示当前用户 print effective userid        
 root
#who        显示当前登录的所有用户show who is logged on       
 root     pts/0        2017-02-04 21:09 (192.168.0.102)
 root     pts/1        2017-02-04 23:17 (192.168.0.102)
#w    Show who is logged on and what they are doing.      
 23:25:01 up  2:16,  2 users,  load average: 0.00, 0.00, 0.00
 USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
 root     pts/0    192.168.0.102    21:09    2:06   0.33s  0.00s man users
 root     pts/1    192.168.0.102    23:17    0.00s  0.00s  0.00s w
#last     显示最近登录用户show listing of last logged in users     
 gtms     pts/2        192.168.0.102    Sat Feb  4 23:27   still logged in  
 root     pts/1        192.168.0.102    Sat Feb  4 23:17   still logged in  
 root     pts/0        192.168.0.102    Sat Feb  4 21:09   still logged in  
 reboot   system boot  2.6.32-573.el6.x Sat Feb  4 21:08 - 23:28  (02:19)   
 root     pts/1        192.168.0.102    Sat Feb  4 04:36 - down   (02:46)
#lastlog - reports the most recent login of all users or of a given user
 lastlog | tail -3    显示所有用户最近一次登录情况
 sshd                                       **Never logged in**
 tcpdump                                    **Never logged in**
 gtms             pts/2    192.168.0.102    Sat Feb  4 23:27:01 +0800 2017
#users     查看当前登录的用户列表,仅显示用户名                                     
 gtms root root 
#finger    查看用户信息- user information lookup program (需要yun install)   
 #finger gtms
 Login: gtms                             Name:
 Directory: /home/gtms                   Shell: /bin/bash
 On since Sat Feb  4 23:27 (CST) on pts/2 from 192.168.0.102
    8 minutes 41 seconds idle
 No mail.
 No Plan.

基础网络操作命令

基础网络操作命令                                                                
telnet    ssh      wget     ping   route   ifconfig  ifup    ifdown  netstat
#telnet        #ssh                                                            
#wget                                                                       
    --spider URL        爬虫,检查网站是不是好的,不下载
     --tries          指定重试的次数
     -q
    -T,–timeout=SECONDS     设置超时时间
    -r,–recursive             下载整个网站、目录(小心使用) 
    –http-user=USER        设置HTTP用户
    –http-passwd=PASS        设置HTTP密码
    –proxy-user=USER        设置代理用户
    –proxy-passwd=PASS        设置代理密码
#ping                                                                           
    -c    指定次数
    -i    指定间隔
    -R    显示路由过程
    -I    指定网络接口

#route                                                                       
    route add default gw {IP-ADDRESS} {INTERFACE-NAME}    设定默认路由
    route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}指定网络的路由规则
    http://oldboy.blog.51cto.com/2561410/1119453    http://oldboy.blog.51cto.com/2561410/974194
#ifconfig    #ifup    #ifdown     #ip addr                                    
    ip addr { add | del } IPADDR dev STRING
    #ip addr add 192.168.0.26/24 dev eth0 加的用ip add查看(重启失效)
    #ip addr del 192.168.0.26/24 dev eth0 
    #ifconfig eth0 add 192.168.0.22 (最多好像只能一个,但是加的看的到) (重启失效)
    #ifconfig eth0:0 del 192.168.0.22

#netstat                                                                     
    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态
    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。


深入网络操作命令
nmap   lsof   route  mail   mutt   nslookup   dig   host   tracerroute fuser
#nmap                                                                       
    nmap [Scan Type(s)] [Options] {target specification}
    nmap 192.168.0.1-100        扫描地址段
    --exclude ip            排除ip
    -p                     扫描指定端口
    -sV                    扫描时显示打开的服务版本号

#lsof      文件系统挂载点                                                    
    lsof /boot       
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1787 root  cwd    DIR    8,1     1024   12 /boot/grub
    vi      1815 root  cwd    DIR    8,1     1024   12 /boot/grub
    vi      1815 root    4u   REG    8,1    12288   39 /boot/grub/.grub.conf.swp
    lsof -p 30297        显示那些文件被pid为30297的进程打开
    lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr| more 查看各个进程打开文件句柄的数目,若进程打开文件    句柄的数目超过系统限制,则相应进程不能正常服务
    lsof命令后直接接文件名,可以查到该文件被哪些进程打开:
    lsof -i:port 查看端口

    [root@node90 home]# umount /dev/cdrom
            umount: /tmp: device is busy.
                (In some cases useful info about processes that use
                 the device is found by lsof(8) or fuser(1))
    [root@node90 home]# fuser /dev/cdrom
    [root@node90 home]# fuser /tmp
    [root@node90 home]# lsof /tmp
    COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    bash    1649 root  cwd    DIR   11,0   528384 1984 /tmp/Packages
#fuser    identify processes using files or sockets                                    


#mail       #mutt强大的mail客户端                                               
    -s     邮件标题
    mail -s test [email protected] 编辑完内容后Ctrl-D结束
    echo “mail content”|mail -s test [email protected]
    mail -s test [email protected]< file
    yum install  -y sharutils带附件
    uuencode /home/log.txt log.txt | mail -s logstat [email protected]

#nslookup   query Internet name servers interactively                                    
#dig          DNS lookup utility                                                    
            查询域名的A记录 CNAME,MX记录信息
#host       将域名解析为ip                                                             
#tracerroute    print the route packets trace to network host                                   

 

有关磁盘与文件系统的命令

mount  umount  df  du  fsck  dd  dumpe2fs  dump  fdisk  parted   mkfs  partprobe 
e2fsck     sync   resize2fs  blkid
#mount        查看内核追踪到的已挂载的所有设备:cat /proc/mounts #umount                                                                     
命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir
    device:指明要挂载的设备;
        (1) 设备文件:例如/dev/sda5
        (2) 卷标:-L 'LABEL', 例如 -L 'MYDATA'
        (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
        (4) 伪文件系统名称:proc, sysfs, devtmpfs, configfs
    常用命令选项:
            -t vsftype:指定要挂载的设备上的文件系统类型;
           -r: readonly,只读挂载;
            -w: read and write, 读写挂载;
            -n: 不更新/etc/mtab; 
            -a:自动挂载所有支持自动挂载的设备;定义在/etc/fstab,且挂载选项中有“自动挂载”功能
            -L 'LABEL': 以卷标指定挂载设备;
           -U 'UUID': 以UUID指定要挂载的设备;
            -B, --bind: 绑定目录到另一个目录上;
    -o options:(挂载文件系统的选项,逗号分隔,defaults:rw, suid, dev, exec, auto, nouser, and async)
          async:异步模式;
          sync:同步模式;
          atime/noatime:包含目录和文件;
          diratime/nodiratime:目录的访问时间戳
          auto/noauto:是否支持自动挂载
          exec/noexec:是否支持将文件系统上应用程序运行为进程
          dev/nodev:是否支持在此文件系统上使用设备文件;
          suid/nosuid:是否支持在此文件系统上使用特殊权限
         remount:重新挂载
          ro:只读
          rw:读写
          user/nouser:是否允许普通用户挂载此设备
          acl:启用此文件系统上的acl功能
#fsck check and repair a Linux file system                                     
        不要检查好的磁盘,切记卸载状态检查
    -a:自动修复文件系统,不询问任何问题; 
    -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统; 
    -C : 显示完整的检查进度
    -N:不执行指令,仅列出实际执行会进行的动作; 
    -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统; 
    -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式; 
    -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查; 
    -s:依序执行检查作业,而非同时执行; 
    -t<文件系统类型>:指定要检查的文件系统类型;
    -T:执行fsck指令时,不显示标题信息; 
    -V:显示指令执行过程。
#e2fsck  check a Linux ext2/ext3/ext4 file system    ,umount状态,根目录则需要单用户模式        
    -a: 检查 partition,如发现问题会自动修复。
    -b: 设定 superblock 位置。 www.2cto.com  
    -B size: 指定 size 作为区块大小。
    -c: 检查 partition 是否有坏轨。
    -C file: 将检查结果储存到 file-d: 输出 e2fsck debug 结果。
    -f: e2fsck 预设只会对错误的档案系统检查,加上 -f 是强制检查。
    -F: 在检查前将硬盘的 buffer cache 清空,避免发生错误。
    -l list: 记录了坏轨区块加入 list 中。
    -d : 打印 e2fsck 的 debug 结果。
    -f : 强制检查。
    -n: 以 (read-only) 开启档案系统
    -p: 关闭互动模式,如有问题自动修复,等同 -a。
    -v: 显示详细报告。
    -y: 启用使用者互动模式。
#dd    convert and copy a file                                                                             
    /dev/zero,是一个输入设备,你可你用它来初始化文件。该设备无穷尽地提供0,可以使用任何你需    要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。
    /dev/null——它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息    以标准输出显示或写入文件,那么可以将消息重定向到位桶。外
    dd if=/dev/zero of=tmp.5G bs=1G count=5  从/dev/zero每次读取1G数据,读5次,写入tmp.5G     if=FILE           指定输入文件,若不指定则从标注输入读取。
    of=FILE           指定输出文件,若不指定则输出到标准输出
    bs=BYTES        每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs                指定,若使用bs,则表示是ibs和obs都是用该参数
        ibs=bytes 一次读入bytes个字节,即指定一个块大小为bytes个字节。
        obs=bytes 一次输出bytes个字节,即指定一个块大小为bytes个字节。
    count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数)
整盘备份
dd if=/dev/hdb of=/dev/hdd      /dev/hdb整盘备份到/dev/hdd
dd if=/dev/hdb of=/root/image    将/dev/hdb全盘备份到image文件dd if=/dev/hdb | gzip > /root/image.gz
dd if=/root/image of=/dev/hdb    恢复。gzip -dc /root/image.gz | dd of=/dev/hdb
MBR备份
dd if=/dev/hda of=/root/image count=1 bs=512  备份磁盘开始的512个字节大小的MBR信息到指定文件
count=1指仅拷贝一个块;bs=512指块大小为512个字节。
dd if=/root/image of=/dev/had    将备份的MBR信息写到磁盘开始部分
备份软盘
dd if=/dev/fd0 of=disk.img count=1 bs=1440k (即块大小为1.44M)
拷贝内存内容到硬盘
dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)
拷贝光盘,并保存为cd.iso文件
dd if=/dev/cdrom(hdc) of=/root/cd.iso
增加swap分区文件大小
第一步:创建一个大小为256M的文件:dd if=/dev/zero of=/swapfile bs=1024 count=262144
第二步:把这个文件变成swap文件:mkswap /swapfile
第三步:启用这个swap文件:swapon /swapfile
编辑/etc/fstab文件,使在每次开机时自动加载swap文件:/swapfile swap swap default 0 0
销毁磁盘数据,
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。
dd if=/dev/urandom of=/dev/hda1
测试硬盘的读写速度
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度。
确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
修复硬盘:
dd if=/dev/sda of=/dev/sda 或dd if=/dev/hda of=/dev/hda
当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的。

利用netcat远程备份
dd if=/dev/hda bs=16065b | netcat < targethost-IP > 1234
在源主机上执行此命令备份/dev/hda
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
在目的主机上执行此命令来接收数据并写入/dev/hdc
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
以上两条指令是目的主机指令的变化分别采用bzip2、gzip对数据进行压缩,并将备份文件保存在当前目录。
将一个很大的视频文件中的第i个字节的值改成0x41(也就是大写字母A的ASCII值)
echo A | dd of=bigfile seek=$i bs=1 count=1 conv=notrunc
#dumpe2fs   dump ext2/3/4  filesystem information                                    
    -h    只显示超级快信息
#dump    ext2/3/4 filesystem backup                                                
#disk    artition table manipulator for Linux                                         
    -l 查看磁盘及分区
#parted                                                                        
6块600g raid5   损失一块盘共3T,raid界面做部分做虚拟磁盘 200G分区装系统。其他parted分区
GPT分区:
GPT,全局唯一标识分区表(GUID Partition Table),GUID,与MBR最大4个分区表项的限制相比,GPT对分区数量没有限制,但Windows最大仅支持128个GPT分区。GPT可管理硬盘大小达到了18EB(1EB=1024PB=1,048,576TB),不过NTFS格式最大仅支持256TB。(大于16T 使用XFS   e2fsprogs)
[root@localhost ~]# rpm-qf `which parted`
parted-3.1-20.el7.x86_64
查看parted命令的帮助信息:
[root@localhost ~]#parted --help或
[root@localhost ~]#parted
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted!Type 'help' to view a list of commands.
(parted) help            
(parted) quit                      #退出
#开始通过parted工具来对磁盘进行操作
[root@localhost ~]#parted -l
[root@localhost ~]#parted /dev/sdb  
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted!Type 'help' to view a list of commands.
(parted) p                               #查看磁盘分区状态
Error: /dev/sdb:unrecognised disk label                    
(parted) mklabel                       #指定创建分区表类型为GPT
New disk label type? gpt    
(parted) mkpart                  #创建分区                                              
Partition name?  []? mydisk1                                              
File system type?  [ext2]?       #指定分区文件系统类型,默认就可以,因为后期对分区进行格式化的时候,同样可以指定                                              
Start? 1                                  #指定分区起始位置                                                          
End? 100M                        #指定分区结束位置                                                    
(parted) p                        #查看磁盘分区状态
Number  Start  End     Size    File system Name     Flags
1      1049kB  99.6MB  98.6MB             mydisk1
(parted) mkpart 
Partition name?  []? 2                                                    
File system type?  [ext2]?                                               
Start? 100M                                                               
End? 200M                                                                 
(parted) p                                                               
Model: VMware, VMwareVirtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size(logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start  End     Size    File system Name     Flags
 1     1049kB  99.6MB  98.6MB               mydisk1
 2     99.6MB  200MB   101MB                2
(parted) quit                                                             
Information: You mayneed to update /etc/fstab.

parted快速分区
parted /dev/sdb mklabel gpt yes
parted /dev/sdb mkpart primary ext4 1 1000 ignore
parted /dev/sdb mkpart primary ext4 1001 2000 ignore
parted /dev/sdb   查看
#mkfs     build a Linux file system                                                
    -t<文件系统类型>    指定要建立何种文件系统;
    -c:                在制做档案系统前,检查该partition是否有坏轨。
#partprobe    inform the OS of partition table changes                            
#sync   flush file system buffers                                                
#resize2fs   ext2/ext3/ext4 file system resizer                                    
#blkid     显示磁盘分区与UUID对应信息及文件系统类型                                


关机和查看系统信息的命令                                                        
#shutdown  #halt   #init


系统安全相关                                                                    
chmod  chown    chgrp   chage  passwd   su  sudo  umask  chattr  lsattr
#chmod  change file mode bits                                                        
    chmod u+x,g=x,o-x file name
    -R  递归
#chown    change file owner and group                                                    
    -R  递归
    chown root /u
    chown root:staff /u
    chown -hR root /u
#chgrp     change group ownership                                                    
    -R  递归
    chgrp staff /u
    chgrp -hR staff /u

#umask                                                                        
    当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是    umask干的事情。umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置    的是权限“补码”,而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、    $[HOME]/.bash_profile、$[HOME]/.profile或$[HOME]/.bashrc中设置umask值。
文件默认权限=666减umask
目录默认权限=777减umask
umask: umask [-p] [-S] [mode]
    Display or set file mode mask.
[root@shell ~]# umask -p
umask 0022
[root@shell ~]# umask -S
u=rwx,g=rx,o=rx

 

 

 

其他                                                                            
echo   print   rpm   yum   watch   alias   unslias  date   clear 
#history (配置文件需要source)/etc/profile   ~/.bash_history                            
    默认1000 相对来说越少越安全/etc/profile =>HISTSIZE=1000
    -c    清空历史记录
    -d 数字  清除那一行
   -w    将缓存命令写入文件中 ~/.bash_history  export HISTSIZE
=10 临时控制当前历史记录回滚数 export HISTFILESIE=10 临时控制历史记录文件的命令数量变量cat ~/.bash_history
  !n  重复执行第n条历史命令
  !!  重复执行上一条命令
  !string 重复执行最后一条以该字符串开头的命令
#
eject eject removable media #time time a simple command or give resource usage #nc arbitrary 随意的TCP and UDP connections and listens 常见使用 1、远程拷贝文件 [root@hatest2 tmp]# nc -lp 1234 > install.log 将接收到的文件名字定为install.log [root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log 将install.log发送给hatest2 2、克隆硬盘或分区 操作与上面的拷贝是雷同的,只需要由dd获得硬盘或分区的数据,然后传输即可。 克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工具光盘)启动系统后,在server2上进行类似的监听动作: # nc -l -p 1234 | dd of=/dev/sda server1上执行传输,即可完成从server1克隆sda硬盘到server2的任务: # dd if=/dev/sda | nc 192.168.228.222 1234 ※ 完成上述工作的前提,是需要落实光盘的拯救模式支持服务器上的网卡,并正确配置IP。 3、端口扫描 # nc -v -w 1 192.168.228.222 -z 1-1000 hatest2 [192.168.228.222] 22 (ssh) open 4、保存Web页面 # while true; do nc -l -p 80 -q 1 < somepage.html; done 5、模拟HTTP Headers(类似curl -I,但是没有用) [root@hatest1 ~]# nc www.linuxfly.org 80 6、聊天(Ctrl+D正常退出) nc还可以作为简单的字符下聊天工具使用,同样的,server2上需要启动监听: [root@hatest2 tmp]# nc -lp 1234 server1上传输: [root@hatest1 ~]# nc 192.168.228.222 1234 7、传输目录 从server1拷贝nginx-0.6.34目录内容到server2上。需要先在server2上,用nc激活监听,server2上运行: 引用[root@hatest2 tmp]# nc -l 1234 |tar xzvf - server1上运行: 引用[root@hatest1 ~]# ll -d nginx-0.6.34 drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34 [root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234 8、参数简介 这仅是一个1.10版本的简单说明,详细的参数使用还是需要看man: 引用想要连接到某处: nc [-options] hostname port[s] [ports] ... 绑定端口等待连接: nc -l -p port [-options] [hostname] [port] 参数: -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, ... -h 帮助信息 -i secs 延时的间隔 -l 监听模式,用于入站连接 -n 指定数字的IP地址,不能用hostname -o file 记录16进制的传输 -p port 本地端口号 -r 任意指定本地及远程端口 -s addr 本地源地址 -u UDP模式 -v 详细输出——用两个-v可得到更详细的内容 -w secs timeout的时间 -z 将输入输出关掉——用于扫描时,其中端口号可以指定一个或者用lo-hi式的指定范围。 91.84版本参数简介1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] 2. [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x 3. proxy_address[:port]] [hostname] [port[s]] 1. -4 强制使用ipv4 2. -6 强制使用ipv6 3. -D 允许socket通信返回debug信息 4. -d 不允许从标准输入中读取 5. -h 显示nc帮助文档 6. -i interval 7. 指定每行之间内容延时发送和接受,也可以使多个端口之间的连接延时 8. -k 当一个连接结束时,强制nc监听另一个连接。必须和-l一起使用 9. -l 用于监听传入的数据链接,不能与-p -z -s一起使用。-w 参数的超时也会被忽略 10. -n 不执行任何地址,主机名,端口或DNS查询 11. -p 指定nc使用的源端口,受权限限制且不能余-l一起使用 12. -r 指定nc使用的源端口和目的端口,不能使用系统原来就指定的那些端口 13. -S 允许在RFC 2385的TCP MD5签名选项 14. -s source_ip_address 15. 指定用于发包的接口的IP地址,不能和-l一起使用 16. -T ToS 17. 指定链接的IP服务类型(TOS) 18. -C 自动换行 19. -t 使nc能够与telnet交互 20. -U 使用UNIX域socket 21. -u 使用udp代替默认的tcp选项 22. -v 输出详细报告 23. -w timeout 24. 一个链接一段时间无操作,则自动断开,默认无超时 25. -X proxy_version 26. 指定nc使用代理时所采用的协议,可选的有socksv4,socks5以及https。默认socks5 27. -x proxy_address[:port] 28. 指定nc使用的代理地址和端口。默认设置:1080(SOCKS),3128(HTTPS) 29. -z 只监听不发送任何包 三、版本差异 不用系统上提供的nc版本会有说不同,其提供的参数使用方法也略有差异。 例如,红旗Asianux 3.0 SP1拯救光盘上的版本是供使用的参数仅有一部分: 引用# nc -h BusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binary Usage: nc [OPTIONS] [IP] [port] Netcat opens a pipe to IP:port Options: -l listen mode, for inbound connects -p PORT local port number -i SECS delay interval for lines sent -e PROG program to exec after connect (dangerous!) -w SECS timeout for connects and final net reads 而在Asianux 3.0 SP1系统中提供的nc版本则是1.84的,按上面的参数用法写会执行不了: 引用[root@ftpserver ~]# rpm -q nc nc-1.84-10 [root@ftpserver ~]# nc -lp 1234 usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version] [-x proxy_address[:port]] [hostname] [port[s]] 讲查看man文档,可见在这个版本中,-l是不能与-s、-p、-z一起使用的,-w参数也会被忽略,所以,正确的用法是: [root@ftpserver tmp]# nc -l 1234 四、用在脚本中 nc每次启动监听后,都会在客户端连接完成并退出的同时,服务端一同退出。所以,如果需要不断的使用nc进行数据传输,需要在脚本中使用循环。利用nc实现更多的功能,可参考其rpm提供的参考脚本: 引用# rpm -qd nc /usr/share/doc/nc-1.10/Changelog /usr/share/doc/nc-1.10/README /usr/share/doc/nc-1.10/scripts/README /usr/share/doc/nc-1.10/scripts/alta /usr/share/doc/nc-1.10/scripts/bsh /usr/share/doc/nc-1.10/scripts/dist.sh /usr/share/doc/nc-1.10/scripts/irc /usr/share/doc/nc-1.10/scripts/iscan /usr/share/doc/nc-1.10/scripts/ncp /usr/share/doc/nc-1.10/scripts/probe /usr/share/doc/nc-1.10/scripts/web /usr/share/doc/nc-1.10/scripts/webrelay /usr/share/doc/nc-1.10/scripts/websearch /usr/share/man/man1/nc.1.gz #xargs build and execute command lines from standard input 管道是实现“将前面的标准输出作为后面的标准输入” xargs是实现“将标准输入作为命令的参数” 代码:(效果不同) echo "--help"|cat echo "--help"|xargs cat
xargs -n 2 < file 2个为一行
#exec Replace the shell with the given command. 很强大,但是一般配合find用的多些 find ./ -name "*.tmp" -exec rm -rf "{}" \; exec [-cl] [-a name] [command [arguments ...]] [redirection ...] 相等于清空现有环境,重新起一个新的shell -a name pass NAME as the zeroth argument to COMMAND -c execute COMMAND with an empty environment -l place a dash in the zeroth argument to COMM 注意,对文件描述符进行的操作时,才不会覆盖当前shell #!/bin/bash #exec与文件描述符结合使用 exec 3<&0 0<name.txt read line1 read line2 exec 0<&3 echo $line1 echo $ine2 set 用来显示本地变量,set 显示当前shell的变量,包括当前用户的变量 env 用来显示环境变量,env 显示当前用户的变量 export 用来显示和设置环境变量,export 显示当前导出成用户变量的shell变量 #export 用于创建传给shell的变量Set export attribute for shell variables. -- 选项结束 -f 表明在“名-值”对中的名字是函数名 -n 全局转局部,不再传给shell -p 显示全部全局变量列表 #unset unset设置或重设各种变量Set or unset values of shell options and positional parameters. [root@shell ~]# set 查看当前变量 [root@shell ~]#readonly 显示或设置只读变量 [root@shell ~] #readonly variable-name 设置只读变量 unset 取消变量定义 -f 删除自定义的只读变量 #type type命令用来显示指定命令的类型。一个命令的类型可以是如下几种: alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shell内建命令 file 文件,磁盘文件,外部命令 unfound 没有找到 常用参数 type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。 type -p只返回外部命令的信息,相当于which命令。 type -f只返回shell函数的信息。 type -t 只返回指定类型的信息。 [root@node90 home]# type useradd useradd is /usr/sbin/useradd [root@node90 home]# type -a cp cp is aliased to `cp -i' cp is /bin/cp #bc An arbitrary precision calculator language bc 进入交互模式 bc -q 如果需要bc不输出提示信息,可以加上-q参数 bc -l 如果要使用强大的数学库,比如计算三角函数,需要加上-l参数
#
echo 打印输出内容 #echo {a..z} #echo aaa{1..10} #mkdir aaa{001..100} -n 不换行(两个echo 用分号分开执行时) -e  支持转义
      \\  输出本身
      \a  输出警告
      \b  退格键,也就是向左删除键# echo -e "ab\bc" ==>ac
      \c  不换行
      \e  escape键
      \f  换页符号
      \n  换行符号
      \r  回车符号
      \t  制表符
      \v  垂直制表符
      \0nnn  八进制输出  
      \xhh  十六进制输出
       #
echo -e "gtms\tgtms" \n回车 \b 退格 gtms gtms



#printf format and print data #rpm linux rpm软件安装卸载工具,最大问题,依赖性不好解决 常用命令组合:
-ivh:安装显示安装进度--install--verbose--hash -Uvh:升级软件包--Update; -qpl: 列出RPM软件包内的文件信息[Query Package list]; -qpi:列出RPM软件包的描述信息[Query Package install package(s)]; -qf:查找指定文件属于哪个RPM软件包[Query File]; -Va:校验所有的 RPM软件包,查找丢失的文件[View Lost]; e:删除包 #yum linux的包管理器,原理是下载包,然后调用rpm包,如需依赖包,一并下载安装 yum update -y更新补丁,未投入前可使用(可能会升次版本) yum grouplist yum groupinstall包组 yum search 关键字 yum remove (不要用,依赖的包也会被干掉) #watch execute a program periodically, showing output fullscreen -n 指定间隔,默认2s -d 高亮显示变化的区域。而-d=cumulative会把变动过的地方(不管最近的那次有无变动)都高亮显示 -t 会关闭watch命令在顶部的时间间隔,命令,当前时间的输出。 使用实例: watch -n 1 -d netstat -ant 每隔一秒高亮显示网络链接数的变化情况 watch -n 1 -d 'pstree|grep http' 每隔一秒高亮显示http链接数的变化情况 watch 'netstat -an | grep :21 | \ grep<模拟攻击客户机IP>| wc -l'实时看模拟攻击客户机建起来的连接数 watch -d 'ls -l|grep scf' 监测当前目录中 scf' 的文件的变化 watch -n 10 'cat /proc/loadavg' 10秒一次输出系统的平均负载 #alias 别名 #unalias 所有用户生效:/etc/bashrc或 /etc/profile 生效#source /etc/profiles。用户自定义~/.bashrc
# alias显示当前设置的别名(\cp或/bin/cp) alias
cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' [root@shell ~]#alias test="echo this is a test." 设置别名 [root@shell ~]#unalias test 取消别名 [root@shell ~]#alias rm="echo 'rm cannot be used,please use mv'"
#read 从键盘或文件的某一行中读入信息,并将其赋值给一个变量

   -p  ”提示信息“
    -t  超时时间s
    -n  只接收指定的字符数,就会执行,而不是回车
    -s  隐藏输入的数据 read variable1 variable2 如果给出多个变量名,会按顺序赋值,分隔符为空格 #
!/bin/bash echo -n "First Name:" read firstname echo -n "Last Name:" read lastname echo -e "Your First Name is :$firstname\n" echo -e "Your Last Name is :$lastname\n" #vi =编辑工具 光标移动 crtl +f 向下翻屏 crtl+b 向上翻屏 n<空格键> 向后移动n个字符 0或home键 移动到行首 G 移动到末行 nG 移动到n行,配合set nu n 回车 向下移动n行 查找与替换 /word 向下查找关键字 n继续查找 ?/word 向上查找关键字 N继续查找 :2,4s/word1/word2/g 在2到4行全局替换关键字 :1,$s/word1/word2/gc 全文替换并依次手工确认 删除、复制、粘贴 x 向后删除一个字符 X向前 nx向后删除n个字符 dd删除光标所在行 ndd删除后n行 yy复制光标所在行 nyy复制后n行 p 在光标下一行粘贴复制的内容 u 撤销一个操作 #seq seq -s指定序列分隔符 seq -w 在列前添加0 使得宽度相同 [root@node81 ~]# seq -s "@" 5 1@2@3@4@5 [root@node90 home]# seq 1 3 11 3为步长 1 4 7 10 [root@node90 home]# seq 2 5 2 3 4 5 #eval 1.eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。 2.eval也可以用于回显简单变量,不一定时复杂变量。 NAME=ZONE eval echo $NAME等价于echo $NAME 3.两次扫描 test.txt内容:hello shell world! myfile="cat test.txt" (1)echo $myfile #result:cat test.txt (2)eval echo $myfile #result:hello shell world! 从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令 4.获得最后一个参数 echo "Last argument is $(eval echo \$$#)" echo "Last argument is $(eval echo $#)" (yum install tree nmap sysstat lrzsz dos2unix(这些是包名) -y) yum update可能 linux版本也会更新,线上的尽量不做,除非有已知安全漏洞 ! !+字母调出 最近一次以此字母开头的命令 !!使用最近一次操作的命令 !+n 调出历史的第n条命令 {} 输出数字或字符序列 getenforce 检查selinux状态 setenforce 设置selinux状态 1启用 0警告 不启用 runlevel 显示当前运行模式 init 切换运行级别,后面接相应级别数字 iptables diff vimdiff 文件比较 ntpupdate ulimit -n查看文件描述符数量 ulimit -a 查看当前shell资源限制 declare (同typeset) declare: declare [-aAfFilrtux] [-p] [name[=value] ...] Set variable values and attributes. Declare variables and give them attributes. If no NAMEs are given, display the attributes and values of all variables. Options: -f restrict action or display to function names and definitions只显示函数名及定义 -F restrict display to function names only (plus line number and只显示函数名称 source file when debugging) -p display the attributes and value of each NAME 显示名称及值 Options which set attributes: -a to make NAMEs indexed arrays (if supported) -A to make NAMEs associative arrays (if supported) -i to make NAMEs have the `integer' attribute 创建整数属性变量 -l to convert NAMEs to lower case on assignment -r to make NAMEs readonly 创建只读变量 -t to make NAMEs have the `trace' attribute -u to convert NAMEs to upper case on assignment -x to make NAMEs export 创建转出变量 Using `+' instead of `-' turns off the given attribute.使用加减取反 shift 用于移动变量位置$3的值传给$2 getopts #!/bin/bash All=false HELP=false FILE=false VERBOSE=false while getopts ahfvc: OPTION do case $OPTION in a) ALL=true echo "ALL is $ALL" ;; h) HELP=true echo "HELP is $HELP" ;; f) FILE=true echo "FILE is $FILE" ;; v) VERBOSE=true echo "VERBOSE is $VERBOSE" ;; c) c=$OPTION echo "c value is $c" ;; *) echo "`basename $0` -[a h f c] -[c value] file" ;; esac done #ldd

 

 

 

 

 

 

 

 

 

 lsmod

lsmod
[root@node85 ~]# rpm -qf /sbin/lsmod
module-init-tools-3.9-25.el6.x86_64

[root@node85 ~]# rpm -ql module-init-tools | grep sbin
/sbin/depmod
/sbin/insmod
/sbin/insmod.static
/sbin/lsmod            program to show the status of modules in the Linux Kernel
/sbin/modinfo
/sbin/modprobe
/sbin/rmmod
/sbin/weak-modules

lsmod        program to show the status of modules in the Linux Kernel
modprobe    program to add and remove modules from the Linux Kernel
        -r 移除模块
depmod        program to generate modules.dep and map files
modinfo        program to show information about a Linux Kernel module

如下需要清楚模块关系及路径等
insmod         (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/)
rmmod        (全路径)

[root@node85 ~]# lsmod | grep vfat
[root@node85 ~]# modprobe vfat    
[root@node85 ~]# lsmod | grep vfat
vfat                   10584  0 
fat                    54992  1 vfat
[root@node85 ~]# modprobe -r vfat     
[root@node85 ~]# lsmod | grep vfat



如下需要清楚模块关系及路径等
insmod         (全路径)simple program to insert a module into the Linux Kernel(/lib/modules/2.6.32-573.el6.x86_64/kernel/)
rmmod        (全路径)

vfat依赖fat模块,需要先加载
[root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/
fat.ko    msdos.ko  vfat.ko   
[root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko 
insmod: error inserting '/lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko': -1 Unknown symbol in module
[root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/fat.ko 
[root@node85 ~]# lsmod | grep fat
fat                    54992  0 
[root@node85 ~]# insmod /lib/modules/2.6.32-573.el6.x86_64/kernel/fs/fat/vfat.ko 
[root@node85 ~]# lsmod | grep fat
vfat                   10584  0 
fat                    54992  1 vfat

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://man.linuxde.net/

转载于:https://www.cnblogs.com/gtms/p/6750803.html

你可能感兴趣的:(linux命令集)