运维大作战之linux基础命令大全

一.

创新互联主要从事做网站、网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务延吉,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108

  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

  1. 文件与目录的检视: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)
  2. 复制文件或目录: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 等也复制了。
    最后需要注意的,如果来源档有两个以上,则最后一个目的文件一定要是『目录』才行!
    1. 移除文件或目录:rm [-fir] 文件或目录
      选项与参数:
      -f :就是 force 的意思,忽略不存在的文件,不会出现警告讯息;
      -i :互动模式,在删除前会询问使用者是否动作
      -r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
    2. 移动文件与目录,或更名:mv [-fiu] source destination
      mv [options] source1 source2 source3 .... directory
      选项与参数:
      -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
      -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
      -u :若目标文件已经存在,且 source 比较新,才会更新 (update)
    3. 直接检视文件内容:cat [-AbEnTv]
      选项与参数:
      -A :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
      -b :列出行号,仅针对非空白行做行号显示,空白行不标行号!
      -E :将结尾的断行字符 $ 显示出来;
      -n :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
      -T :将 [tab] 按键以 ^I 显示出来;
      -v :列出一些看不出来的特殊字符
    4. 非纯文本档: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 ;
    5. 修改文件时间或建置新档:touch [-acdmt] 文件
      选项与参数:
      -a :仅修订 access time;
      -c :仅修改文件的时间,若该文件不存在则不建立新文件;
      -d :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date="日期或时间"
      -m :仅修改 mtime ;
      -t :后面可以接欲修订的时间而不用目前的时间,格式为[YYYYMMDDhhmm]
      10.查阅预设权限:umask (或umask –S)
      修改预设权限:umask number(eg:022(要拿掉的权限))
  3. 配置文件案隐藏属性:chattr [+-=][ASacdistu] 文件或目录名称
    选项与参数:
    • :增加某一个特殊参数,其他原本存在参数则不动。
      • :移除某一个特殊参数,其他原本存在参数则不动。
        = :设定一定,且仅有后面接的参数

a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root 才能设定这属性
i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』对于系统安全性有相当大的帮助!只有 root 能设定此属性
注意1:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定
注意2:xfs 文件系统仅支援 AadiS 而已
显示文件隐藏属性:lsattr [-adR] 文件或目录
选项与参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;
-R :连同子目录的数据也一并列出来!

  1. 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 :后面可接正规表示法的显示方式
    1. find [PATH] [option] [action]
      选项与参数:
    2. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
      -mtime n :n 为数字,意义为在 n 天之前的『一天之内』被更动过内容的文件;
      -mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件档名;
      -mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件档名。
      -newer file :file 为一个存在的文件,列出比 file 还要新的文件档名
    3. 与使用者或组名有关的参数:
      -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 搜寻。
    4. 与文件权限及名称有关的参数:
      -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.... 的属性存在!
    5. 额外可进行的动作:
      -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 环境下是有特殊意义的,因此利用反斜杠来跳脱。
  1. 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 :多少字符;

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


本文名称:运维大作战之linux基础命令大全
文章出自:http://pwwzsj.com/article/ggsghg.html