linux基础命令

cd命令
cd用来变更用户所在目录的后面如什么都不跟会直接到当前
用户的根目录下 cd 后面只能是目录名,而不能是文件名
cd – 表示上一次所在的目录
cd ~ 表示用户的家目录
cd ..返回上一级

用 pwd 命令 查看当前所在位置

ls命令
ls -l 列出详细信息
ls -a 列出所有文件,包括隐藏文件
ls -t 按文件的最后更改时间排序
ls -ld 针对目录的,s只列出目录本身

which 命令用来查找某个命令的绝对路径。

mkdir 命令
mkdir用来创建目录其中mkdir -p选项很管用常用于创建一串目录
mkdir -m用来指定要创建目录的权限 不常用

rmdir命令
rmdir -p命令可以删除一大串空目录 若目录中含有子(非空)目录无法删除

rm命令
rm命令是最常用的删除命令 rm -r命令等同于rmdir   rm -rf命令不管删除文件还是目录都可以

cp命令
cp -r命令拷贝目录 若不加-r 则拷贝不起目录
cp -i命令安全选项遇到一个存在的文件会问是否覆盖

mv命令
mv 选项 源文件 目标文件
mv -i命令当目标文件存在时会问用户是否覆盖 同cp -i
目标文件是目录,存在或不存在,移动的结果是不一样的,如果存在,则会把源文件移动到目标文件目录中。不存在的话移动完后,目标文件是一个文件。

cat命令
cat命令用于查看一个文件的内容并显示出来 cat命令可不加任何选项直接跟文件名
cat -n把行数显示到屏上
cat -A显示所有东西包括特殊字符

tac命令
tac命令和cat命令一样 只不过是倒序显示

more命令
more命令是查看文件内容的 more命令后面可直接跟文件名 好处是可以一屏看完后按空格再看下一屏想提前退出只需要按Q键即可

less命令
less命令后面可直接跟文件名但比more好在可以上下翻页 按空格/J键下翻页 按K上翻页 使用快捷键 Ctrl+b和Ctrl+f分别实
现上翻页和下翻页  按一下/键可以向下查找某一字符串 而?键向上查找某一字符串 按G可以快速到文本最末端 按g可以快速返回到文件首部按q键即退出

head命令
head命令后面可直接跟文件名 则显示文件的前十行 加-n选项则显示文件前n行

tail命令
tail命令和head一样 后面直接跟文件名则显示文件最后十行加-n选项则显示文件最后n行
tail -f动态显示文件最后十行 如文件是不断增加的则用-f选项

chmod命令
chmod命令用来变更文件或目录的权限。语法:chmod [选项] 数字 文件名 (其中数字代表九位权限详见书笔记)
chmod -R 表示级联更改属性

更改目录或文件权限的另一方法
User 拥有者简称U Group 所属组简称G  other其他用户简称O all所有用户简称a
chmod u=rwx,og=rx 文件或目录名
chmod u-x 文件或目录名 //对文件或目录名所属用户减少执行权限

chgrp命令用来改变文件或目录所属的用户组
chgrp [组名] [文件名]  此命令用得较少
chgrp 命令也可以更改目录的所属组,但是只能更改目录本身 想级联更改子目录及子文件,可使用如下命令
chgrp -R [组名][文件名]

chown命令
chown命令更改文件的所有者及拥有者
chown [ -R ] 账户名 文件名   或  chown [ -R ] 账户名:组名 文件名
chown [ -R ]将指定目录下的所有文件及子目录一并处理

chattr 文件隐藏属性
chattr [+-=][Asaci] [文件或者目录名]
+ – =: 分别为增加、减少、设定
A 增加该属性后,文件或目录的 atime 将不可被修改;
s 增加该属性后,会将数据同步写入磁盘中;
a 增加该属性后,只能追加不能删除,非 root 用户不能设定该属性;
c 自动压缩该文件,读取时会自动解压;
i 增加后,使文件不能被删除、重命名、设定链接接、写入、新增数据;
常用的为 a 和 i 两个选项。

lsattr命令 用来读取文件或者目录的特殊权限
lsattr [-aR] [文件/目录名]
-a: 类似与 ls 的-a 选项,即连同隐藏文件一同列出;
-R: 连同子目录的数据一同列出

suid 特殊权限
该权限针对二进制可执行文件,当用户执行该执行文件时,会临时拥有该执行文件所有者的权限。passwd命令启用了SUID功能,所以一般用户在使用 passwd命令修改密码时,会临时拥有了passwd命令所有者root用户的权限,这样一般用户才可以将自己的密码写入/etc/shadow文件

sgid 特殊权限
作用和 set uid 类似,前提是这个文件是可执行的二进制文件,当设置set gid 后,执行该文件的用户会临时以该文件所属组的身份执行。若目
录被设置这个权限后, 任何用户在此目录下创建的文件或目录都具有和该目录所属的组相同的组。

sticky_bit 特殊权限
一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对
该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。

对于这些特殊权限的配置,方法和之前的一样。比如我想给一个文件增加一个 set uid 权限,那么命令
为 chmod u+s filename,而去掉这个权限则为 chmod u-s filename。同理,想设置 set gid 则为
chmod g+s dirname。设置 stick_bit 权限为 chmod o+t dirname。

which 查找可执行文件的绝对路径 使用方法 which [命令] 如 which vi

whereis 查找文件(很少用)
whereis [-bmsu] [文件名称] 或whereis ls(此方法类似模糊查找只要文件名包含这个ls字符就会列出来。)
-b: 只找 binary 文件
-m: 只找在说明文件 manual 路径下的文件
-s: 只找 source 来源文件
-u: 没有说明档的文件

find 命令
find[路径][参数]
常用参数
-atime +n/-n: 访问或执行时间大于/小于 n 天的文件
-ctime +n/-n: 写入、更改 inode 属性(例如更改所有者、权限或者链接)时间大于/小于 n 天的文件
-mtime +n/-n: 写入时间大于/小于 n 天的文件
find .-name 文件名 直接查找该文件名的文件,这个选使用很多

软连接和硬链接

硬链接   是直接使用了和源文件相同的 inode 直接链接到文件放置的块区域
(1)不能跨文件系统 因为不同的文件系统有不同的inode tadle
(2)不能连接目录
ln [-s] [来源文件] [目的文件]
ln 常用的选项就一个-s,如果不加就是建立硬链接,加上就建立软链接。

软链接: 是建立一个独立的文件,而这个文件的作用是当读取这个链接文件时,
它会把读取的行为转发到该文件所 link 的文件上。

增加和删除用户组
增一个组:groupadd [-g GID] groupname
不加-g选项则按照系统默认的gid创建组 与用户一样 gid也是从500开始的
加-g选项则自定义gid 如 groupadd -g 511 grptest2

删除组: groupdel
没有特殊选项,但有一种情况不能删除组 如user1 组中包含 user1 账户,只有删除 user1 账户后才可以删除该组。

增加和删除用户
增加用户语法 : useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]
-u 自定义UID
-g 使其属于已经存在的某个组,后面可以跟组 id, 也可以跟组名
-d: 自定义用户的家目录
-M: 不建立家目录
-s: 自定义 shell
useradd 不加任何选项直接跟用户名,则会创建一个跟用户名同样名字的组。-g 选项后面跟一个不存在的 gid 会报错,提示该组不存在。-M 选项加上后则不建立用户家目录

删除用户:userdel 语法:userdel[-r] username
-r 选项的作用只有一个,就是删除账户的时候连带账户的家目录一起删除。

usermod修改用户属性
usermod 是更改已经存在的用户相关属性。常用选项如下
-u: 更改用户的 uid
-g: 更改用户属组,后面可以跟组 id, 也可以跟组名
-d: 更改用户的家目录
-s: 更改用户的 shell

passwd修改用户密码
语法:passwd[username]
passwd 后面不加用户名则是修改当前账户的密码。如果你登录的是 root 账户,后面可以跟普通账户的名字,意思是修改指定账户的密码。

命令mkpasswd 用来生成密码
若没有此命令则yum -y install expect
指定密码长度为12 零个特殊字符 三个数字  mkpasswd -l 12 -s 0 -d 3
-l指定密码长度 -s 指定特殊字符的个数, -d 指定数字的个数

命令su 语法[-] username  后面可以跟”-“,也可以不跟。
普通用户 su 不加用户名时就是切换到root用户  “-“这个字符的作用是,加上后会初始化当前用户的各种环境变量

命令df 查看已挂载磁盘的总容量、使用容量、剩余容量等。可以不加任何参数,默认按 k 为单位显示。
df 常用选项有 -i、 -h、 -k、 -m
-i 查看 inodes 使用状况
-h 使用合适的单位显示,例如 G M
-k、 -m 分别以 K 和 M 为单位显示

du命令 用来查看某个目录或文件所占空间大小,不指定单位的话,默认显示单位为 K。
语法:du [-abckmsh][文件或目录名]
-a 全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小。
-b 列出的值以 bytes 为单位输出。
-k 以 KB 为单位输出,和默认不加任何选项的输出值是一样的。
-m 以 MB 为单位输出。
-h 系统自动调节单位,例如文件太小可能就几 K,那么就以 K 为单位显示,如果大到几 G,则就以 G为单位显示。
-c 选项为最后加总,这个选项不常用。
-s 只列出总和,这个使用的最多。

fdisk 用来分区大小小于等于 2T 的磁盘,如果大于 2T 需要用 parted 工具
fdisk 命令语法: fdisk [-l ] [设备名称] 选项只有一个。
-l 后边不跟设备名会直接列出系统中所有的磁盘设备以及分区表,加上设备名会列出该设备的分区表。
fdisk 如果不加-l 则进入另一个模式,在该模式下如果输入 m 会列出常用的命令
常用的有 p、 n、 d。
P 打印当前磁盘的分区情况。
n 建立一个新的分区
w 保存操作
q 退出
d 删除一个分区
使用 n 命令新建分区,它会提示是要 e(扩展分区) 还是 p(主分区)。

mke2fs、 mkfs.ext2、 mkfs.ext3 和 mkfs.ext4
常用的选项有:
-b 分区时设定每个数据区块占用空间大小,目前支持 1024、 2048 以及 4096 bytes 每个块
-i 设定 inode 的大小
-N 设定 inode 数量,有时使用默认的 inode 数不够用,所以要自定设定 inode 数量
-c 在格式化前先检测一下磁盘是否有问题,加上这个选项后会非常慢
-L 预设该分区的标签 label
-j 建立 ext3 格式的分区,如果使用 mkfs.ext3 就不用加这个选项了
-t 用来指定什么类型的文件系统,可以是 ext2、 ext3 也可以是 ext4
-m 格式化时,指定预留给管理员的磁盘比例,是一个百分比,只针对 mke2fs 命令

e2label命令 用来查看或修改分区的标签 很少使用,只要了解一下即可

磁盘挂载与卸载
在挂载该分区前,挂载点(目录)下必须是个空目录。其实目录不为空并不影响所挂载分区的使用。但是
一旦挂载上了,那么该目录下以前的东西就不能看到了。只有卸载掉该分区后才能看到。

mount命令 可以查看当前系统已经挂载的所有分区,以及分区文件系统的类型,挂载点和一些选项等信
息。如果想知道某个分区的文件系统类型直接用该命令查看即可。
mount 命令常用的选项有: -a、-t、 -o。

另一种挂载方式
需要用到UUID 可以通过 blkid 命令获取各分区的 UUID 直接输入blkid 命令即可
当然这个命令后面也可以指定哪个分区 如blkid /dev/sdb5 详见书第171页

第三章 liunx系统提高篇
vim 一般模式下移动光标
h 或者向左方向键 光标向左移动一个字符
l 或者向右方向键 光标向右移动一个字符
k 或者向上方向键 光标向上移动一个字符
j 或者向上方向键 光标向下移动一个字符
Ctrl+f 或 pageup 键   屏幕向前移动一页
Ctrl+b 或 pagedown 键 屏幕向后移动一页
数字 0 或者 Shift + 6 移动到本行行首
Shift + 4             移动到本行行尾
gg                    移动到首行
G                     移动到尾行
nG(n 是任意数字)      移动到第 n 行
vim 一般模式下删除、复制和粘贴
x,X        x向后删除一个字符, X 向前删除一个字符
nx         向后删除 n 个字符
dd         删除/剪切光标所在的那一行
ndd( n 为数字) 删除/剪切光标所在行起向下一共 n 行
yy         复制光标所在行
p          从光标所在行向下粘贴已经复制或者粘贴的内容
P          从光标所在行向上粘贴已经复制或者粘贴的内容
nyy        从光标所在行算起向下复制 n 行
u          还原上一步操作
vim 命令行模式 查找和替换
/word                 向光标之后寻找一个字符串为 word,按 n 向后继续搜索
?word                 向光标之前寻找一个字符串为 word,按 n 向前继续搜索
n1,n2s/word1/word2/g  在 n1, n2 行之间查找 word1 并替换为 word2,不加 g 则只替换每行的第一个 word1
1,$s/word1/word2/g    替换文档中所有的 word1 为 word2,不加 g 只替换每行的第一个 word1
:w      保存文本
:q      退出 vim
:w!     强制保存,在 root 用户下即使文本只读也可以完成保存
:q!     强制退出,所有改动不生效
:wq     保存并退出
128
:set nu 显示行号
:set nonu 不显示行号
压缩
gzip 语法:gzip [-d#] filename 其中#为 1-9 的数字
-d: 解压缩时使用
-#: 压缩等级, 1 压缩最差, 9 压缩最好, 6 为默认

bzip 语法: bzip2 [-dz] filename
bzip2 只有两个选项需要你掌握。
-d: 解压缩
-z: 压缩
可以加‘z’也可以不加,都可以压缩文件

xz 压缩和解压缩
xz 和 gzip, bzip2 用法是一样的
xz语法: xz [-dz] filename
-d: 解压缩
-z: 压缩
压缩时,可以加 -z 也可以不加,都可以压缩文件,-d 则为解压的选项

zip和unzip
zip语法 zip[压缩后的包名][要压缩的文件或者目录]
zip可以压缩目录也可以压缩文件,压缩目录时,需要指定目录下的文件 如 zip 1.txt.zip 1.txt
使用 zip 压缩目录时,必须要加上 -r 选项(子目录一起压缩)
unzip解压  unzip 1.txt.zip

tar 打包工具详解
语法: tar [-zjxcvfpP] filename
tar 命令有多个选项,其中不常用的我做了标注。
-z: 同时用 gzip 压缩
-j: 同时用 bzip2 压缩
-x: 解包或者解压缩
-t: 查看 tar 包里面的文件
-c: 建立一个 tar 包或者压缩文件包
-v: 可视化
-f: 后面跟文件名,压缩时跟 -f 文件名 意思是压缩后的文件名为 filename,解压时跟 -f 文件名,
意思是解压 filename。请注意,如果是多个参数组合的情况下带有 -f,请把 -f 写到最后面。
-p: 使用原文件的属性,压缩前什么属性压缩后还什么属性。(不常用)
-P: 可以使用绝对路径。(不常用)
–exclude filename : 在打包或者压缩时,不要将 filename 文件包括在内。(不常用)

tar 打包和压缩并用
tar 命令非常好用的一个功能就是可以在打包的时候直接压缩,它支持 gzip 压缩和 bzip2 压缩以及 xz。
-zxvf 用来解压.tar.gz 的压缩包
bzip2 的压缩包使用 -cjvf 选项来压缩
-tf  可以查看包或者压缩包的文件列表
解压.tar.bz2 的压缩包也很简单 tar -jxvf [要解压缩的文件或者目录]
打包使用 xz 的形式压缩是这样的:tar -cJvf [压缩包名] [要压缩的文件或者目录]
解压也很简单:tar -Jxvf [要解压缩的文件或者目录]

rpm 安装和卸载
每一个 rpm 包的名称都由-和.分成了若*分。就拿abrt-cli-2.0.8-15.el6.centos.i686.rpm这个包来解释一
下。 abrt-cli为包名, 2.0.8则为版本信息,15.el6.centos为发布版本号, i686为运行平台。常见的有 i386、 i586、 i686、 只有x86_64为64系统的
有些 rpm 包并没有写具体的平台而是 noarch,这代表这个 rpm 包没有硬件平台限制。例如alacarte-0.10.0-1.fc6.noarch.rpm
-i: 安装的意思
-v: 可视化
-h: 显示安装进度
另外在安装一个 rpm 包时常用的附带参数有:
–force: 强制安装,即使覆盖属于其他包的文件也要安装。
–nodeps :当要安装的 rpm 包依赖其他包时,即使其他包没有安装,也要安装这个包。
升级一个 rpm 包
命令 rpm -Uvh filename
-U: 即升级的意思
卸载一个 rpm 包
命令 rpm -e filename
这里的 filename 是通过 rpm 的查询功能所查询到的卸载时只需要包名即。如rpm -e libjpeg-turbo-devel

查询一个包是否安装
命令 rpm -q rpm 包名 (这里的包名,是不带有平台信息以及后缀名的) 如 rpm -q libjpeg-turbo-devel

我们可以使用 rpm -qa 查询当前系统所有安装过的 rpm 包 如 rpm -qa |head(只列出前十个)

得到一个已安装 rpm 包的相关信息
命令 rpm -qi 包名 (同样不需要加平台信息与后缀名)

列出一个 rpm 包安装的文件
命令 rpm -ql 包名

列出某一个文件属于哪个 rpm 包
命令 rpm -qf 文件的绝对路径

yum 工具详解

搜索一个 rpm 包 yum search [相关关键词]
安装一个 rpm 包 yum install [-y] [rpm 包名]
不加 -y 选项,则会以与用户交互的方式安装 问用户是否需要安装,输入 y 则安装,输入 n 则不安装。
卸载一个 rpm 包命令 yum remove [-y] [rpm 包名]
卸载某个rpm 包一定要看清楚了,不要连其他重要的 rpm 包一起卸载了,以免影响正常的业务。
升级一个 rpm 包 命令 yum update [-y] [rpm 包]

搭建本地 yum 仓库

yum 如何下载 rpm 包到本地
下载一个rpm包而不安装命令  yum install 包名 -y –downloadonly
下载到指定目录而不安装命令 yum install 包名 -y –downloadonly –downloaddir=/usr/local/src (/usr/local/src为指定目录)

第四章 Shell 编程入门
我们可以通过 alias把一个常用的并且很长的指令别名一个简洁易记的指令。如果不想用了,还可以用 unalias 解除别名功能。
直接敲 alias 会看到目前系统预设的 alias.
alias [命令别名]=[‘具体的命令’]
env 命令可全部列出系统预设的全部系统变量。

cut 命令语法:cut -d’分隔字符'[-cf] n 这里的 n 是正整数
-d 后面指定分隔符,用单引号引起来
-f 指定第几段
-c 后面只有一个数字表示截取第几个字符,后面跟一个数字区域,表示截取从几到几
如: cat /etc/passwd |cut -d ‘:’-f 1|head -n5 表示-d后面跟分隔字符,这里使用冒号作为分割字符,-f1就是截取第一段,-f和1之间的空格可有可无
sort 命令
语法: sort [-t 分隔符] [-kn1,n2] [-nru] 这里的 n1 < n2
-t 分隔符 :作用跟 cut 的-d 一个意思
-n :使用纯数字排序
-r :反向排序
-u :去重复
-kn1,n2 :由 n1 区间排序到 n2 区间,可以只写-kn1,即对 n1 字段排序
如果 sort 不加任何选项,则从首字符向后,依次按 ASCII 码值进行比较,最后将他们按升序输出。
例如:head -n5 /etc/passwd |sort -t: -k3 -n   -t 后面跟分隔符, -k 后面跟数字,表示对第几个区域的字符串排序, -n 则表示使用纯数字排序

uniq 和 tee 命令
使用 uniq 的前提是需要先给文件排序,否则不管用。 uniq 用来去重复的行,最常用的选项只有一个:-c :统计重复的行数,并把行数写在前面

tee 命令,后跟文件名,类似与重定向 ―>‖,但是比重定向多了一个功能,在把文件写入后面所跟的文
件中的同时,还显示在屏幕上

tr 和 split 命令
tr 用于替换字符,常用来处理文档中出现的特殊符号,常用的选项有两个:
-d:删除某个字符, -d 后面跟要删除的字符
-s:把重复的字符去掉
最常用的就是把小写变大写:
tr ‘[a-z]”[A-Z]’
如果是针对一个字符串就不再管用了,所以你只需简单了解这个 tr 即可,以后你还会学到更多可以实现针对字符串操作的工具。

split 用于切割文档,常用选项:
-b:依据大小来分割文档,单位为 byte
如果 split 不指定目标文件名,则会以 xaa xab… 这样的文件名来存取切割后的文件。当然我们也可以
指定目标文件名 例如:[root@localhost split_dir]# split -b500 passwd 123
-l:依据行数来分割文档

shell 中连接符(并且、和、或者)

使用;时,不管 command1 是否执行成功都会执行 command2。
使用&&时,只有 command1 执行成功后, command2 才会执行,否则 command2 不执行。
使用‖时, command1 执行成功后 command2 不执行,否则去执行 command2,总之 command1 和command2 总有一条命令会执行

2.0/2.1/2.2 grep 过滤
语法: grep [-cinvABC] ‘word’ filename
-c :打印符合要求的行数
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2 则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行
-r : 会把目录下面所有的文件全部遍历
–color: 把匹配到的关键词用红色标识

awk 命令
有三种方式调用awk
1.命令行方式
awk [-F  field-separator]  ‘commands’  input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。

例子:awk -F ‘:’ ‘{print $1}’ 1.txt

2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk

3.将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

Linux 系统日常运维管理
查看系统负载命令 w 详见书206

vmstat 详解
vmstat 命令打印的结果共分为 6 部分: procs, memory, swap, io, system, cpu。
(1) procs 显示进程相关信息
r:表示运行和等待 cpu 时间片的进程数。如果长期大于服务器 cpu 的个数,则说明 cpu 不够用了。
b:表示等待资源的进程数。比如,等待 I/O、内存等,这列的值如果长时间大于 1,则需要关注一下了。
(2) memory 内存相关信息
swpd:表示切换到交换分区中的内存数量
free:当前空闲的内存数量
buff:缓冲大小,(即将写入磁盘的)
cache:缓存大小,(从磁盘中读取的)
(3) swap 内存交换情况
si:由交换区写入到内存的数据量
so:由内存写入到交换区的数据量
(4) io 磁盘使用情况
bi:从块设备读取数据的量(读磁盘)
bo:从块设备写入数据的量(写磁盘)
(5) system 显示采集间隔内发生的中断次数
in:表示在某一时间间隔中观测到的每秒设备中断数
cs:表示每秒产生的上下文切换次数
(6) CPU 显示 cpu 的使用状态
us:显示了用户下所花费 cpu 时间的百分比
sy:显示系统花费 cpu 时间百分比
id:表示 cpu 处于空闲状态的时间百分比
wa:表示 I/O 等待所占用 cpu 时间百分比
st:表示被偷走的 cpu 所占百分比(一般都为 0,不用关注)
以上所介绍的各个参数中,我经常会关注 r 列, b 列和 wa 列
IO 部分的 bi 以及 bo 也是要经常参考的对象。如果磁盘 io 压力很大时,这两列的数值会比较高。
si、 so 两列的数值比较高,并且在不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

vmstat 查看系统状态
vmstat 1 5 表示每隔一秒钟输出一次状态,共输出 5 次
vmstat 1   表示表示每隔 1 秒输出一次状态且一直输出,除非我们按 Ctrl + c 结束

top命令
top命令的特点是把占用系统资源( CPU,内存,磁盘 IO 等)最高的进程放到最前面
top命令打印出了很多信息,包括系统负载( loadaverage)、进程数( Tasks)、cpu 使用情况、内存使用情况以及交换分区使用情况.
用top命令重点查看进程使用系统资源详细状况。要关注的也就几项: %CPU、 %MEM、 COMMAND  %CPU CPU使用率 %MEM为使用内存率COMMAND
top 状态下,按shift + m,可以按照内存使用大小排序。按数字 1 可以列出各颗 cpu 的使用状态。
命令top -bn1表示非动态打印系统资源使用情况,可以用在 shell 脚本中

netstat 查看端口
netstat -lnp(打印当前系统启动哪些端口)以及 netstat -an(打印网络连接状况)

抓包工具 tcpdump 和 tshark

iptables 详解
iptables 只是防火墙( netfilter)的一个实现工具。

命令 crontab
Linux 任务计划功能的操作都是通过 crontab 这个命令来完成的。常用的选项有:
-u:指定某个用户,不加-u 选项则为当前用户
-e:制定计划任务
-l:列出计划任务
-r:删除计划任务
crontab -l命令 查看已经设定的任务计划
crontab -r命令 删除计划任务
例如:
01 10 05 06 3 echo “ok” > /root/cron.log
从左到右,依次为:分,时,日,月,周,命令行.含义是:在6月5日(这一天必须是星期3)的10点01分执行命令echo “ok” > /root/cron.log

crontab -e实际上是打开了/var/spool/cron/username(如果是 root 则打开的是/var/spool/cron/root)这个文件。使用的是 vim 编辑器,可能会出错,所以一定要使用crontab -e来编辑。

linux 日志
日志格式:
auth –pam 产生的日志
authpriv –ssh,ftp 等登录信息的验证信息
cron –时间任务相关
kern –内核
lpr –打印
mail –邮件
mark(syslog)–rsyslog 服务内部的信息,时间标识
news –新闻组
user –用户程序产生的相关信息
uucp –unix to unix copy, unix 主机之间相关的通讯
local 1~7 –自定义的日志设备
日志级别:
debug –有调式信息的,日志信息最多
info –一般信息的日志,最常用
notice –最具有重要性的普通条件的信息
warning –警告级别
err –错误级别,阻止某个功能或者模块不能正常工作的信息
crit –严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert –需要立刻修改的信息
emerg –内核崩溃等严重信息
none –什么都不记录
从上到下,级别从低到高,记录的信息越来越少
连接符号
. : 表示大于等于 xxx 级别的信息
.=:表示等于 xxx 级别的信息
.!:表示在 xxx 之外的等级的信息

/var/log/messages 核心系统日志文件是 Linux 系统最核心的日志文件,假若某个服务没有定义日志,那么该服务产生的日志就会到这个文件中。该日志每周归档一次。

xargs 和 exec 详解
xargs应用
它的作用就是把管道符前面的输出作为 xargs 后面的命令的输入。它的好处在于可以把本来两步或者多步才能完成的任务简单一步就能完成。 xargs 常常和 find 命令一起使用
如 查找当前目录创建时间大于 10 天的文件,然后再删除。find . -mtime +10 |xargs rm
[root@localhost test]# ls *.txt |xargs -n1 -i{} mv {} {}_bak
[root@localhost test]# ls
1.txt_bak 2.txt_bak 3.txt_bak 4.txt_bak 5.txt_bak
xargs -n1 –i{} 类似 for 循环, -n1 意思是一个一个对象的去处理, -i{}把前面的对象使用{}取代, mv {}
{}_bak 相当于 mv 1.txt 1.txt_bak。

exec 应用
[root@localhost test]# find . -mtime +10 -exec rm -rf {} \;

这个命令中也是把{}作为前面 find 出来的文件的替代符,后面的\为;的脱意符,不然 shell 会把分号作
为该行命令的结尾。这个-exec 有时候也挺实用的,它同样可以实现刚刚上面批量更改文件名的需求

url命令
url 是 Linux 系统命令行下用来简单测试 web 访问的工具,几个常用的选项你要掌握
-x 可以指定 ip 和端口,省略写 hosts,方便实用
-I 可以把访问的内容略掉,只显示状态码,-v 可以显示详细过程
-u 可以指定用户名和密码
-O(大写)直接下载页面或者对象  还可以使用 -o 自定义名字

rsync 格式
rsync 的命令格式如下:
rsync [OPTION]… SRC DEST
rsync [OPTION]… SRC [USER@]HOST:DEST
rsync [OPTION]… [USER@]HOST:SRC DEST
rsync [OPTION]… [USER@]HOST::SRC DEST
rsync [OPTION]… SRC [USER@]HOST::DEST
rsync -av 123.txt /tmp/
上面例子表示把当前目录下的 123.txt 同步到/tmp/目录下,也可以更改目标文件的名字, rsync -av123.txt /tmp/234.txt
如果是远程拷贝的话就是这样的形式了: IP:path (如: 10.0.2.34:/root/)

rsync 常用选项
-a 归档模式,表示以递归方式传输文件,并保持所有属性,等同于-rlptgoD,-a 选项后面可以跟一个
–no-OPTION 这个表示关闭-rlptgoD 中的某一个    例如 -a–no-l 等同于-rptgoD

-r 对子目录以递归模式处理,主要是针对目录来说的,如果单独传一个文件不需要加-r,但是传输的
是目录必须加-r 选项
-v 打印一些信息出来,比如速率,文件数量等
-l 保留软链结
-L 向对待常规文件一样处理软链结,如果是 SRC 中有软连接文件,则加上该选项后将会把软连接指
向的目标文件拷贝到 DST
-p 保持文件权限
-o 保持文件属主信息
-g 保持文件属组信息
-D 保持设备文件信息
-t 保持文件时间信息
–delete 删除那些 DST 中 SRC 没有的文件

常用的选项页仅仅那么几个: (-a -v –delete
–exclude ),熟记。



本文转自 a928154159 51CTO博客,原文链接:http://blog.51cto.com/zhibeiwang/1788788

上一篇:约瑟夫环Ruby算法


下一篇:来自Google、Amazon和Facebook等7大知名互联网的系统扩展经验