一.

  1. 显示日期:date 显示格式:date +%Y/%m/%d date +%H:%M 日历指令:cal 计算器:bc 显示几位小数点:scale=number 退出计算器:quit 2.[Tab]热键:输入gr 命令时连按两下为有哪些以gr开头的命令,文件时连按两下为有哪些以gr开头的文件。
  2. man page 说明后面的数字中,1 代表一般账号可用指令,8 代表系统管理员常用指令,5 代表系统配置文件 4.关机:shutdown [-krhc] [时间] ‘信息’ 选项与参数: -k : 不是真的关机,只是发送警告讯息出去! -r : 在将系统的服务停掉之后就重新启动(常用) -h : 将系统的服务停掉后,立即关机。 (常用) -c : 取消已经在进行的 shutdown 指令内容。 5.查询当前主机在线人员:who 将数据同步写入硬盘中的指令:sync(关机前都执行一下,养成好习惯)

二.Linux 的文件权限与目录配置 1.用户记录在/etc/passwd文件中 密码记录在/etc/shadow文件中 组名记录在/etc/group文件中 2.改变文件所属群组:chgrp [-R] dirname/filename 选项与参数: -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、目录 都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。 改变文件所属者:chown [-R] 账号名称 文件或目录 chown [-R] 账号名称:组名 文件或目录 选项与参数: -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更 改变文件权限:chmod [-R] xyz 文件或目录 选项与参数: xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。 -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更 3.文件的权限: • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等; w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件); x (eXecute):该文件具有可以被系统执行的权限。 目录的权限: w:o 建立新的文件与目录; o 删除已经存在的文件与目录(不论该文件的权限为何!) o 将已存在的文件或目录进行更名; o 搬移该目录内的文件、目录位置。 x:代表可以进入该目录(可以想象为抽屉的钥匙)

三.Linux目录与文件管理 1.建立新目录:mkdir [-mp] 目录名称 选项与参数: -m :配置文件案的权限喔!直接设定,不需要看预设权限 (umask) 的脸色~ -p :帮助你直接将所需要的目录(包含上层目录)递归建立起来! 2.删除目录:rmdir或rm 3. 文件与目录的检视:ls [-aAdfFhilnrRSt] 文件名或目录名称.. ls [--color={never,auto,always}] 文件名或目录名称.. ls [--full-time] 文件名或目录名称.. 选项与参数: -a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用) -A :全部的文件,连同隐藏档,但不包括 . 与 .. 这两个目录 -d :仅列出目录本身,而不是列出目录内的文件数据(常用) -f :直接列出结果,而不进行排序 (ls 预设会以档名排序!) -F :根据文件、目录等信息,给予附加数据结构,例如: *:代表可执行文件; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件; -h :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来; -i :列出 inode 号码,inode 的意义下一章将会介绍; -l :长数据串行出,包含文件的属性与权限等等数据;(常用) -n :列出 UID 与 GID 而非使用者与群组的名称 (UID 与GID 会在账号管理提到!) -r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小; -R :连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来; -S :以文件容量大小排序,而不是用档名排序; -t :依时间排序,而不是用档名。 --color=never :不要依据文件特性给予颜色显示; --color=always :显示颜色 --color=auto :让系统自行依据设定来判断是否给予颜色 --full-time :以完整时间模式 (包含年、月、日、时、分) 输出 --time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime) 而非内容变更时间 (modification time) 4. 复制文件或目录:cp [-adfilprsu] 来源文件(source) 目标文件(destination) cp [options] source1 source2 source3 .... directory 选项与参数: -a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明;(常用) -d :若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身; -f :为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次; -i :若目标文件(destination)已经存在时,在覆盖时会先询问动作的进行(常用) -l :进行硬式连结(hard link)的连结档建立,而非复制文件本身; -p :连同文件的属性(权限、用户、时间)一起复制过去,而非使用默认属性(备份常用); -r :递归持续复制,用于目录的复制行为;(常用) -s :复制成为符号链接文件 (symbolic link),亦即『快捷方式』文件; -u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制。 --preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了。 最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行! 5. 移除文件或目录:rm [-fir] 文件或目录 选项与参数: -f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息; -i :互动模式,在删除前会询问使用者是否动作 -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!! 6. 移动文件与目录,或更名:mv [-fiu] source destination mv [options] source1 source2 source3 .... directory 选项与参数: -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖; -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖! -u :若目标文件已经存在,且 source 比较新,才会更新 (update) 7. 直接检视文件内容:cat [-AbEnTv] 选项与参数: -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已; -b :列出行号,仅针对非空白行做行号显示,空白行不标行号! -E :将结尾的断行字符 $ 显示出来; -n :打印出行号,连同空白行也会有行号,与 -b 的选项不同; -T :将 [tab] 按键以 ^I 显示出来; -v :列出一些看不出来的特殊字符 8. 非纯文本档:od [-t TYPE] 文件 选项或参数: -t :后面可以接各种『类型 (TYPE)』的输出,例如: a :利用默认的字符来输出; c :使用 ASCII 字符来输出 d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ; f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ; o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ; x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ; 9. 修改文件时间或建置新档:touch [-acdmt] 文件 选项与参数: -a :仅修订 access time; -c :仅修改文件的时间,若该文件不存在则不建立新文件; -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间" -m :仅修改 mtime ; -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm] 10.查阅预设权限:umask (或umask –S) 修改预设权限:umask number(eg:022(要拿掉的权限)) 11. 配置文件案隐藏属性:chattr [+-=][ASacdistu] 文件或目录名称 选项与参数: + :增加某一个特殊参数,其他原本存在参数则不动。 - :移除某一个特殊参数,其他原本存在参数则不动。 = :设定一定,且仅有后面接的参数

a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这属性 i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』对于系统安全性有相当大的帮助!只有 root 能设定此属性 注意1:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定 注意2:xfs 文件系统仅支援 AadiS 而已 显示文件隐藏属性:lsattr [-adR] 文件或目录 选项与参数: -a :将隐藏文件的属性也秀出来; -d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名; -R :连同子目录的数据也一并列出来! 12. SUID/SGID/SBIT 权限设定 4 为SUID(仅用在文件) 执行者将具有该程序拥有者(owner) 的权限(前提:执行者需具有x权限) • 2 为SGID(可用于文件与目录)对文件:执行者在执行的过程中将会获得该程序群组 的 的支持。 • 对目录:若用户在此目录下具有w 的权限(可以新建 文 文件),则使用者所建立的新文件,该新文件 的 的群组与此目录的群组相同 • 1 为SBIT(仅用于目录) 当用户在该目录下建立文件或目录时,仅有自己与root 才有 有权力删除该文件 chmod 4755 test <==加入具有 SUID 的权限 chmod 7666 test; ls -l test -rwSrwSrwT 1 root root 0 Jun 16 02:53 test <==具有空的 SUID/SGID/SBIT权限(因为文件没有x权限,所以给予特殊权限也是空的,大写字母表示空权限)

13.:文件档名的搜寻 1. whereis [-bmsu] 文件或目录名 选项与参数: -l :可以列出 whereis 会去查询的几个主要目录而已 -b :只找 binary 格式的文件 -m :只找在说明文件 manual 路径下的文件 -s :只找 source 来源文件 -u :搜寻不在上述三个项目当中的其他特殊文件

2. locate [-ir] keyword(使用前要先updatedb)

选项与参数: -i :忽略大小写的差异; -c :不输出档名,仅计算找到的文件数量 -l :仅输出几行的意思,例如输出五行则是 -l 5 -S :输出 locate数据库纪录的文件/目录数量等 -r :后面可接正规表示法的显示方式 3. find [PATH] [option] [action] 选项与参数:

  1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明 -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件; -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名; -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。 -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名 2. 与使用者或组名有关的参数: -uid n :n 为数字,这个数字是用户的账号 ID,亦即 UID ,这个 UID 是记录在 /etc/passwd 里面与账号名称对应的数字。 -gid n :n 为数字,这个数字是组名的 ID,亦即 GID,这个 GID 记录在/etc/group。 -user name :name 为使用者账号名称喔!例如 dmtsai -group name:name 为组名喔,例如 users ; -nouser :寻找文件的拥有者不存在 /etc/passwd 的人! -nogroup :寻找文件的拥有群组不存在于 /etc/group 的文件! 当你自行安装软件时,很可能该软件的属性当中并没有文件拥有者,这是可能的!在这个时候,就可以使用 -nouser 与 -nogroup 搜寻。

  2. 与文件权限及名称有关的参数: -name filename:搜寻文件名为 filename 的文件; -size [+-]SIZE:搜寻比 SIZE 还要大(+)或小(-)的文件。这个 SIZE 的规格有:c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB还要大的文件,就是『 -size +50k 』 -type TYPE :搜寻文件的类型为 TYPE 的,类型主要有:一般正规文件 (f), 装置文件 (b, c),目录 (d), 连结档 (l), socket (s), 及 FIFO (p) 等属性。 -perm mode :搜寻文件权限『刚好等于』 mode 的文件,这个 mode 为类似 chmod的属性值,举例来说, -rwsr-xr-x 的属性为 4755 ! -perm -mode :搜寻文件权限『必须要全部囊括 mode 的权限』的文件,举例来说,我们要搜寻 -rwxr--r-- ,亦即 0744 的文件,使用 -perm -0744,当一个文件的权限为 -rwsr-xr-x ,亦即 4755 时,也会被列出来,因为 -rwsr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了。 -perm /mode :搜寻文件权限『包含任一 mode 的权限』的文件,举例来说,我们搜寻-rwxr-xr-x ,亦即 -perm /755 时,但一个文件属性为 -rw-------也会被列出来,因为他有 -rw.... 的属性存在!

  3. 额外可进行的动作: -exec command :command 为其他指令,-exec 后面可再接额外的指令来处理搜寻到的结果。 -print :将结果打印到屏幕上,这个动作是预设动作! eg:find /usr/bin /usr/sbin -perm /7000 -exec ls -l { } ; # -exec后指令不支持命令别名 •{} 代表的是『由find 找到的内容』,如上图所示,find 的结果会被放置到{} 位置中; •-exec 一直到; 是关键词,代表find 额外动作的开始(-exec) 到结束(;) ,在这中间的就是find 指令内的额外动作。在本例中就是『ls -l {} 』啰! •因为『; 』在bash 环境下是有特殊意义的,因此利用反斜杠来跳脱。

  4. gzip [-cdtv#] 檔名 (压缩后源文件就不存在了) 选项与参数: -c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理; eg:gzip -c services > services.gz(源文件会保留) -d :解压缩的参数;(或gunzip指令) -t :可以用来检验一个压缩文件的一致性~看看文件有无错误; -v :可以显示出原文件/压缩文件案的压缩比等信息; -# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6 zcat 檔名.gz #查看压缩包文档内容 (zcat/zmore/zless) zgrep ‘关键字’檔名.gz #从压缩包拮取关键字

bzip2 [-cdkzv#] 檔名 选项与参数: -c :将压缩的过程产生的数据输出到屏幕上! -d :解压缩的参数 -k :保留源文件,而不会删除原始的文件喔! -z :压缩的参数 (默认值,可以不加) -v :可以显示出原文件/压缩文件案的压缩比等信息; -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! bzcat 檔名.bz2 #查看压缩包文档内容 (bzcat/bzmore/bzless) bzgrep ‘关键字’檔名.gz #从压缩包拮取关键字

xz [-dtlkc#] 檔名 选项与参数: -d :就是解压缩啊! -t :测试压缩文件的完整性,看有没有错误 -l :列出压缩文件的相关信息 -k :保留原本的文件不删除~ -c :同样的,就是将数据由屏幕上输出的意思! -# :同样的,也有较佳的压缩比的意思! xcat 檔名.xz #查看压缩包文档内容 (xzcat/xzmore/xzless) xzgrep ‘关键字’檔名.gz #从压缩包拮取关键字

tar [-z|-j|-J] [cv] [-f 待建立的新檔名] filename... <==打包与压缩 tar [-z|-j|-J] [tv] [-f 既有的 tar 檔名] <==察看檔名 tar [-z|-j|-J] [xv] [-f 既有的 tar 檔名] [-C 目录] <==解压缩 选项与参数: -c :建立打包文件,可搭配 -v 来察看过程中被打包的档名(filename) -t :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了; -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。 -z :透过 gzip 的支持进行压缩/解压缩:此时档名最好为 *.tar.gz -j :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2 -J :透过 xz 的支持进行压缩/解压缩:此时档名最好为 *.tar.xz 特别留意, -z, -j, -J 不可以同时出现在一串指令列中 -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来! -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项啰!(比较不会忘记) -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 其他后续练习会使用到的选项介绍: -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件 -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意; --exclude=FILE:在压缩的过程中,不要将 FILE 打包! •压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 •查 询:tar -jtv -f filename.tar.bz2 •解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

仅解开单一文件的方法:1.tar -jtv -f /root/etc.tar.bz2 | grep 'shadow'(只解开压缩包里的shadow)2.tar -jxv -f 打包檔.tar.bz2 待解开档名

  1. useradd [-u UID] [-g 初始群组] [-G 次要群组] [-mM] [-c 说明栏] [-d 家目录绝对路径] [-s shell] 使用者账号名 选项与参数: -u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个账号; -g :后面接的那GID,该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。 -G :后面接的组名则是这个账号还可以加入的群组。 -M :强制!不要建立用户家目录!(系统账号默认值) -m :强制!要建立用户家目录!(一般账号默认值) -c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设定的啦~ -d :指定某个目录成为家目录,而不要使用默认值。务必使用绝对路径! -r :建立一个系统的账号,这个账号的 UID 会有限制 (参考 /etc/login.defs) -s :后面接一个 shell ,若没有指定则预设是 /bin/bash 的啦~ -e :后面接一个日期,格式为『YYYY-MM-DD』此项目可写入 shadow 第八字段,亦即账号失效日的设定项目啰; -f :后面接 shadow 的第七字段项目,指定密码是否会失效。0 为立刻失效, -1 为永远不失效(密码只会过期而强制于登入时重新设定而已。) -p 设置密码

passwd [--stdin] [账号名称] <==所有人均可使用来改自己的密码 passwd [-l] [-u] [--stdin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 日期] 账号 <==root 功能

选项与参数: --stdin :可以透过来自前一个管线的数据,作为密码输入,对 shell script 有帮助! -l :是 Lock 的意思,会将 /etc/shadow 第二栏最前面加上 ! 使密码失效; -u :与 -l 相对,是 Unlock 的意思! -S :列出密码相关参数,亦即 shadow 文件内的大部分信息。 -n :后面接天数,shadow 的第 4 字段,多久不可修改密码天数 -x :后面接天数,shadow 的第 5 字段,多久内必须要更动密码 -w :后面接天数,shadow 的第 6 字段,密码过期前的警告天数 -i :后面接『日期』,shadow 的第 7 字段,密码失效日期

密码参数显示:chage chage [-ldEImMW] 账号名 选项与参数: -l :列出该账号的详细密码参数; -d :后面接日期,修改 shadow 第三字段(最近一次更改密码的日期),格式 YYYY-MM-DD -E :后面接日期,修改 shadow 第八字段(账号失效日),格式 YYYY-MM-DD -I :后面接天数,修改 shadow 第七字段(密码失效日期) -m :后面接天数,修改 shadow 第四字段(密码最短保留天数) -M :后面接天数,修改 shadow 第五字段(密码多久需要进行变更) -W :后面接天数,修改 shadow 第六字段(密码过期前警告日期)

usermod [-cdegGlsuLU] username 选项与参数: -c :后面接账号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些账号的说明。 -d :后面接账号的家目录,即修改 /etc/passwd 的第六栏; -e :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦! -f :后面接天数,为 shadow 的第七字段。 -g :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段! -G :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~ -a :与 -G 合用,可『增加次要群组的支持』而非『设定』喔! -l :后面接账号名称。亦即是修改账号名称, /etc/passwd 的第一栏! -s :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。 -u :后面接 UID 数字啦!即 /etc/passwd 第三栏的资料; -L :暂时将用户的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。 -U :将 /etc/shadow 密码栏的 ! 拿掉,解冻啦!

userdel [-r] username 选项与参数: -r :连同用户的家目录也一起删除

16.groupadd [-g gid] [-r] 组名 选项与参数: -g :后面接某个特定的 GID ,用来直接给予某个 GID ~ -r :建立系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。 groupmod [-g gid] [-n group_name] 群组名 选项与参数: -g :修改既有的 GID 数字; -n :修改既有的组名 groupdel [groupname]

gpasswd:群组管理员功能: #关于系统管理员(root)做的动作: gpasswd groupname gpasswd [-A user1,...] [-M user3,...] groupname gpasswd [-rR] groupname 选项与参数: :若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow) -A :将 groupname 的主控权交由后面的使用者管理(该群组的管理员) -M :将某些账号加入这个群组当中! -r :将 groupname 的密码移除 -R :让 groupname 的密码栏失效 #关于群组管理员(Group administrator)做的动作: gpasswd [-ad] user groupname 选项与参数: -a :将某位使用者加入到 groupname 这个群组当中! -d :将某位使用者移除出 groupname 这个群组当中。

17.ACL:针对单一使用者,单一文件或目录来进行r,w,x 的权限规范 •setfacl:设定某个目录/文件的ACL 规范。 •getfacl:取得某个文件/目录的ACL 设定项目; setfacl [-bkRd] [{-m|-x} acl 参数] 目标文件名 选项与参数: -m :设定后续的 acl 参数给文件使用,不可与 -x 合用; -x :删除后续的 acl 参数,不可与 -m 合用; -b :移除『所有的』 ACL 设定参数; -k :移除『预设的』 ACL 参数,关于所谓的『预设』参数于后续范例中介绍; -R :递归设定 acl ,亦即包括次目录都会被设定起来; -d :设定『预设 acl 参数』的意思!只对目录有效,在该目录新建的数据会引用此默认值

#设定规范:『 u:[使用者账号]:[rwx] 』: setfacl -m u:chenmingchang:rx acl_test1 #设定规范:『 g:[群组列表]:[rwx] 』: setfacl -m g:mygroup1:rx acl_test1 针对有效权限 mask 的设定方式: #设定规范:『 m:[rwx] 』 setfacl -m m:r acl_test1 使用者或群组所设定的权限必须要存在于 mask 的权限设定范围内才会生效

getfacl 指令用法: getfacl filename

查询用户相关信息:id finger
last 可以列出从系统建立之后到目前为止的所有登入者信息! 每个账号的最近登入的时间:lastlog 查询在线用户:who

18.撷取命令: cut, grep cut -d'分隔字符' -f fields <==用于有特定分隔字符 cut -c 字符区间 <==用于排列整齐的讯息 选项与参数: -d :后面接分隔字符。与 -f 一起使用; -f :依据 -d 的分隔字符将一段讯息分区成为数段,用 -f 取出第几段的意思; -c :以字符 (characters) 的单位取出固定字符区间;

grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件的方式搜寻数据 -c :计算找到 '搜寻字符串' 的次数 -i :忽略大小写的不同,所以大小写视为相同 -n :顺便输出行号 -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行! --color=auto :可以将找到的关键词部分加上颜色的显示喔!

统计文件里面有多少字?多少行?多少字符:wc [-lwm] 选项与参数: -l :仅列出行; -w :仅列出多少字(英文单字); -m :多少字符;

sort:排序 sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同; -b :忽略最前面的空格符部分; -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法; -n :使用『纯数字』进行排序(默认是以文字型态来排序的); -r :反向排序; -u :就是 uniq ,相同的数据中,仅出现一行代表; -t :分隔符,预设是用 [tab] 键来分隔; -k :以那个区间 (field) 来进行排序的意思

uniq:去重 用法:uniq [选项] [文件] -c, --count //在每行前加上表示相应行目出现次数的前缀编号 -d, --repeated //只输出重复的行 -D, --all-repeated //只输出重复的行,不过有几行输出几行 -f, --skip-fields=N //-f 忽略的段数,-f 1 忽略第一段 -i, --ignore-case //不区分大小写 -s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符 -u, --unique //去除重复的后,全部显示出来,根mysql的distinct功能上有点像 -z, --zero-terminated end lines with 0 byte, not newline -w, --check-chars=N //对每行第N 个字符以后的内容不作对照 --help //显示此帮助信息并退出 --version //显示版本信息并退出

sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过 sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在指令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i :直接修改读取的文件内容,而不是由屏幕输出。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』 function 有底下这些咚咚: a :新增, a 的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)~ c :取代, c 的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行! d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚; i :插入, i 的后面可以接字符串,而这些字符串会在新的一行出现(目前的上一行); p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运作~ s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法! 例如 1,20s/old/new/g 就是啦!(sed ‘s/要被取代的字符串/新的字符串/g’)

19.比较文件差异: diff [-bBi] from-file to-file 选项与参数: from-file :一个档名,作为原始比对文件的档名; to-file :一个档名,作为目的比对文件的档名; 注意,from-file 或 to-file 可以 - 取代,那个 - 代表『Standard input』之意。 -b :忽略一行当中,仅有多个空白的差异(例如 "about me" 与 "about me" 视为相同 -B :忽略空白行的差异。 -i :忽略大小写的不同。

20.工作排程: 只执行一次: at [-mldv] TIME at -c 工作号码 选项与参数: -m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。 -l :at -l 相当于 atq,列出目前系统上面的所有该用户的 at 排程; -d (jobnumber):at -d 相当于 atrm ,可以取消一个在 at 排程中的工作; -v :可以使用较明显的时间格式栏出 at 排程中的任务栏表; -c :可以列出后面接的该项工作的实际指令内容。 TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格式有: HH:MM ex> 04:00 在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此工作。 HH:MM YYYY-MM-DD ex> 04:00 2015-07-30 强制规定在某年某月的某一天的特殊时刻进行该工作! HH:MM[am|pm] [Month] [Date] ex> 04pm July 30 也是一样,强制在某年某月某日的某时刻进行! HH:MM[am|pm] + number [minutes|hours|days|weeks] ex> now + 5 minutes ex> 04pm + 3 days 就是说,在某个时间点『再加几个时间后』才进行。

循环执行: crontab [-u username] [-l|-e|-r] 选项与参数: -u :只有 root 才能进行这个任务,亦即帮其他使用者建立/移除 crontab 工作排程; -e :编辑 crontab 的工作内容 -l :查阅 crontab 的工作内容 -r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。 使用crontab 后, 他的工作会被记录到/var/spool/cron/* 里头去!但请注意,不要使用vi 直接编辑该文件, 因为可能由于输入语法错误,会导致无法执行cron 喔!另外,cron 执行的每一项工作都会被纪录到/var/log/cron 这个登录档中。

范例一:用 dmtsai 的身份在每天的 12:00 发信给自己 [dmtsai@study ~]$ crontab -e #此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。 0 12 * * * mail -s "at 12:00" dmtsai < /home/dmtsai/.bashrc #分 时 日 月 周 |<==============指令串========================>|

关机状态下,任务过期,开机会重新执行任务: anacron [-sfn] [job] anacron -u [job] 选项与参数: -s :开始一连续的执行各项工作 (job),会依据时间记录文件的数据判断是否进行; -f :强制进行,而不去判断时间记录文件的时间戳; -n :立刻进行未进行的任务,而不延迟 (delay) 等待时间; -u :仅更新时间记录文件的时间戳,不进行任何工作。 job :由 /etc/anacrontab 定义的各项工作名称。

21.进程管理 观察目前的背景工作状态: jobs jobs [-lrs] 选项与参数: -l :除了列出 job number 与指令串之外,同时列出 PID 的号码; -r :仅列出正在背景 run 的工作; -s :仅列出正在背景当中暂停 (stop) 的工作。

把正在执行的工作丢到背景:Ctrl+Z (工作会暂停) 将背景工作拿到前景来处理:fg %jobnumber (jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!)

让工作在背景下的状态变成运作中: bg %jobnumber

管理背景当中的工作: kill kill -signal %jobnumber [root@study ~]# kill -l 选项与参数: -l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些? signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知: -1 :重新读取一次参数的配置文件 (类似 reload); -2 :代表与由键盘输入 [ctrl]-c 同样的动作; -9 :立刻强制删除一个工作; -15:以正常的进程方式终止一项工作,与 -9 是不一样的。(默认值)

22.ps :将某个时间点的进程运作情况撷取下来 ps aux <==观察系统所有的进程数据 ps -lA <==也是能够观察所有系统的数据 ps axjf <==连同部分进程树状态 选项与参数: -A :所有的 process 均显示出来,与 -e 具有同样的效用; -a :不与 terminal 有关的所有 process ; -u :有效使用者 (effective user) 相关的 process ; x :通常与 a 这个参数一起使用,可列出较完整信息。输出格式规划: l :较长、较详细的将该 PID 的的信息列出; j :工作的格式 (jobs format) -f :做一个更为完整的输出。 直接背两个比较不同的选项, 一个是只能查阅自己 bash 进程的『ps -l 』一个则是可以查阅所有系统运作的进程『ps aux 』!注意,你没看错,是『ps aux 』没有那个减号(-) !

top:动态观察进程的变化 top [-d 数字] | top [-bnp] 选项与参数: -d :后面可以接秒数,就是整个进程画面更新的秒数。预设是 5 秒; -b :以批次的方式执行 top ,还有更多的参数可以使用喔!通常会搭配数据流重导向来将批次的结果输出成为文件。 -n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。 -p :指定某些个 PID 来进行观察监测而已。在 top 执行过程当中可以使用的按键指令: ? :显示在 top 当中可以输入的按键指令; P :以 CPU 的使用资源排序显示; M :以 Memory 的使用资源排序显示; N :以 PID 来排序喔! T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。 k :给予某个 PID 一个讯号 (signal) r :给予某个 PID 重新制订一个 nice 值。 q :离开 top 软件的按键。

kill -signal PID 选项与参数: -1: 启动被终止的进程,可让该 PID 重新读取自己的配置文件,类似重新启动 -9: 代表强制中断一个进程的进行,如果该进程进行到一半, 那么尚未完成的部分可能会有『半产品』产生,类似 vim 会有 .filename.swp 保留下来。 -15: 以正常的结束进程来终止该进程。由于是正常的终止, 所以后续的动作会将他完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时, 输入这个 signal 也是没有用的。

killall –signal 指令名称: killall [-iIe]/–signal [command name] 选项与参数: -i :interactive 的意思,交互式的,若需要删除时,会出现提示字符给用户; -e :exact 的意思,表示『后面接的 command name 要一致』,但整个完整的指令不能超过 15 个字符。 -I :指令名称(可能含参数)忽略大小写。

nice :新执行的指令即给予新的nice 值 nice [-n 数字] command 选项与参数: -n :后面接一个数值,数值的范围 -20 ~ 19。

renice :已存在进程的nice 重新调整 renice [number] PID 选项与参数: PID :某个进程的 ID 啊!

系统资源的观察

  1. free :观察内存使用情况 free [-b|-k|-m|-g|-h] [-t] [-s N -c N] 选项与参数: -b :直接输入 free 时,显示的单位是 Kbytes,我们可以使用 b(bytes),m(Mbytes)k(Kbytes), 及 g(Gbytes) 来显示单位喔!也可以直接让系统自己指定单位 (-h) -t :在输出的最终结果,显示物理内存与 swap 的总量。 -s :可以让系统每几秒钟输出一次,不间断的一直输出的意思!对于系统观察挺有效! -c :与 -s 同时处理~让 free 列出几次的意思~

  2. uname:查阅系统与核心相关信息 uname [-asrmpi] 选项与参数: -a :所有系统相关的信息,包括底下的数据都会被列出来; -s :系统核心名称 -r :核心的版本 -m :本系统的硬件名称,例如 i686 或 x86_64 等; -p :CPU 的类型,与 -m 类似,只是显示的是 CPU 的类型! -i :硬件的平台 (ix86)

  3. uptime:观察系统启动时间与工作负载

  4. netstat :追踪网络或插槽文件 netstat -[atunlp] 选项与参数: -a :将目前系统上所有的联机、监听、Socket 数据都列出来 -t :列出 tcp 网络封包的数据 -u :列出 udp 网络封包的数据 -n :不以进程的服务名称,以埠号 (port number) 来显示; -l :列出目前正在网络监听 (listen) 的服务; -p :列出该网络服务的进程 PID

fuser:藉由文件(或文件系统)找出正在使用该文件的进程 fuser [-umv] [-k [i] [-signal]] file/dir 选项与参数: -u :除了进程的 PID 之外,同时列出该进程的拥有者; -m :后面接的那个档名会主动的上提到该文件系统的最顶层,对 umount 不成功很有效! -v :可以列出每个文件与进程还有指令的完整相关性! -k :找出使用该文件/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID; -i :必须与 -k 配合,在删除 PID 之前会先询问使用者意愿! -signal:例如 -1 -15 等等,若不加的话,预设是 SIGKILL (-9) 啰!

lsof :列出被进程所开启的文件档名 lsof [-aUu] [+d] 选项与参数: -a :多项数据需要『同时成立』才显示出结果时! -U :仅列出 Unix like 系统的 socket 文件类型; -u :后面接 username,列出该使用者相关进程所开启的文件; +d :后面接目录,亦即找出某个目录底下已经被开启的文件!

pidof :找出某支正在执行的程序的PID pidof [-sx] program_name 选项与参数: -s :仅列出一个 PID 而不列出所有的 PID -x :同时列出该 program name 可能的 PPID 那个进程的 PID