第三章 常用命令

1、mkdir : 创建目录,make directorys,-p 递归创建目录

    mkdir-p /a/b/c

2、ls  : -l(long)d(directory)显示目录或文件,全称list

    -l#列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等

    -d#只查看目录

    -F#会在不同类型的文件后面加上*/=>@|等符号,以便区分不同类型文件

    -p#会在目录后面加上/,以便区分目录和文件

    -h#人类可读模式,显示K、M、G

    -i#显示inode,也就是文件的index number

    -r#依相反次序排列,–reverse

    -R#列出所有子目录层, –recursive

    -t#按修改时间进行文件的排序,-modificationtime

    -s#在每个文件的后面打印出文件的大小,-size

    -a#列出文件下所有的文件,包括以“.“开头的隐藏文件

    -A#列出除了"."和".."以外的文件。

--color=auto #添加颜色

--time-style=STYLE#style值可选full-iso,long-iso(最优), iso, locale

ll --time-style=long-iso install.log (显示效果最好)

-rw-r--r--. 1 root root 62057 2017-01-14 14:32install.log

ll --time-style=full-iso install.log

-rw-r--r--. 1 root root 62057 2017-01-1414:32:36.206994569 +0800 install.log

ll --time-style=iso install.log

-rw-r--r--. 1 root root 62057 01-14 14:32 install.log

ll --time-style=locale install.log

-rw-r--r--. 1 root root 62057 Jan 14 14:32 install.log

 

3、cd : 切换目录层次change directory

    ~表示家目录,

    -表示上一次的目录

 

    cd~

    cd/tep/fq

    cd/root

    cd-  # 回到/tep/fq

4、pwd : 显示当前目录

    pwd

5、echo : 打印输出内容(printf复杂的输出)

参数:

-n : 不换行输出

-e : 激活转义字符\,可以使用以下转义字符

\a    alert (BEL)

\b    backspace

\c    produce no further output

\e    escape

\f    form feed

\n    new line            #换行

\r    carriage return

\t    horizontal tab     #水平tab键

\v    vertical tab       #垂直tab键

示例:

echo"abce"

echo -n'abcd';echo 'efg'

echo -e"hello\tworld"

hello  world

echo -e"hello\nworld"

hello

world

echo -e "hello\vworld"

hello

     world

输出命令的结果:
a、用反引号``(tab键上)

echo `date +%F`

b、用$()

echo $(date +%F)

6、vi/vim : 记事本编辑器

:set nu 显示行号

settabstop=4  一个tab为4个空格长度

set ai  设置自动缩进

syntax on   高亮

    dd      删除当前行

    yy      复制当前行

    p       粘贴

    行号gg 定位到指定行号

    G       切换到文件尾

gg      切换到文件首

^或0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾

7、cat : 查看文件内容(concatenate)

    cat/etc/hosts

    cat-n /etc/hosts  #显示行号

    cat>>a.txt<

    ...

    EOF

8、cp  : -apr 拷贝文件或目录

    cpa.txt /tmp/

    cp-r a /tmp  #将目录a拷贝到tmp

    cp-a a /tmp  #-a = -dpr

9、mv : 移动文件或目录,也可改名(rename命令)

    mva.txt /tmp

    mva.txt b.txt  #将a.txt改为b.txt

10、rm :  删除文件

    -f强制删除文件

    -r递归删除文件或目录

    -fr删除指定的目录和文件

    rm-fr /tmp/*

11、rmdir : 删除空目录

12、head : 显示文件前几行,默认10行

    -n行数

    head-n 500 a.txt

    head-500 a.txt

13、tail : 监控文件的变化

    -n行数,显示文件后几行,默认10行;

    -f跟踪文件结尾变化,如果文件被删除后重建,不会显示新的变化

    -F跟踪文件结尾变化,会尝试重新连接文件,如果文件被删除后重建,会显示新的变化

    tail-n 500 a.txt

    tail-500 a.txt

   

    类似命令:tailf。

    tailf相当于tail -f,类似于tail -f,严格说来应该与tail –follow=name更相似些。

    与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以省电,并减少了磁盘访问

14、alias : 显示设置的别名,ualias取消别名

    可以在/etc/profile、/etc/bashrc中配置全局别名。在用户家目录.bashrc配置用户别名

   alias grep='grep --color=auto'

15、tac : 反转内容输出(cat反写)

    cata.txt | tac

16、which : 查看命令所在的路径

    whichntpdate

    /usr/sbin/ntpdate

17、find : 查找命令,

    -typef      按类型(f:文件 d:目录)

    -namefilename   按文件名 

    -perm        按权限查找

    -mtime       按修改时间, +n表示n天前,-n表示最近的n天,n表示第n天

    -prune       忽略某个目录,如查没有-depth参数,则-prune则有效,并表示不深入到目录里面。(难以理解,见下面练习题第二关中的说明)

    -mindepth    限定搜索指定目录的最小深度

    -maxdepth    限定搜索指定目录的最大深度

    !        排除

    -o           或,等于-or

    -and         并且,条件之件默认为-and

   

    find/ -type -f -name aaa        #查找文件名为aaa的文件

    find. -maxdepth 1 -type d ! -name "."  #只查找1层,类型是目录,目录名不含有.的目录

    find/bin -type f -perm 4755  -exec ls -l {}\;  #查找有特殊权限的命令

18、tree : 查看目录结构

    -d  显示目录

    -L  要显示层级

   

    tree/

    tree-L 1 / : 只显示一层结构

19、xargs:用于把其它命令的输出交给后面的命令处理

find /tmp -typef -name aa | xargs rm –fr

find ./ -type f  -print0| xargs -0 md5sum >> md5_rc1.txt

后一种是适用于文件名含有空格的文件。通常xargs用于隔断文件是默认为:空格、TAB、换行符等,-print0则是以NULL隔断文件,xargs -0 就是以NULL来区分文件隔断。

20、whoami : 查看当前命令行终端用户

21、w : 查看当前登陆的用户和做什么

22、su:切换用户

参数:

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件

-或-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量

-m,-p或--preserve-environment:变更身份时,不要变更环境变量

-s或--shell=:指定要执行的shell

--help:显示帮助

--version;显示版本信息。

示例:

su - root

22、sudo :让普通用户可以拥有指定的root权限功能,需root用户提前授权

    sudouseradd kkk

23、rpm : 软件安装命令

    rpm-ivh :安装

    rpm-e :卸载

    rpm-e --nodeps :不考虑依赖,强行卸载

24、whereis: locate thebinary, source, and manual page files for a command

    whereis-b mkdir

    mkdir:/bin/mkdir

25、uname : 查看系统版本

     -a:

     -r:

     -m:

    uname-a

26、halt:关机 (init 0)

27、reboot 重启(init 6)

28、shutdown

    shutdown-r now : 重启

    shutdown-h now : 关机 

   

29、lsb_release:显示系统版本

    lsb_release-a

30、lastlog : 查看用户是否登录过

31、last : 查看最后登陆过的用户列表

32、file : 查看文件类型

33、ln : 创建链接文件

    硬链接:源文件与目标文件的inode号码相同,都指向同一个inode

     ln 源文件 目标文件 

    软链接:相当于windows中的快捷方式

     ln -s 源文件 目标文件

     ln -s /abc/def/ghi/jk/ /tmp/jk/

     可以通过readlink 软链接名,来查看软链接信息

34、stat : 查看文件信息

参数:

-L, --dereference #follow links

      -Z, --context #print the SELinux security context

      -f, --file-system #display file system status instead of file status

      -c  --format=FORMAT #格式化输出

      -t, --terse #print the information in terse form

      The valid format sequences for files (without --file-system):

      %a     Access rights in octal(八进制权限644)

      %A     Access rights in humanreadable form(人类可读模式rw-r--r--)

      %b     Number of blocks allocated(see %B)(取stat信息中的Blocks: 后面的值)

      %B     The size in bytes of eachblock reported by %b

      %C     SELinux security contextstring

      %d     Device number in decimal

      %D     Device number in hex

      %f     Raw mode in hex

      %F     File type

      %g     Group ID of owner

      %G     Group name of owner

示例:

stat install.log

File: `install.log'

Size: 62057       Blocks: 136    IO Block: 4096   regular file

Device: 803h/2051d      Inode:391683      Links: 1

Access: (0644/-rw-r--r--)  Uid:(    0/   root)   Gid: (    0/   root)

Access: 2017-01-01 23:32:26.238999717 +0800

Modify: 2017-01-02 00:00:41.324999404 +0800

Change: 2017-01-02 00:01:11.062999379 +0800

stat -c %B etiantian 

512

stat -c %d etiantian 

1792

stat -c %G etiantian 

root

35、df : 检查linux服务器的文件系统的磁盘空间占用情况

    df -hi

       -a 全部文件系统列表

       -h 方便阅读方式显示

       -H 等于“-h”,但是计算式,1K=1000,而不是1K=1024

       -i 显示inode信息

       -k 区块为1024字节

       -l 只显示本地文件系统

       -m 区块为1048576字节

       --no-sync 忽略 sync 命令

       -P 输出格式为POSIX

       --sync 在取得磁盘信息前,先执行sync命令

       -T 文件系统类型

       选择参数:

       --block-size=<区块大小>指定区块大小

       -t<文件系统类型> 只显示选定文件系统的磁盘信息

       -x<文件系统类型> 不显示选定文件系统的磁盘信息

       --help 显示帮助信息

       --version 显示版本信息

       

36、less : 是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),也可回退(向上))

        -N  #显示行号

    less a.txt

    less -N a.txt

37、more:是对文件或其它输出进行分页显示的工具(按屏显示,可以前滚(向下),但不能回退(向上))

38、man : 查看命令及配置文件的帮助

39、touch :创建文件或修改文件时间戳

40、env : 显示当前用户的环境变量

41、source : 读取和执行配置文件 

    source/etc/sysconfig/i18n  或 . /etc/sysconfig/i18n

42、netstat : 查看网络状态

     [--tcp|-t]  [--udp|-u]   [--raw|-w]   [--listening|-l]   [--all|-a]  [--numeric|-n] [--program|-p]

 

    netstat-lntup

    netstat-an

   

43、lsof :列出当前系统打开文件的工具(list open files)

参数:

lsof -c abc 显示abc进程现在打开的文件
lsof -c -p 1234 列出进程号为1234的进程所打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
  46 --> IPv4 or IPv6
  protocol --> TCP or UDP
  hostname --> Internet host name
  hostaddr --> IPv4地址
  service --> /etc/service中的 service name (可以不止一个)
  port --> 端口号 (可以不止一个)

输出各列信息的意义

COMMAND:进程的名称 PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

 

示例:

lsof -i :port    :查看端口情况

    lsof-i :22                                      

    COMMAND   PID USER  FD   TYPE  DEVICE SIZE/OFF NODE NAME                        

    sshd     2776 root    3u IPv4   16724      0t0 TCP *:ssh (LISTEN)                      

    sshd     2776 root    4u IPv6   16730      0t0 TCP *:ssh (LISTEN)                      

sshd 23312 root 3r IPv4 3417749 0t0 TCP LS-B:ssh->127.0.0.1:patrolview(ESTABLISHED)

44、crontab命令

    crontab--操作每个用户的守护程序和执行的时间表。

    crontabfile [-u user]--用指定的文件替代目前的crontab。

    crontab- [-u user]--用标准输入替代目前的crontab。

    crontab-l [user]--列出用户目前的crontab。

    crontab-e [user]--编辑用户目前 的crontab 。

    crontab-d [user]--删除用户目前 的crontab 。

    crontab-c dir --指定crontab的目录。

    crontab文件的格式:M H D m d cmd

    M:分钟(0-59)

    H:小时(0-23)

    D:天(1-31)

    m:月份(1-12)

    d:一星期内的天(0-6,0为星期天)

45、history

    history-d 9 #删除指定行号的历史记录

    history-c  #删除所有历史记录

     可以通过配置HISTCONTROL=ignorespace环境变量来指定history命令不记录敏感操作。如:

一般情况会显示:

history -c

MySQL -uroot -p123456

histroy

mysql -uroot -p123456

history

使用HISTCONTROL

history -c

HISTCONTROL=ignorespace

mysql -uroot -p123456

histroy

HISTCONTROL=ignorespace

history

46、seq:打印序列

    seq-s "," -f "t%01g" 1 5

    -s   :使用分隔符

    ","  :分隔符为了英文逗号

    -f   :格式化

    %01g:1位浮点数

    结果  :t1,t2,t3,t4,t5

47、chkconfig

    chkconfig-–list #列出所有的系统服务

    chkconfig-–add httpd #增加httpd服务

    chkconfig-–del httpd #删除httpd服务

    chkconfig-–level httpd 2345on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态

    chkconfig-–list #列出系统所有的服务启动情况

    chkconfig-–list mysqld #列出mysqld服务设置情况

    chkconfig-–level 35 mysqldon #设定mysqld在等级3和5为开机运行服务,–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭

    chkconfigmysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级

 

48、grep(三剑客之三)

    参数:

         -c:只输出匹配行的计数。

    -i:不区分大小写(只适用于单字符)。

    -h:查询多文件时不显示文件名。

    -l:查询多文件时只输出包含匹配字符的文件名。

    -n:显示匹配行及行号。

    -s:不显示不存在或无匹配文本的错误信息。

    -v:排除,显示不包含匹配文本的所有行。

    -e: 或的意思,可使用多个条件

    -E: 使用多个条件,相当于多个-e,需加双引号

    --color=auto #添加颜色

    grep -E 相当于egrep

    示例:

     grep 'test' d*    # 显示所有以d开头的文件中包含 test的行。

     grep 'test' aa bb cc  #显示在aa,bb,cc文件中匹配test的行。

     grep linuxtechi /etc/passwd:  #在/etc/passwd文件中查找单词"linuxtechi"

     

     grep -e EST -e WAIT /netstat.log      #在netstat.log中查找包含EST或WAIT的行

     grep -E "EST|WAIT" /netstat.log       #在netstat.log中查找包含EST或WAIT的行

     grep -v ^# /etc/ssh/sshd_config       #过滤文件/etc/ssh/sshd_config中所有的注释

     grep -Ev "^#|^$"/etc/ssh/sshd_config #过滤文件/etc/ssh/sshd_config中所有的注释和空行

 

49、sed(三剑客之二)

说明

  sed是一种在线编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为模式空间(pattern space),接着用sed命令处理缓冲区的内容,处理完成后,把缓冲区的内容打印到屏幕。然后处理下一行,至文件末尾。此时,原文件的内容不会改变,除非用-i参数来指定sed修改原文件。sed的分隔符可以是#,也可以是/。

格式:

sed [-nefri] [n1[,n2]][command] 输入文本

参数:
选项参数

-n:取消默认打印,只打印sed特殊处理的那一行。

-e:直接在指令列模式上进行sed的动作编辑。

-f:sed直接执行动作文件内的动作command。-f commandfile

-r:使用扩展的正则表达式(默认为基础正则表达式语法)

-i:直接修改读取的文件的内容,不在由屏幕输出

[n1[,n2]]

一般表示选择要进行动作的行数。如动作要删除在10行到20行之间的行:[10,20d]

command命令参数

a:新增。新增一行a后面的字符串(当前行的下一行)

c:取代。c后面的字符串可以取代n1,n2之间的行

d:删除。

i:插入。插入i后面的字符串(当前行的上一行)

p:打印。

s:替换。

小括号()分组功能

sed -nr 's#abc.#\1#gp'

    s###g中第1个#和第2个#之间的内容表示要查找的内容,可以用正则表达式,其中用小括号()括起来的内容,可以在第2个#和第3个#之间用\1来调用,第2个#和第3个#之间不能用正则表达式。如查前面有多个小括号,则\1、\2、...\n来表示第1个括号的内容,第2个括号的内容。。。第n个括号的内容。r表示使用正则表达式,g表示全局替换,p表示打印。由于前面有-n取消了默认输出,所以必须用参数p来打印过滤出的内容,否则什么都不会输出。

示例:

sed s#str1#str2#g filename:用str2替换str1,只打印,但不改原文件内容。-i:表示修改原文件内容

sed s#oldboylinux#mywindows#g ett.txt:将oldboylinux替换成mywindows

sed -i s#oldboylinux#mywindows#g ett.txt :此时ett.txt中的内容已被替换

sed -n 2p #显示第2行

sed -n [2,5d] #删除第2、3、4、5行

sed -n '/oldboylinux/p' ett.txt #过滤出含有oldboylinux的行

echo 'kkkddd' | sed 's#kkkddd#\1#g'             #kkk

echo 'kkkddd' | sed -r 's#(kkk)(ddd)#\1#g'             #kkk

echo 'kkkddd' | sed -r 's#(kkk)(ddd)#\1    \2#g'      #kkk    ddd

echo 'kkkddd' | sed -r 's#(kkk)(ddd)#\1 is a \2#g'    # kkk is a ddd

 

删除ifconfig eth1的输出前后的空格,并将内容中的相连的多个空格替换为一个空格

ifconfig eth1 | sed -r 's# +# #g' | sed -r 's#^ ##g' | sed -r 's#+$##g'

 

在a.txt文件的第1行插入1行内容为:wddglog

sed -i '1 i wddglog' a.txt  #-i表示修改原文件,1表示第1行,i表示插入

50、awk(三剑客之一)

awk -F: '{print $1}' /etc/passwd #以:为分隔符,打印/etc/passwd中的第一列

-F:指定分隔符,默认分隔符为空格。多个分隔符需用'[]','[]'内的全部为分隔符,同时有效

$0:表示一行

$1:表示第一列

$n:表示第n列

$NF:表示最后一列

NR:表示行号

 

   cat /etc/passwd | awk -F: '{print $1}'

   echo "I am oldboy,myqq is 49000448" | awk -F '[ ,]' '{print$3" "$6}' #以空格和逗号为分隔符

    oldboy49000448

   

51、tar:打包和压缩/解压缩命令

    格式:

    tar[必选参数+辅助参数] 包名  需打包的文件或目录

    参数:

    必选参数

        -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

    必选参数之只选一(五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。)

        -c: 建立压缩档案

        -x:解压

        -t:查看内容

        -r:向压缩归档文件末尾追加文件

        -u:更新原压缩包中的文件

    可选参数

        -z:有gzip属性的

        -j:有bz2属性的

        -Z:有compress属性的

        -v:显示所有过程

        -O:将文件解开到标准输出

        -P: 不提示

        -C: 改变目录

        -X: 打包时根据文件列表排除文件

        --exclude Filename:排除,在压缩的过程中,不要将 Filename 打包!

     常用参数组合:

        gzip打包组合zcvf,解包组合zxvf

        bzip打包组合jcvf,解包组合jxvf

    压缩示例:

    tarzcvf a.tar.gz /tmp/kkk

    tarjcvf a.tar.bz /tmp/kkk

    tarzcvf workspace.tar.gz --exclude /Workspace/Linux Workspace/ #打包时排除/Workspace/Linux

    tarzcvfX workspace.tar.gz a.txt /Workspace/Linux Workspace/    #打包时根据a.txt中的文件名排除

        cat a.txt

       aa.txt

       bb.txt

       cc.txt

    解压示例:

    tar-xvf file.tar         #解压 tar包

    tar-xzvf file.tar.gz         #解压tar.gz

    tar-xjvf file.tar.bz2        #解压 tar.bz2

    tar-xZvf file.tar.Z          #解压tar.Z

    tar-xvf file2.tar -C /home/usr2  #将file2.tar解压到/home/usr2下

   

52、cut:从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

    格式:

    cut  [-bn] [file] 或 cut [-c] [file]  或 cut [-df] [file]

    参数

    -b:以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

    -c:以字符为单位进行分割。

    -d:自定义分隔符,默认为制表符。

    -f  :与-d一起使用,指定显示哪列。f3表示第三列,f3,6表示第3列和第6列,f2-5表示第2列到第5列

    -n:取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除。

   

   cut命令主要是接受三个定位方法:

    第一,字节(bytes),用选项-b

    第二,字符(characters),用选项-c

    第三,域(fields),用选项-f

   

    示例:

    catcut_ch.txt

        星期一

        星期二

        星期三

        星期四

     cut -c 3 cut_ch.txt

        一

        二

        三

        四

 

53、tr:也是替换命令

echo "I am oldboy,myqq is 49000448" | tr ","" "  #将逗号替换成空格

echo 'abc' | tr 'abc' 'xyz' #x替换a,y替换b,z替换c

 

54、wc:打印文件的文本行数、单词数、字节数

    参数:

    -c,--bytes: 打印字节数(print thebyte counts)

    -m,--chars:打印字符数(print the charactercounts)

    -l,--lines:打印行数(print thenewline counts)

    -L,--max-line-length:打印最长行的长度(print the length of the longest line)

    -w,--words:打印单词数(print theword counts)

    示例

    wc--lines /etc/passwd

wc -l/etc/passwd

 

55、du: 查看文件和目录磁盘使用的空间

参数:

-a或-all  显示目录中个别文件的大小。  

-b或-bytes  显示目录或文件大小时,以byte为单位。  

-c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-k或--kilobytes  以KB(1024bytes)为单位输出。

-m或--megabytes  以MB为单位输出。  

-s或--summarize  仅显示总计,只列出最后加总的值。

-h或--human-readable  以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem  以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。  

-S或--separate-dirs   显示个别目录的大小时,并不含其子目录的大小。

-X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。  

--exclude=<目录或文件>         略过指定的目录或文件。   

-D或--dereference-args   显示指定符号链接的源文件大小。  

-H或--si  与-h参数相同,但是K,M,G是以1000为换算单位。  

-l或--count-links   重复计算硬件链接的文件。 

示例:
(1)显示目录或者文件所占空间

        du

(2)显示指定文件所占空间

du log2012.log

(3)查看指定目录的所占空间

du scf

(4)显示多个文件所占空间

du log30.tar.gz log31.tar.gz

(5)只显示总和的大小

 du -s scf

(6)方便阅读的格式显示

du -h test

(7)文件和目录都显示

du -ah test

(8)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

du -c log30.tar.gz log31.tar.gz

(9)输出当前目录下各个子目录所使用的空间

du -h  --max-depth=1

 

56、useradd : 建立用户账号

格式:

useradd [-mMnr][-c <备注>][-d <登入目录>][-e<有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 或 useradd -D [-b][-e <有效期限>][-f <缓冲天数>][-g<群组>][-G <群组>][-s ]

参数:

-c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。

-d<登入目录>  指定用户登入时的启始目录。

-D  变更预设值.

-e<有效期限 指定帐号的有效期限。格式MM/DD/YY

-f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。0:立即停权 -1:关闭此功能(默认值-1)

-g<群组 指定用户所属的群组。

-G<群组 指定用户所属的附加群组。

-m  自动建立用户的登入目录。

-M  不要自动建立用户的登入目录。

-n  取消建立以用户名称为名的群组.

-r  建立系统帐号。

-s指定用户登入后所使用的shell。不填写时,系统根据/etc/default/useradd预设值指定

-u  指定用户ID

-p 创建用户时,直接指定密码,但在 /etc/shadow文件中以明文显示,不安全

示例:

useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bashoracle

useradd -u 510 test

补充说明:

useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。passwd设定的密码在/etc/shadow文件中。

 

57、userdel : 删除用户

参数:

-f, --force     force removal of files, even if notowned by user
-h, --help      display this help message and exit
-r, --remove    在删除用户的同时一起把这个用户的宿主目录和邮件目录删除。

示例:

userdel -r newuser

58、date : 根据给定格式显示日期或设置系统日期时间

(1)格式:

date [OPTION]...[+FORMAT]

(2)参数:

-d  显示字符串描述的时间

-f  显示DATEFILE文件中的每行时间

-r  显示文件的最后修改时间

-R  以RFC-2822兼容日期格式显示时间

-rfc-2822   以RFC-2822兼容日期格式显示时间

-s  设置时间为string

-u  显示或设定为Coordinated Universal Time时间格式

--help  显示date命令的帮助信息

--version   显示date命令的版本信息

(3)Format参数格式    

%%  显示字符%

%a  星期几的缩写(Sun..Sat)

%A  星期几的完整名称(Sunday...Saturday)

%b  月份的缩写(Jan..Dec)

%B  月份的完整名称(January..December)

%c  日期与时间。只输入date指令也会显示同样的结果

%C  世纪(年份除100后去整) [00-99]

%d  日期(以01-31来表示)。

%D  日期(含年月日)。

%e  一个月的第几天 ( 1..31)

%F  日期,同%Y-%m-%d

%g  年份(yy)

%G  年份(yyyy)

%h  同%b

%H  小时(00..23)

%I  小时(01..12)

%j  一年的第几天(001..366)

%k  小时(0..23)

%l  小时(1..12)

%m  月份(01..12)

%M  分钟(00..59)

%n  换行

%N  纳秒(000000000..999999999)

%p  AM or PM

%P  am or pm

%r  12小时制时间(hh:mm:ss [AP]M)

%R  24小时制时间(hh:mm)

%s  从00:00:001970-01-01 UTC开始的秒数

%S  秒(00..60)

%t  制表符

%T  24小时制时间(hh:mm:ss)

%u  一周的第几天(1..7); 1 表示星期一

%U  一年的第几周,周日为每周的第一天(00..53)

%V  一年的第几周,周一为每周的第一天 (01..53)

%w  一周的第几天 (0..6); 0 代表周日

%W  一年的第几周,周一为每周的第一天(00..53)

%x  日期(mm/dd/yy)

%X  时间(%H:%M:%S)

%y  年份(00..99)

%Y  年份(1970…)

%z  RFC-2822 风格数字格式时区(-0500)

%Z  时区(e.g.,EDT), 无法确定时区则为空

(4)示例:
a、设置系统时间

date -s"2013-11-14 00:00:00"

b、按各种格式显示当前日期时间

(i)只显示当前日期的年份

date +%Y

(ii)只显示当前日期的月份

date +%m

(iii)显示各种格式类型的日期

date +%D

date '+%Y-%m-%d'

date +%Y-%m-%d

date +%m/%d/%y

date +%m/%d/%Y

c、显示3天前的日期

date +%F --date='3day ago'

date +%F --date '3day ago'

date +%F --d '3day ago'

date +%F -d '-3day'

d、显示明天的日期

date +%F -d 'nextago'

e、显示3天后的日期

date +%F -d '+3day'

date +%F -d '3day'

f、显示3小时前的时间

date +%H -d '-3hour'

g、显示3小时以后的时间

date +%H -d '3hour'

h、显示6分钟以前的时间

echo $(date+%Y%m%d%H%M -d '-6 min')

i、显示6分钟以后的时间

echo $(date +%Y%m%d%H%M-d '6 min')

j、显示20秒以前的时间

echo $(date+%Y%m%d%H%M%S -d '-20 sec')

k、显示20秒以后的时间

echo $(date+%Y%m%d%H%M%S -d '20 sec')

59、hwclock : 显示与设定硬件时钟

在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。

格式:

hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=<日期与时间>]

参数:

--adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。

--debug  显示hwclock执行时详细的信息。

--directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。

--hctosys  将系统时钟调整为与目前的硬件时钟一致。

--set --date=<日期与时间>  设定硬件时钟。

--show  显示硬件时钟的时间与日期。

-w --systohc  将硬件时钟调整为与目前的系统时钟一致。

--test  仅测试程序,而不会实际更改硬件时钟。

-u --utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。

-v --version  显示版本信息。

示例:

查看当前的硬件日期和时间

hwclock

查看clock文件,确认是否设置了UTC:

cat /etc/default/rcS

UTC=yes

将当前时间和日期写入BIOS,避免重启后失效

hwclock -w

60、cal: 显示日历

61、locate: 按名字查找文件,但只能查看updatedb库中的内容,需定期更新updatedb库

locate -n 1 cp  # 查询包括cp的文件,只显示查到的第一行

62、chmod:改变权限属性

语法:

chown [选项]...[属主][:[组]] 文件...

参数:

u表示属主用户、g表示属组、o其它组用户、a所有用户(默认)

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示为可执行。

-c : 若该文件权限确实已经更改,才显示其更改动作

-f : 若该文件权限无法被更改也不要显示错误讯息

-v : 显示权限变更的详细资料

-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

--help : 显示辅助说明

--version : 显示版本

示例:

chmod 777ett.txt

chmod –R 755oldboy/

chmod u+xett.txt

63、chown: 改变文件属主和属组

语法:

chmod [-cfvR][--help] [--version] mode file...

参数:

-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

示例:

chown oldboya.sh

chownoldboy.oldboy a.sh  或 chown oldboy:oldboy a.sh等价于 chgrp oldboy a.sh

chown .oldboya.sh   或 chown :oldboy a.sh

chown -Roldboy:oldboy wddg/

64、umask:默认权限分配

语法 :

umask(选项)(参数)

选项:

-p:输出的权限掩码可直接作为指令来执行;

-S:大写S,以符号方式输出权限掩码。

实例 :

umask u=, g=w,o=rwx (等同于umask 027)

umask

umask 022

umask –p

umask 0333

umask –S

u=r,g=r,o=r

 

65、id:显示用户id和组id信息

语法

id[-gGnru][--help][--version][用户名称]

选项

-a 打印用户名、UID 和该用户所属的所有组

-g或--group  显示用户所属群组的ID。

-G或--groups 显示用户所属附加群组的ID。

-n或--name  显示用户,所属群组或附加群组的名称。

-r或--real  显示实际ID。

-u或--user  显示用户ID。

--help   显示帮助。

--version   显示版本信息。

实例

id

uid=0(root) gid=0(root) groups=0(root)

id -gn

root

id -un

root

66、chattr:改变文件属性(ext2、ext3、ext4)

语法

chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]

选项

a:让文件或目录仅供附加用途。

b:不更新文件或目录的最后存取时间。

c:将文件或目录压缩后存放。

d:将文件或目录排除在倾倒操作之外。

i:不得任意更动文件或目录。

s:保密性删除文件或目录。

S:即时更新文件或目录。

u:预防以外删除。

-R  递归处理,将指定目录下的所有文件及子目录一并处理。

-v<版本编号>  设置文件或目录版本。

-V  显示指令执行过程。

+<属性>  开启文件或目录的该项属性。

-<属性>  关闭文件或目录的该项属性。

=<属性>  指定文件或目录的该项属性。

实例

chattr +i/etc/resolv.conf

chattr -i/etc/resolv.conf

67、lsattr:列出文件的隐藏属性

语法

lsattr [-adlRvV][文件或目录...]  

选项

-a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。

-d  显示,目录名称,而非其内容。

-l  此参数目前没有任何作用。 

-R  递归处理,将指定目录下的所有文件及子目录一并处理。

-v  显示文件或目录版本。 

-V  显示版本信息。

实例

lsattr -Rd test/

68、strace:诊断、调试、统计的工具

strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。

strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。

语法

strace [-dffhiqrtttTvxx ] [ command [ arg ..] ]

strace -c [command [ arg..] ]

选项

-c 统计每一系统调用的所执行的时间,次数和出错的次数等

-d 输出strace关于标准错误的调试信息

-f 跟踪由fork调用所产生的子进程

-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号

-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪

-h 输出简要的帮助信息

-i 输出系统调用的入口指针

-q 禁止输出关于脱离的消息

-r 打印出相对时间关于,,每一个系统调用

-t 在输出中的每一行前加上时间信息

-tt 在输出中的每一行前加上时间信息,微秒级

-ttt 微秒级输出,以秒了表示时间

-T 显示每一调用所耗的时间

-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出

-V 输出strace的版本信息

-x 以十六进制形式输出非标准字符串 -xx 所有字符串以十六进制形式输出

-a column 设置返回值的输出位置.默认 为40

-e expr 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]..

qualifier只能是trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none

注意有些shell使用!来执行历史记录里的命令,所以要使用\\

-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all

-e trace=file 只跟踪有关文件操作的系统调用

-e trace=process只跟踪有关进程控制的系统调用

-e trace=network跟踪与网络有关的所有系统调用

-e strace=signal跟踪所有与系统信号有关的 系统调用 -e trace=ipc 跟踪所有与进程通讯有关的系统调用 -e abbrev=set 设定strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all

-e raw=set 将指定的系统调用的参数以十六进制显示

-e signal=set 指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号

-e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5 -e write=set 输出写入到指定文件中的数据

-o filename 将strace的输出写入文件filename -p pid 跟踪指定的进程pid

-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出

-u username 以username的UID和GID执行被跟踪的命令

实例

strace -f passwd

strace -c./test.sh

69、crontab:定时任务命令

语法 crontab(选项)(参数)
选项

-e:编辑该用户的计时器设置(查看的文件是/var/spool/cron/<用户名称>,会进行语法检查); 

-l:列出该用户的计时器设置(查看的文件是/var/spool/cron/<用户名称>);

-r:删除该用户的计时器设置;

-u <用户名称>:指定要设定计时器的用户名称。

实例

crontab -e

30 3,12 * * * /bin/sh /wddg/test.sh

crontab -l

30 */6 * * * * /bin/sh /wddg/test.sh

30 8-18/2 * * * /bin/sh /wddg/test.sh

70、groupadd:添加用户组

语法

groupadd [-g gid] [-o][-r][-f] groupname

选项

-g gid:指定用户组GID值。默认从500开始。

-r:建立系统用户组。GID值会比/etc/login.defs中定义的UID_MIN值要小

-f:新增用户组时,可强制覆盖一个已存在的用户组帐号

实例

groupadd k1 -g 1000