Linux系统指令备忘

文件管理

  • 路径
绝对路径
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
**相对路径名**
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
基名:basename
目录名:dirname
  • cd :更改目录
使用绝对或相对路径:
cd /home/wang/
cd home/wang
切换至父目录: cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd -
选项:-P
相关的环境变量:
PWD:当前目录路径
OLDPWD:上一次目录路径
  • ls: 查看目录内容
列出当前目录的内容或指定目录
用法:ls [options] [files_or_dirs]
示例:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
  • stat查看文件状态
文件:metadata, data
三个时间戳:
access time:访问时间,atime,读取文件内容
modify time: 修改时间, mtime,改变文件内容(数据)
change time: 改变时间, ctime,元数据发生改变
  • 文件通配符
  * 匹配零个或多个字符
? 匹配任何单个字符
~ 当前用户家目录
~mage 用户mage家目录
~+ 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

  • 创建空文件和刷新时间
touch命令:
touch [OPTION]... FILE...
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建

  • vim常用操作

多行注释

  1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来

  2. 按大写字母I,再插入注释符,例如//

  3. 按esc键就会全部注释了

取消多行注释

  1. 进入命令行模式,按ctrl + v进入 visual block模式

  2. 按字母j,或者k选中注释符号

  3. 按d键就可全部取消注释

  • 光标跳到行尾:shift+$键光标回到行首按0号键

  • 删除光标后的一个单词:按de键

  • 删除光标后的单词并进入插入模式:按ce键

  • cp

-i:覆盖前提示 –n:不覆盖,注意两者顺序
-r, -R: 递归复制目录及内部的所有内容
-a: 归档,相当于-dR --preserv=all
-d:--no-dereference --preserv=links 不复制原文件,只复制链接名
--preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
-p: 等同--preserv=mode,ownership,timestamp
-v: --verbose
-f: --force
-u:--update 只复制源比目标更新文件或目标不存在的文件
--backup=numbered 目标存在,覆盖前先备份加数字后缀

  • scp

scp [options] SRC… DEST/
两种方式:
scp [options] [user@]host:/sourcefile /destpath
scp [options] /sourcefile [user@]host:/destpath
常用选项:

-1: 强制scp命令使用协议ssh1
-2: 强制scp命令使用协议ssh2
-4: 强制scp命令只使用IPv4寻址
-6: 强制scp命令只使用IPv6寻址
-B: 使用批处理模式(传输过程中不询问传输口令或短语)
-C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p:保留原文件的修改时间,访问时间和访问权限。
-q: 不显示传输进度条。
-r: 递归复制整个目录。
-v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port:注意是大写的P, port是指定数据传输用到的端口号
-S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项
  • rsync
    基于ssh和rsh服务实现高效率的远程系统之间复制文件
    使用安全的shell连接做为传输方式, 比scp更快,只复制不同的文件
    • rsync –av /etc server1:/tmp 复制目录和目录下文件
    • rsync –av /etc/ server1:/tmp 只复制目录下文件

选项:

-n 模拟复制过程
-v 显示详细过程
-r 递归复制目录树
-p 保留权限
-t 保留时间戳
-g 保留组信息
-o 保留所有者信息
-l 将软链接文件本身进行复制(默认)
-L 将软链接文件指向的文件复制
-a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
  • pssh
    pssh是一个python编写可以在多台服务器上执行命令的工具,也可实现文件复制

指令选项:

--version:查看版本
-h:主机文件列表,内容格式” [user@]host[:port]”
-H:主机字符串,内容格式” [user@]host[:port]”
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】-O:SSH的选项
-v:详细模式
-A:手动输入密码模式
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x
-i:每个服务器内部处理信息输出
-P:打印出服务器返回信息
  • mv
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
常用选项:
-i: 交互式
-f: 强制

  • 目录操作
tree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径

mkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限

rmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息

rm -r 递归删除目录树

I/O重定向

  • 标准输入和输出

Linux给程序提供三种I/O设备

标准输入(STDIN)-0 默认接受来自键盘的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口
  • I/O重定向:改变默认位置把输出和错误重新定向到文件
STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
>| file 强制覆盖
set +C 允许覆盖
>>原有内容基础上,追加内容
  • 把输出和错误重新定向到文件
2> 覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流
标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
合并标准输出和错误输出为同一个数据流进行重定向
 &> 覆盖重定向
 &>> 追加重定向
 COMMAND > /path/to/file.out 2>&1 (顺序很重要)
 COMMAND >> /path/to/file.out 2>&1
 ():合并多个程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt
  • tr
tr 转换和删除字符
 tr [OPTION]... SET1 [SET2]
 选项:
-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s --squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
 [:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字
[:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号
[:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
  • 管道
less :一页一页地查看输入
ls -l /etc | less

mail: 通过电子邮件发送输入
echo "test email" | mail -s "test" user@example.com

lpr:把输入发送给打印机
echo "test print" | lpr -P printer_name

用户组管理

  • useradd
useradd 创建用户

-u:指定uid
-g:指定gid为主组
-G:指定附加组
-o:不检查uid唯一性,结合-u使用
-c:添加描述信息
-d:指定家目录
-s:指定默认shell
-N:不创建主组,并且加入users组为主组
-r:创建系统用户
-m:创建系统用户时强制创建家目录,结合-r使用
-M:创建登录用户时不创建家目录
-D:修改/etc/default/useradd文件
-s SHELL
-b HOME
-g GROUP
  • usermod 修改用户
-u:修改uid
-g:修改gid
-G:修改附加组,结合-a可以追加附加组
-s:修改默认shell
-c:修改描述信息
-d:修改家目录,结合-m可以搬家
-l:修改用户名
-L:锁定账户
-U:解锁账户,在新系统上不支持对空密码用户解锁
-e YYYY-MM-DD:设置账户过期时间
-f INACTIVE:设定非活动期限

  • userdel 删除用户
-r:删除用户时连家目录一并删除
id 查看用户信息
-u:查看uid
-g:查看gid
-G:查看用户所属的组的ID
-n:显示名称,配合-ugG使用
  • su 切换用户
su USERNAME 非完全切换,部分变量还是原用户的变量
su - USERNAME 完全切换,相当于重新登录
su [-] USERNAME -c 'CMD' 登录到新用户执行CMD命令后返回旧用户
  • passwd 修改用户密码
-d:删除指定用户名密码
-l:锁定用户密码 == usermod -L
-u:解锁用户密码 == usermod -U
-e:强制用户下次登录必须修改密码
-f:强制操作
-n MINDATS:最短使用期限
-x MAXDAYS:最长使用期限
-w WARNDAYS:提前多少天警告
-i INACTIVEDAYS:非活动期限
--stdin 从标准输入接受用户密码,如:echo "user1" | passwd --stdin user1 修改user1用户的密码为user1
  • chage
    修改用户密码默认策略 /etc/login.defs
-d LAST_DAY
-E --expiredate EXPIRE_DATE
-I --inactive INACTIVE
-m --mindays MIN_DAYS
-M --maxdays MAX_DAYS
-W --warndays WARN_DAYS
–l 显示密码策略
  • groupadd 创建组
-g:指定创建组的GID
-r:创建系统组
  • groupmod 修改组
-n:修改组名
-g:修改新的组GID
  • groupdel 删除组

  • gpasswd 修改组密码

-a:将用户添加到指定组

-d:将用户从指定组删除

-A:设置有管理权限的用户列表
  • newgrp
    临时切换主组,如果用户不在此组中则需要密码,否则不需要

  • groupmems 管理和查看组成员

-g, --group groupname 更改为指定组 (只有root)
-a, --add username 指定用户加入组
-d, --delete username 从组中删除用户
-p, --purge 从组中清除所有成员
-l, --list 显示组成员列表
  • groups 查看用户所属组列表
  • chfn 为用户添加描述信息

  • chattr 设置文件特定权限,防止误操作

+i:锁定文件,不可删除,修改
-i:解锁文件
+a:锁定文件,可以追加
-A:锁定文件读时间,可以降低系统负载
  • lsattr 查看锁定文件状态

  • setfacl 设定访问控制列表

-m u|g:USER:0|rwx FILE 添加设置acl权限
-x u|g:USER|GROUP 删除
mask:限高线 -m mask::rwx
-b FILE:清空所有acl权限
-R 递归
-M file.acl 批量设置
-X 批量删除
--set-file=- 参考前边的权限设置指定文件
  • getfacl 查看文件的访问控制列表

文本处理

  • cat 查看文本
-n 显示行号
-A 显示换行符
-s 压缩连续的空行
-E 显示行结束符
  • tac 反转显示文本列
  • rev 反转显示文本行
  • more 分页显示
  • less 分页浏览
  • head 显示文件的头
-n # 显示前#行
-c # 显示前多少字符
  • tail 显示文件的尾
-n # 显示后#行
-c # 显示后多少字符
-f 跟踪文件变化
-F 跟踪文件名,在文件名变化时提示
  • cut 以列为单位来取
-d 指定分隔符,默认为tab
-f 指定列号
-c #-# 字符数
--output-delimiter=STRING 指定输出分隔符
  • paste
    俩个文件列纵向合并,cat !* 俩个文件列横向合并
-d 指定分隔符
-s 所有行合并为一行
  • wc 行数,单词数,字节数
-l 统计有多少行
-c 字节
-m 字符
-w 单词
-L 最长行的长度
  • sort 排序
-t 指定分隔符
-k 第几列排序
-n 按数字排序
-r 倒序
-R 随机排序
-u 去重
  • uniq 删除相邻的重复行合并一个行
-c 显示有几个相邻的行合并成一个
-u 仅显示不曾重复的行
  • diff 比较文件不同的行
-u 输出“统一的(unified)”diff格式文件
patch 通过diff的不同之处可以还原原文件
-b 恢复文件时备份旧文件,被恢复的文件会替换原文件
  • locate
-i:不区分关键字大小写
-n #:打印匹配到的前#行
-r:使用正则表达式
  • find
--maxdepth #:最大搜索目录深度
--mindepth #:最小搜索目录深度
-name:指定文件名
-iname:忽略文件名大小写
-inum #:指定inode号
-samefile FILE:指定和另一个文件相同的inode号,查找一个文件的硬链接
-links #:指定查找有#个链接数的文件
-regex "PATTERN":使用正则表达式匹配
-user USERNAME:查找指定所属者的文件
-group GROUPNAME:查找指定所属组的文件
-uid UID:查找指定UID的文件
-gid GID:查找指定GID的文件
-nouser:查找没有所属者的文件
-nogroup:查找没有所属组的文件
-type:根据文件类型查找
f:普通文件
d:目录
l:符号链接
s:套接字文件
b:快文件
c:字符文件
p:管道文件
-empty:查找空文件
-size:按文件大小查找(c,k,M,G)
#:(#-1,#]
-#:[0,#-1]
+#:(#,+∞)
-atime:按文件各时间查找(天)
#:[#,#+1)
+#:[#+1,∞]
-#:[0,#)
-mtime
-ctime
-amin:按文件各时间查找(分钟)
-mmin
-cmin
-perm 权限匹配
MODE 精确匹配
/MODE ugo是或者的关系
-MODE ugo是并且的关系,包含关系
组合添加查找
-a:并且
-o:或者
-not|!:不是
  • tar:
-c:创建
-f:指定归档后文件
-v:详细信息
-p:保留原有属性
-t:预览
x:解包
-C DIR:解包到指定文件夹
-z:.gz 调用gzip
-j:.bz2 调用bzip2
-J:.xz 调用xz
--exclude DIR:排除指定文件夹
-T filelist:指定打包的文件目录列表
-X filelist:指定不打包的文件列表
  • split -b 10M -d lod.tar.gz new.tar.gz 切割大压缩文件

  • cpio
    命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件

-o 将文件拷贝打包成文件或者将文件输出到设备上
-i 解包,将打包文件解压或将设备上的备份还原到系统
-t 预览,查看文件内容或者输出到设备上的文件内容
-v 显示打包过程中的文件名称
-d 解包生成目录,在cpio还原时,自动的建立目录
-c 一种较新的存储方式

包管理

  • rpm
-i:安装
--test:测试安装
--nodeps:忽略依赖关系
--replacepkgs | replacefiles 重装
--nosignature:不检查来源合法性
--nodigest:不检查包完整性
--noscript:不执行程序包脚本
--nopre:不执行安装前脚本
--nopost:不执行安装后脚本
--nopreun:不执行卸载前脚本
--nopostun:不执行卸载后脚本
-v|-vv:显示过程
-h:显示进度条
--force:强制
-e:卸载
--allmatches:卸载包的所有版本
-U:升级安装
-F:升级
--oldpackage:降级
-q:查询
-a:显示所有包
-f:查询文件是由哪个包生成的
-p:查询未安装的文件名
-c:只看配置文件
-d:显示文档
-i:包的说明信息
-l:查看程序包提供了哪些文件
--scripts:查询包的脚本信息
-R:查询包所依赖的“能力”
--whatprovides CAPABILITY:查询指定的”能力“由哪个包所提供
--whatrequires CAPABILITY:查询指定的“能力”被哪个包所依赖
--changelog:查询rpm包的更新日志
--provides:列出包提供的“能力”
-V:校验包属性是否发生变化,以下为变化的信息
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P capabilities differ
-K:检查包的签名和完整性
--import /etc/pki/rpm-gpg/KEY导入公钥
--root=/path/ 安装到指定“/”下
--initdb:初始化rpm数据库
--rebuilddb:重建rpm数据库
  • yum

选项:

-y 安装或卸载是直接回答yes,不进入交互式
-q 静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件
子命令:

list 列出repo源包含的所有软件包
installed 列出所有已安装的包
install 安装
reinstall 重新安装
repolist [all|disabled] 列出当前生效的repo源[所有|已关闭的]
clean all 清除缓存
update [package1...] 升级软件包
downgrade [package1...] 降级软件包
check-update 检查可升级的包
remove 卸载软件包
info 查看包的详细信息
provides 查找命令由哪些包提供
makecheck 手动生成缓存
search 模糊搜索包信息
deplist 检查依赖包
history 安装卸载的历史
list # 列出指定的操作
info # 列出指定操作的详细信息
undo # 撤销指定id的操作
redo # 重新执行
groupinstall 安装包组
groupupdate 升级包组
grouplist 列出所有包组
groupremove 移除包组
groupinfo 查看包组的详细信息

磁盘分区与文件系统

  • fdisk /dev/DISK
-l:列出分区信息
-c:使用非柱面模式
交互式:
p:打印当前分区表
m:帮助
n:添加新分区
d:删除分区
w:保存退出
l:列出分区类型
t:修改分区类型
q 不保存并退出
partprobe 同步分区表,但在红帽系列6.x上有bug
  • partx
-a /dev/sda 同步分区表(6.x),在增加分区出现不同步时使用
-d --nr m-n /dev/sda 同步分区表(6.x),在删除分区出现不同步时使用
lsblk 查看内存现在生效的分区表
  • mkfs.{ext4|ext3|xfs|…} 格式化指定设备分区
-t  FSTYPE:格式化指定设备分区
-L:设定卷标
-b:块大小
-m #:预留%
-i:为多少个字节创建一个节点号
-N:指定节点号
findfs LABEL=<label>|UUID=<uuid>:查找分区
  • blkid:查看分区属性信息
-U UUID
-L LABEL
  • fsck
    文件系统检查,FS_TYPE一定要与分区上已经文件类型相同,修复时分区一定要在非挂载状态
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
-y:自动回答为yes
-f:强制修复
xfs_info:查看xfs文件系统的信息

xfs_growfs 挂载点 同步调整大小后文件系统,适用xfs
  • mke2fs:格式化ext系列的文件系统
-t {ext2|ext3|ext4} 指定文件系统类型
-b {1024|2048|4096} 指定块大小
-L 卷标 设置卷标
-j == mkfs.ext3
-i # 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小
-N #:指定分区中创建多少个inode
-l # 一个inode记录占用的磁盘空间大小,128---4096
-m #: 默认5%,为管理人员预留空间占总空间的百分比
-o FEATURE[...]:启用指定特性
-o ^FEATURE:关闭指定特性
e2label device [newlabel]:管理ext系列文件系统的LABEL
  • tune2fs
    重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息;super block
-L 'LABEL':修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项,–o ^acl
-U UUID: 修改UUID号
  • dumpe2fs 查看超级块信息,显示分组
    -h:查看超级块信息,不显示分组信息

  • e2fsck:ext系列文件专用的检测修复工具

  • resize2fs
    设备同步调整大小后文件系统,适用ext系列

  • mount

用法:mount 设备 挂载点

LABEL=卷标名 挂载点
UUID=‘xxxxxx’ 挂载点
-r 只读方式挂载
-w 读写挂载,默认
-n 不更新/etc/mtab
-t 指定文件系统,一般不用,系统可以自动识别
-a 自动挂载/etc/fstab中的设备
-B | --bind 目录挂载到目录
-o:选项
acl:启用acl
noacl:关闭acl
remount:重新挂载
ro:只读
async:异步模式
sync:同步模式
loop:可以挂载文件,loop设备
atime/noatime:包含目录和文件
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载,是否支持-a选项
exec/noexec:是否支持将文件系统上运行应用程序
dev/nodev:是否支持在此文件系统上使用设备文件
suid/nosuid:是否支持suid和sgid权限
user/nouser:是否允许普通用户挂载此设备,/etc/fstab使用
defaults:相当于rw, suid, dev, exec, auto, nouser, async
nouuid:不检查UUID的冲突
  • umount {设备名|挂载点} 卸载设备

  • df 显示以挂载的设备信息

-h:以人类可以看懂的方式显示
-H:以1000为单位显示分区大小
-T:显示文件系统
-i:显示节点号
-P:以标准格式显示
  • du 显示目录大小
-h 以人类可以看懂的方式显示
-s 只查看目录
--max-depth # 查看子目录深度
  • dd 转换和复制文件
of=file 输出
if=file 读入
bs=size 每次读写字节大小
ibs=size 每次读入字节大小
obs=size 每次写如字节大小
cbs=size 一次转换 n 个字节,即转换缓冲区大小
skip=blocks 源跳过
seek=blocks 目标跳过
count=#
conv 用以下指定的参数转换文件
ascii 转换 EBCDIC 为 ASCII
ebcdic 转换 ASCII 为 EBCDIC
lcase 把大写字符转换为小写字符
ucase 把小写字符转换为大写字符
nocreat 不创建输出文件
noerror 出错时不停止
notrunc 不截短输出文件
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐
fdatasync 等数据写到磁盘后才返回结果
oflag=direct  :direct 模式就是把写入请求直接封装成io 指令发到磁盘,可以绕过buffer和cache,测试真正的磁盘速度
  • pvcreate:创建pv
vgcreate -s 16M vgname /dev/sd#  创建vg

-s:指定PE大小
lvcreate -n lvname {-L #G|-l #|} vgname 创建lv

-n:指定lv的名字
-L #(G|M):指定lv大小
-l #%FREE | -l #(PE):指定lv大小
-s:快照功能
-p r:快照只读属性
vgextend vgname /dev/sd# 扩展vg
lvextend -r {-l +#|# | -L +5G|5G} /dev/vg#/lv# 扩展lv并同步文件系统
  -r:同步文件系统

网络配置

  • ip 代替ifconfig
    子命令
link
set interface {up|down}:启用或禁用网卡
show interface:显示指定网卡信息
addr
add IP/NETMASK [label interface:#] [scope {global | link | host}] [broadcast IP] dev interface:添加配置临时地址
label:指定别名
scope:作用域
global:作用域为全局
link:仅和此网卡相连的网络生效
host:仅主机可用
broadcast:设定广播地址
del dev interface [label interface:#]:删除IP
flush dev interface [label interface:#]:清空IP
  • route
add IP/NETMASK via GATEWAY dev interface:添加路由
add default via GATEWAY dev interface:添加默认路由
del IP/NETMASK via GATEWAY dev interface:删除路由
flush:清空路由表
show:查看路由表
  • watch
    watch指令可以使一个指令持续地执行并显示,实现实时监控,配置ss,netstat等系统监控指令可以实时监控tcp连接数的变化

  • ss

-n:以数字方式显示,不解析,提高效率
-t:TCP相关
-u:UDP相关
-w:裸套接字
-x:显示unix sock相关信息
-l:查看处于监听状态的端口
-a:查看所有状态的端口
-e:显示更详细的信息
-p:查看相关的进程PID
-m:内存用量
-o:计时器信息
-s:显示当前socket详细信息
state TCP_STATE '( dport = :ssh or sport = :ssh )'
established
listen
fin_wait_1
fin_wait_2
syn_sent
syn_recv
  • ping:测试网络命令
-c count:ping的次数
-W timeout:超时时间,配合-c使用
-I ipaddress:指定用自己主机的IP去ping对方主机
-s size:每次ping发出的数据包大小,最大值65507
-f:竭尽自己主机的能力发出数据包
  • tcpdump:抓包工具
-n:禁止解析IP
-i interface:指定网卡接口
tcp|udp|icmp|arp:指定包协议
  • mtr:网络连通性判断工具(包名:mtr)很好用

使用方法:
mtr -h 提供帮助命令
mtr -v 显示mtr的版本信息
mtr -r 已报告模式显示

参数选项:

mtr -s 用来指定ping数据包的大小
mtr -n no-dns不对IP地址做域名解析
mtr -a 来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒
mtr -4 IPv4
mtr -6 IPv6

curl工具常用选项

  • –compressed 要求返回是压缩的格式
  • -H/–header 自定义首部信息传递给服务器
  • -i 显示页面内容,包括报文首部信息
  • -I/–head 只显示响应报文首部信息
  • -D/–dump-header 将url的header信息存放在指定文件中
  • –basic 使用HTTP基本认证
  • -u/–user <user[:password]>设置服务器的用户和密码
  • -L 如果有3xx响应码,重新发请求到新位置
  • -O 使用URL中默认的文件名保存文件到本地
  • -o 将网络文件保存为指定的文件中
  • –limit-rate 设置传输速度
  • -0/–http1.0 数字0,使用HTTP 1.0
  • -v/–verbose 更详细
  • -C – 选项可对文件使用断点续传功能
  • -c/–cookie-jar 将url中cookie存放在指定文件中
  • -x/–proxy <proxyhost[:port]> 指定代理服务器地址
  • -X/–request 向服务器发送指定请求方法
  • -U/–proxy-user 代理服务器用户和密码
  • -T 选项可将指定的本地文件上传到FTP服务器上
  • –data/-d 方式指定使用POST方式传递数据
  • -b name=data 从服务器响应set-cookie得到值,返回给服务器

elinks工具

elinks [OPTION]… [URL]…
– -dump: 非交互式模式,将URL的内容输出至标准输出
– -source:打印源码

  • wget:网络下载工具
-q:静默模式
-c:断点续传
-P /path/DIRNAME:下载的文件保存到指定文件夹
-O /path/FILENAME:下载的文件保存到指定位置,并重命名
--limit-rate=# K|M:限速至# K|M

系统监控

  • ps:查看进程状态

ps的选项风格有三种,BSD风格:不加“-”直接写选项;Unix风格:短选项;GUN风格:长选项。

BSD风格:

a:所有终端的进程
x:和终端无关的进程
u:显示进程所有者的信息
f:显示进程之间的层次关系
z :显示selinux的相关属性
k:指定排序的项,在项前加"-"表示反向排序,如:-ni
o:指定查看项,多个项目用","分割
user:运行该进程的用户
pid:进程号
%cpu:占用cpu比例
%mem:占用内存比例
vsz:虚拟内存集
rss:常驻内存集
tty:终端
stat:进程运行状态
start:进程启动时间
time:占用cpu时间片的总时长
cmd:显示进程名
pri:优先级
ni:nice值
rtprio:实时优先级
psr:运行cpu编号
comm=:显示启动该进程的命令
etime:进程已经启动了多长时间
L:显示o支持的属性

unix风格:

-e:显示所有进程
-f:显示完整格式列表
-H:以缩进方式显示进程间关系
-u username:有效用户
-U username:真正的用户
-g groupname:有效组
-G groupname:真正的组
-p PID:显示指定PID的进程
--ppid PID:显示指定PID的进程的子进程
--sort:排序
-M:显示selinux的相关属性
-t 终端:显示指定终端运行的进程
-C 程序名:查看程序运行的状态
  • pstree:显示进程树

  • pidof:查询指定进程的PID

    • lsof
  • pgrep:搜索指定的进程


-u uid: effective user,生效者 -U uid: real user,真正发起运行命令者 -t terminal: 与指定终端相关的进程 -l: 显示进程名 -a: 显示完整格式的进程名 -P pid: 显示指定进程的子进程
  • top:实时监控系统状态工具

交互按键:

M:按内存使用排序
P:按CPU使用排序
l:显示、隐藏top第一行
t:改变/隐藏CPU的显示方式
m:改变/隐藏内存的显示方式
1:单CPU和总CPU
s:改变刷新间隔,默认3s
k:杀死进程
PID -- signal(15 关闭进程)
q:退出
W:将状态保存到~/.roprc

选项:

-d #:指定时间间隔,秒
-b:显示所有进程的状态
-n #:刷新#次自动退出
  • iotop:用来监视磁盘I/O使用状况

选项:

-o:只看产生IO的进程
-b:非交互式
-n #:检测#次,默认为一直检测
-d #:检测间隔#秒
-p PID:检测指定PID的进程
-u:检测指定用户产生IO的情况
-P:仅显示进程,默认显示线程
-a:显示累计的IO量
-k:使用KB为单位
-t:显示时间戳
-q 只在第一次监测时显示列名
-qq 永远不显示列名
-qqq 永远不显示I/O汇总

交互按键:

left和right方向键:改变排序
r:反向排序
o:切换至选项-o
p:切换至-p选项
a:切换至-a选项
q:退出
i:改变线程的优先级
  • dstat:系统资源统计工具
-c: 显示cpu相关信息
-d: 显示disk相关信息
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
--tcp:显示tcp相关统计数据
--udp:显示udp相关统计数据 
--unix:显示unix-sockets相关统计数据 
--raw:显示raw相关统计数据
--socket:显示socket相关统计数据
--ipc:显示ipc相关统计数据
--top-cpu:显示最占用CPU的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程
  • kill:向进程发送控制信号
-n # PID:向进程发信号
%作业号:结束作业
-l:查看所有信号
  • screen : 开启虚拟终端
参数说明

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数

screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window 
C-a p -> Previous,切换到前一个 window 
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换 
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> Time,显示当前时间,和系统的 load 
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
    C-b Backward,PageUp 
    C-f Forward,PageDown 
    H(大写) High,将光标移至左上角 
    L Low,将光标移至左下角 
    0 移到行首 
    $ 行末 
    w forward one word,以字为单位往前移 
    b backward one word,以字为单位往后移 
    Space 第一次按为标记区起点,第二次按为终点 
    Esc 结束 copy mode 
C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上

简单使用:

开启一个虚拟终端

screen -S test 一个虚拟终端被开启
执行指令:eg:top
退出虚拟终端,命令可继续执行:Ctrl+a 松手按 d
查看当前已建立的虚拟终端:screen -ls
进入一个虚拟终端: screen -r 终端号 eg: screen -r 5038 或 screen -r name
杀掉一个虚拟终端:Ctrl+a 松手按 k

  • at
-V 显示版本信息
-l: 列出指定队列中等待运行的作业;== atq
-d: 删除指定的作业;== atrm
-c: 查看具体作业任务
-f /path/from/somefile:从指定的文件中读取任务
-m:当任务被完成之后,将给用户发送邮件,即使没有标准输出
  • crontab
-l: 列出当前任务
-e: 编辑任务
-r: 移除任务
-u username: 给其他用户编辑任务
-i:删除任务时提示,配合-r使用

系统相关指令

  • sysctl:修改内核参数的工具
-p 重新读入/etc/sysctl.conf
-a 列出当前生效的内核参数
-w net.ipv4.ip_forward = 1 即时生效
  • uname
-r:显示内核版本号
-a:显示全部信息
-n:显示主机名
  • lsmod:显示已经装载的模块

  • modinfo:显示模块的详细信息

-n:显示模块路径
-p:显示模块参数
-a:显示模块作者
-d:显示模块描述信息
-l:显示模块的遵循的协议
  • modprobe:装载模块
-r:卸载模块
  • depmod:内核模块依赖关系文件及系统信息映射文件的生成工具

  • insmod:指定装载模块文件,但不自动解决依赖模块

  • rmmod:卸载模块

  • time cmd 检测命令执行花的时间

  • lscpu:查看CPU信息

  • lspci:查看pci相关信息

  • lsusb:查看usb相关信息

  • lsblk:查看块设备相关信息

  • hal-device:查看所有硬件信息(CentOS6.x)

点赞