****** 原文档下载连接 ******
目录
systemctl 7系统服务管理命令 5
sysctl 查看和设定/proc/sys内的所有可更改参数 5
系统登陆信息相关 5
mailx 6
rpm 6
yum 6
chkconfig(7中已经弃用,保留少量功能) 7
httpd 7
ip 7
ifconfig 7
vim 8
Vim的几种模式 8
文档操作 8
基本移动 9
基本插入 10
复制、粘贴、删除 10
查找 11
替换 12
拼写检查 13
一次编辑多个文件 13
分屏编辑 13
关闭子窗口 14
切换和移动窗口 14
撤消与重做(normal模式) 14
文件加解密 14
文件的编码 15
文件格式 15
多行缩进缩出 16
执行外部命令 16
在你忘记用 root 方式打开文件时的文件保存 16
按时间回退文件 16
把 Vim 变为十六进制编辑器 17
跳到上一个/下一个位置 17
把当前文件转化为网页 17
cp 17
cd 17
chroot根切换 18
selinux相关 18
ss 19
ps 19
pstree 19
pidof 20
free 20
top 20
vmstat 缓存信息显示 23
dstat 25
发送消息wall,write,talk, 26
date 26
ls 26
file 27
echo 27
mkdir 27
mktemp 27
tree 27
cp 27
tail 28
head 28
alias 28
unalias撤销别名 28
source . bash重读配置文件 28
grep 29
tr 替换 30
useradd 30
groupadd 31
userdel 31
groupdel 31
usermod 31
groupmod 32
passwd 32
gpasswd 32
newgrp 33
chmod 33
chown 33
iptables 33
ipvsadm lvs配置 36
setfacl 37
getfacl 38
find 38
fdisk相关 39
后续处理命令 40
mount 40
Ldd 40
Ln 41
lsmod 显示内核已加载的模块 41
modinfo 显示模块详细内容 41
depmod产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用 41
modprobe 41
uname 42
Sync 强制同步(立刻)同步(superblock/操)作到设备 42
kill=killall 42
wc 42
sudo 43
jobs 43
screen 43
Sleep 44
crontab 44
at 45
batch 让系统在空闲时选择时间自动执行 45
tar 46
ssh 46
openssl 46
scp 47
ftp相关 47
文本处理 47
cut 47
send –options ‘cmd’ 48
awk 48
diff文档对比 49
Vimdiff vim打开打开2个文档进行对比 49
xshell内置的环境变量 49
xshell下的正则表达式 49
systemctl 7系统服务管理命令
1.status 状态查看 2.list-units –t service加载服务查看 3.list-unit-files –t service 自启状态查看
4.disable/enable service 设置开机自启/关闭开机自启
5.list-units –t target 查看所有运行级别
6.set-default/get-default name.target 设置/获取运行级别
7.isolate 运行级别切换
8.list-dependencies name.service/name.target 显示当前服务(在所有运行级别下状态)/运行级别下所有开机启动或开机非启动服务(绿点为启动,红点不启动)
9. systemctl daemon-reload 重新加载/etc/system/system/下各服务的units文件
journalctl 日志管理
- journalctl –xe 添加注释信息并分页显示
- journalctl _UID=1000 --since today 查看ID1000的今天的系统日志
- journalctl -u ssh.service --since today 查看服务ssh今天的日志
- journalctl -f -u apache 刷新显示
- journalctl -k -b -1 仅显示本次启动的内核日志 –k内核日志 –b 指定某次启动 -1配合-b 指本次启动
sysctl 查看和设定/proc/sys内的所有可更改参数 - sysctl –a 打印所有可更改参数
- sysctl –p /file 根据文件修改
- sysctl –w net.ipv4.ip_forward=1 将ip_forward启用
系统登陆信息相关 - last 当前系统成功登陆日志
- lastb当前系统失败登陆日志
- lastlog 当前系统每个用户最近一次登陆
mailx
mailx –s “title” user@ip <file.txt
echo “someting” |mailx user@ip
rpm
1.-ql 显示程序所有相关文件 2.-qc 显示程序相关配置文档
3.-q 程序安装版本 4.-qi 安装包详细信息 5.-i 安装
6.-h 哈希编码 7.-U 升级安装,支持联网
yum - yum clean all 清理yum缓存
- yum repolist 列出仓库中的所有软件包
- yum grouplist 列出软件包组
- yum install –y 安装并自动处理依赖关系 creatrepo 可创建依赖文件
- yum groupinstall –y 安装软件包组
- yum search 查找软件包
- yum info 软件包详细信息
- yum updateinfo/update 查看升级信息/升级
- yum remove/groupremove 删除软件包/软件包组
- yum history yum使用日志
chkconfig(已经弃用)
chkconfig --list network 显示network的自启的运行级别
chkconfig --level 0 network on/off/reset 设置network服务在level 0级别自启
httpd
1.-t 检查语法 2.-M 显示静态加载的模块 3.-D 配合-t使用 DUMP_MOUDLES可显示模块信息
ip
语法:ip option @ # dev 接口名
@1.Link 连接相关 2.address 地址相关 3.route 路由相关
#1.add 添加 2.del 删除 3.change 修改 4.replace 替换 5.list 打印
Option:常用选项-s status更详细列出
Dev 跟接口名
ifconfig - ifconfig promisc eth0 开启混杂模式,数据包目的地址不是自己,仍然接收
- ifup eth0 启用网卡eth0
- ifdown etho 禁用网卡eth0
vim
Vim的几种模式
• 正常模式:可以使用快捷键命令,或按:输入命令行。
• 插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
• 可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
• 替换模式:正常模式下,按R进入。
文档操作
• :e file --关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
• :e! file --放弃对当前文件的修改,编辑新的文件。
• :e+file – 开始新的文件,并从文件尾开始编辑。
• :e+n file – 开始新的文件,并从第n行开始编辑。
• :enew --编译一个未命名的新文档。(CTRL-W n)
• :e – 重新加载当前文档。
• :e! – 重新加载当前文档,并丢弃已做的改动。
• :e#或ctrl+^ – 回到刚才编辑的文件,很实用。
• :f或ctrl+g – 显示文档名,是否修改,和光标位置。
• :f filename – 改变编辑的文件名,这时再保存相当于另存为。
• :w – 保存修改。
• :n1,n2w filename – 选择性保存从某n1行到另n2行的内容。
• :wq – 保存并退出。
• ZZ – 保存并退出。
• :x – 保存并退出。
• :q——退出当前窗口。(CTRL-W q或CTRL-W CTRL-Q)
• :saveas newfilename – 另存为
• :Sex – 水平分割一个窗口,浏览文件系统;
• :Vex – 垂直分割一个窗口,浏览文件系统;
基本移动
• 0: 移动到行首。
• :n 移动到第n行。
• H: 把光标移到屏幕最顶端一行。
• L: 把光标移到屏幕最底端一行。
• gg: 到文件头部。
• G: 到文件尾部。
• . 本行
基本插入
• i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+就插入了36个+组成的分割线。
• I: 在当前行第一个非空字符前插入;
• a: 在光标后插入;
• A: 在当前行最后插入;
• o: 在下面新建一行插入;
• O: 在上面新建一行插入;
• :r filename在当前位置插入另一个文件的内容。
• :r !date 在光标处插入当前日期与时间。
• :r !command可以将其它shell命令的输出插入当前文档。
复制、粘贴、删除
• y: 复制在可视模式下选中的文本。
• yy: 复制整行文本。
• y0: 从光标当前位置复制到行首。
• :m,ny 复制m行到n行的内容。
• d: 删除(剪切)在可视模式下选中的文本。
• d0: 删除(剪切)当前位置到行首的内容
• [n] dd: 删除(剪切)1(n)行。
• :m,nd 剪切m行到n行的内容。
• p: 在光标之后粘贴。
• P: 在光标之前粘贴。
查找
• /something: 在后面的文本中查找something。
• ?something: 在前面的文本中查找something。
• /pattern/+number: 将光标停在包含pattern的行后面第number行上。
• /pattern/-number: 将光标停在包含pattern的行前面第number行上。
• n: 向后查找下一个。
• N: 向前查找下一个。
• vimgrep前面可以加数字限定搜索结果的上限,如
• :1vim/pattern/ % 只查找那个模式在本文件中的第一个出现。
• 其实vimgrep在读纯文本电子书时特别有用,可以生成导航的目录。
• 比如电子书中每一节的标题形式为:n. xxxx。你就可以这样:
• 然后用:cw或:copen查看结果,可以用C-w H把quickfix窗口移到左侧,就更像个目录了。
替换
• :n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
• 所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。
还有一种比替换更灵活的方式,它是匹配到某个模式后执行某种命令,
语法为 :[range]g/pattern/command
表示对于以一个空格和xyz开头的行执行normal模式下的dd命令。
关于range的规定为:
• 如果不指定range,则表示当前行。
• m,n: 从m行到n行。
• 0: 最开始一行(可能是这样)。
• .: 当前行
拼写检查
• :set spell-开启拼写检查功能
• :set nospell-关闭拼写检查功能
• ]s-移到下一个拼写错误的单词
• [s-作用与上一命令类似,但它是从相反方向进行搜索
• z=-显示一个有关拼写错误单词的列表,可从中选择
• zg-告诉拼写检查器该单词是拼写正确的
• zw-与上一命令相反,告诉拼写检查器该单词是拼写错误的
一次编辑多个文件
• 使用:n编辑下一个文件。
• :2n 编辑下2个文件。
• 使用:N编辑上一个文件。
• 使用:wnext,保存当前文件,并编辑下一个文件。
• 使用:wprevious,保存当前文件,并编辑上一个文件。
• 使用:args 显示文件列表。
• :n filenames或:args filenames 指定新的文件列表。
• vi -o filenames 在水平分割的多个窗口中编辑多个文件。
• vi -O filenames 在垂直分割的多个窗口中编辑多个文件。
分屏编辑
• vim -o file1 file2:水平分割窗口,同时打开file1和file2
• vim -O file1 file2:垂直分割窗口,同时打开file1和file2
关闭子窗口
• :qall – 关闭所有窗口,退出vim。
• :wall – 保存所有修改过的窗口。
• :only – 只保留当前窗口,关闭其它窗口。(CTRL-W o)
• :close – 关闭当前窗口,CTRL-W c能实现同样的功能。 (象 :q :x同样工作 )
切换和移动窗口
• ctrl+w: 切换到下一个窗口。或者是ctrl+w w。
• ctrl+w p: 切换到前一个窗口。
撤消与重做(normal模式)
• [n] u: 取消一(n)个改动。
• :undo 5 – 撤销5个改变。
• :undolist – 你的撤销历史。
• ctrl + r: 重做最后的改动。
• U: 取消当前行中所有的改动。
文件加解密
• vim -x file: 开始编辑一个加密的文件。
• :X – 为当前文件设置密码。
• :set key= – 去除文件的密码。
文件的编码
• :e ++enc=utf8 filename, 让vim用utf-8的编码打开这个文件。
• :w ++enc=gbk,不管当前文件什么编码,把它转存成gbk编码。
• :set fenc或:set fileencoding,查看当前文件的编码。
• 在vimrc中添加set fileencoding=ucs-bom,utf-8,cp936,vim会根据要打开的文件选择合适的编码。 注意:编码之间不要留空格。 cp936对应于gbk编码。 ucs-bom对应于windows下的文件格式。
• 让vim 正确处理文件格式和文件编码,有赖于 ~/.vimrc的正确配置
文件格式
大致有三种文件格式:unix, dos, mac. 三种格式的区别主要在于回车键的编码:dos 下是回车加换行,unix 下只有 换行符,mac 下只有回车符。
• :e ++ff=dos filename, 让vim用dos格式打开这个文件。
• :w ++ff=mac filename, 以mac格式存储这个文件。
• :set ff,显示当前文件的格式。
• 在vimrc中添加set fileformats=unix,dos,mac,让vim自动识别文件格式。
多行缩进缩出
正常模式下,按两下>;光标所在行会缩进。如果先按了n,再按两下>;,光标以下的n行会缩进。对应的,按两下<;,光标所在行会缩出。
如果在编辑代码文件,可以用=进行调整。在可视模式下,选择要调整的代码块,按=,代码会按书写规则缩排好。或者n =,调整n行代码的缩排。
执行外部命令
• :! cmd 执行外部命令。
• :!! 执行上一次的外部命令。
• :r !cmd 将命令的返回结果插入文件当前位置。
• :m,nw !cmd 将文件的m行到n行之间的内容做为命令输入执行命令。
在你忘记用 root 方式打开文件时的文件保存
• :w !sudo tee % 直接以 root 方式保存。
按时间回退文件
:earlier 1m 把文件回退到 1 分钟以前的状态。
:later 1m 进行相反的转换
把 Vim 变为十六进制编辑器
:%!xxd 文件转换为十六进制模式
:%!xxd –r 恢复原来的状态
跳到上一个/下一个位置
Ctrl+o 跳回之前修改的地方
Ctrl+I 回退上面的跳动
把当前文件转化为网页
:%TOhtml 生成一个 HTML 文件来显示文本,并在分开的窗口显示源代码
cp
Cp filename {,.bak} 快速备份
cd
cd !$ 把上个命令的参数作为cd参数使用
cd - 返回进入此目录之前所在的目录
cd … 返回上级目录
cd ~ username 切换至指定用户目录
chroot根切换
chroot newroot
selinux相关
*1.setenforce {0.1} 调整selinux为宽松模式或严格模式
*2.stat file 查看文件的selinux上下文信息
*3.chcon –u system_u file 修改file的selinux上下文user信息为system_u - chcon –r object_r file 修改file的selinux上下文role信息为object_r
- chcon –t admin_home_t 修改file的selinux上下文tepe信息为
admin_home_t - chcon –u system_u -R /directory 修改文件夹内所有文件selinux上下文
- chcon --reference=file1 file2 根据file1为模板,修改file2
*8. restorecon [-f infilename] (-R file/-e directory) [从文件中读将要还原的列表] 恢复文件/文件夹的selinux上下文
*9.getsebool –a 获取所有可更改的selinux布尔值
10.getsebool zebra_write_config 显示zebra_write_config的布尔值
*11.setsebool zebra_write_config=1/on 开启zebra_write_config
12.setsebool –P zebra_write_config=1/on 更改后并写进策略文件中
ss
常用
-n:不解析服务名称,以数字方式显示; -a:显示所有的套接字;
-t:只显示tcp套接字; -u:只显示udp套接字;
-l:显示处于监听状态的套接字; -p:显示使用套接字的进程信息;
-s:列出当前主机套接字总信息
其他
-m:显示套接字的内存使用情况; -i:显示内部的TCP信息; -4:只显示ipv4的套接字; -o:显示计时器信息;
-6:只显示ipv6的套接字; -d:只显示DCCP套接字;
-w:仅显示RAW套接字; -x:仅显示UNIX域套接字
ss –pl 查看进程使用的socket
ss -pl | grep 3306 找出打开套接字/端口应用程序
ps
1.a 与终端有关 2.x 与终端无关 3.u 与用户中心组有关
4.-u dump 指明用户 5.ps au 所有用户
pstree
1.pstree –a 全部
pidof
1.pidof sshd 查看sshd服务触发的所有进程ID
free
- free –l 详细内存使用信息
- free –k/m/g 按k/m/g 显示
- free –s 1 每秒刷新显示
top
1.u 输入指定用户查看 2.k 输入指定PID,杀死
3.r 输入指定PID,可重新设置nice值 4.f 进入新界面,指定显示内容
5.h 显示帮助
Top界面参数
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)
第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
第六行空行
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑
vmstat 缓存信息显示
1.vmstat –S k(1000b)/K(1024b)/m(1000k)/M(1024k) 显示格式
2.vmstat –D 2 输出disk table并2秒刷新一次
3.vmstat –s 2 输出vm table并2秒刷新一次
输出内容意义
1.Procs(进程)
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
b: 等待IO的进程数量。
2.Memory(内存)
swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
3.Swap
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
4.IO(现在的Linux版本块的大小为1kb)
bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
6.system(系统)
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
7.CPU(以百分比表示)
us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
dstat
1.dstat -N eth1,total:有多块网卡时,指定要显示的网卡
2.dstat –f 启用所有大写功能
3. --output 文件:此选项也比较有用,可以把状态信息以csv的格式重定向到指定的文件中
4. dstat –-fs 文件系统
5. dstat –bits/float/integer 以b/小数/B 显示
6. --ipc:显示ipc消息队列,信号等信息。
7.–socket:用来显示tcp udp端口状态。
8. -l:显示系统负载情况。
dstat还可以监控其他程序状态,如mysql等,详查man
发送消息wall,write,talk,
1.wall + message 广播给所有用户
2.write 发送给指定用户
echo “message” |write username [ttyname(例如pts/1)]
echo “message” |write username@ip
3.talk username 建立时时对话
Talk username@ip
date
1.%F 2016-8-16 方式输出 date +%F 2.%D 16/8/16输出英式时date +%D
3.%T 13:53:18仅输出时间 date +%T
3.%Y 仅输出年份 4.%m 仅输出月份 5.%d 仅输出日期
6.%H 仅输出小时 7.%M 仅输出分钟 8.%S 仅输出秒钟
9.%C 仅输出世纪 10. date +%F*%T 2018-10-0514:10:28 连接符自定
日期设置格式 date 月份日期小时分钟年份.秒钟
ls
1.Ls –ld 显示文件夹属性 2.ls –r 按字母逆序显示,默认顺序 3.ls –R 递归显示 4.ls –h 转换成大小输出(K,M,G)
file
1.fiel –d 输出debug信息 2.file filename 显示文件格式
echo
1.echo –e 使用转义字符 \n,\t
mkdir
1.mkdir –p /1/2/3 递归创建 2.mkdir –m umask directory 创建时指明权限
3.mkdir –v 显示详细信息
mktemp
1.mktemp /tmp/tmp.xxx 创建临时文件
2.mktemp –d /tmp/tmp.xxx 创建临时文件夹
3.mktemp –-tepdir=/tmp/test 指明临时文件创建位置
tree
1.tree –d 只显示文件夹 2.tree –l 3 设置显示深度
cp
1.cp –i 交互式 2.cp –r ,-R 递归复制 3.cp –a 复制文件原有一切属性
4.-p 保留源文件权限 5.-f 强制
tail
1.tail –10 查看文件后10行 2.tail –f 追踪文档改变
head
1.head -10 查看文档前10行
alias
1.alias c=”clear” 定义命令别名 ~/.bashrc 定义此处对当前用户有用 /etc/bashrc 对所有用户有效
2./rm 不使用命令别名
unalias撤销别名
1.unalias c 撤销别名c=”clear” 2.unalias –a 撤销所有别名
source . bash重读配置文件
1.source filename 2. . filename
grep
- grep –o 仅输出匹配到的字符串 2.grep –v 反向匹配
3.grep –i 忽略大小写 4.grep –A 10 向后显示10行
5.grep –B 10 向前显示10行 6.grep –c 10 前后多输出10行
扩展正则表达式
1.字符匹配
(1)egrep .a file 匹配a前只有一个任意字符的行
(2)egrep a. file 匹配a后只有一个任意字符的行
(3)egrep [a-z]a file 匹配a前面存在a-z任意个任意字符的行
(4) egrep a[a-z] file 匹配a后面存在a-z任意个任意字符的行
(5) egrep [^a-z]a file 匹配a前面除去字符a-z任意个其他字符的行
2.次数匹配,用在要匹配的字符后
(1)egrep a* file 匹配任意次a
(2)egrep a.* file 匹配任意字符任意次
(3)egrep a? file 匹配a 0次后1次
(4)egrep a+ file 至少匹配a 1次
3.位置锚定
(1)egrep ^a file 以a开头的行
(2)egrep a$ file 以a结尾的行
(3)egrep ^$ file 空行
(4)egrep a{3} file 匹配a 3次
(5)egrep a{2,5} file 匹配a 2次到5次
4.分组
(1)egrep (ab) file 匹配ab 1次
tr 替换
1.tr ab cd file2 将file1中的ab替换成cd并存入file2(最后一个参数不能是file1)
2.tr –d ab file2 将file1中ab删除并存入file2中(最后一个参数不能是file2)
useradd
1.useradd –u 501 username 指明用户ID 501 并创建(root 为0,系统用户1-499,登陆用户500+)
2.useradd –g 501 username 指明组ID 501
3.useradd –c gust-user username 用户注释信息
4.useradd –d /usr/home username 指定用户家目录
5.useradd –s tcsh username 指定shell
6.useradd –G 组名/组ID username 指定附加组
7.useradd –p xxxx username 添加密码
8.useradd –r username 创建系统用户
groupadd
1.groupadd –f groupname 若组存在返回成功
2.groupadd –g groupname 指定组ID
3.groupadd –p xxxx groupname 指定密码
4.groupadd –r groupname 创建系统用户组
userdel
1.userdel –r username 删除用户及其家目录
groupdel
1.groupdel groupname 删除组
usermod
1.usermod –u 502 username 设置新的UID 502
2.usermod –g GID/组名 username设置新的基本组
3.usermod –G GID/组名 username设置新的附加组 –a 并保留原有附加组
4.usermod –s ctsh username新的shell
5.usermod –c message username新的注释信息
6.usermod –d /home username 新的家目录
7.usermod –l(爱奥) newname usrename 新用户名
8.usermod –L username 锁定用户,不可登陆
9.usermod –U username 解锁用户
groupmod
1.groupmod –n newname groupname 新组名
2.groupmod –g ID 新组ID
3.groupmod –p xxxx groupname 新密码
passwd
1.passwd username 修改密码
2.passwd –n days usrname 指定用户最短使用期限
3.passwd –x days username 指定用户最长使用期限
4.passwd –w days username 指定用户提前警告期限
5.passwd –I days username 指定用户非活动期限
6.passwd –l(爱奥) username 锁定用户登录
7.passwd –u username 解锁用户
8.passwd –stdin username xxxx 从标准输入获取密码参数
gpasswd
1.gpasswd groupname 添加组密码
2.gpasswd –a GID/组名 将用户添加至组中
3.gpasswd –d user 不做user的附加组
4.gpasswd –A username1 username2 指定此组有管理权限的用户
5.gpasswd –r groupname 删除密码
newgrp
1.newgrp groupname 临时切换至此组中(此组需要有密码)exit 退出
chmod
1.chmod umask file 修改文件权限
2.chmod u+(r,w,x,s) g+(r,w,x,s) o+(r,w,x,t) file 修改文件权限
3.chmod –R (1.|2.) /directory 递归修改权限
4.chmod –reference=file1 file2 用file1为模板修改file2的权限
chown
1.chown user:group file 修改文件属主属组
2.chown –reference=file1 file2 用file1为模板修改file2的属主属组
iptables
1.-t iptables –t filter/nat/mangle/raw 操作指定的表,默认是filter
2.-L iptables –t filter –L INPUT 4 –n –v -x –-line-numbers 打印filter表中INPUT链上的第4条规则
–n 用数字方式显示源IP/目的IP,用端口号方式显示服务
-v 详细信息显示 –vv 更详细 –vvv 更更详细
-x 打印计数器结果精确值,和-vv连用才又意义
–line-numbres 显示规则编号
2.1-Z iptables –t filter 清零filter表上的计数器
3.-A添加 iptables –t filter –A INPUT/OUTPUT/FORWARD/
PREROUTING/POSTROUTING
向filter表中的input/output/forward/prerouting/Postrouting链添加新规则
3.1-N自定义新的链 iptables –t filter –N newlink 在filter表自定义新链newlink
3.2-X 删除自定义链 iptables –t filter –X newlink 删除自定义链newlink
3.3-E 重命名自定义链 iptables –t filter –E newlink newname
4.-I插入 iptables –t filter –I INPUT 7 规则 将规则插入到filter表INPUT链的第7条
5.-P默认策略 iptables –t filter –P INPUT ACCEPT/DROP/REJECT 指定filter表的INPUT链设置默认策略
6.-D删除 iptables –t filter –D INPUT 6 删除filter表INPUT链上的第6条规则
7.iptables –F 清空所有规则
8.-R替换 iptables -t filter –s 192.168.0.254/24 –p tcp -–dport 80 –j REJECT –R INPUT 2
将filter表INPUT链的第2条规则替换掉
规则定义
1.iptables –t filter –A INPUT –s 192.168.0.254 –d 192.168.0.61
–p {tcp/udp/icmp} –m multiport (–-sport 默认为全部端口) –-dport 80,22,21 –j ACCEPT
-s 源地址精确匹配 或者192.168.0.0/24网络地址匹配
-d 目的地址精确匹配 或者192.168.0.0/24网络地址匹配
-m 扩展规则 –p为隐式扩展不需要-m
-p 协议 tcp udp icmp
-m multiport 支持一次定义最多15个端口
–sport –-dport 源端口目的端口,不写为默认,默认所有
-j 处理策略
TARGET 交给自定义链处理
PRTURN 返回调用链,定义在自定义链中,处理后返回结构给标准链
ACCEPT 接受; DROP 丢弃; REJECT 拒绝; LOG 记录;
MARK mark 打标记,其他进程可引用此标记
REDIRECT port 端口重定向
MASQUERADE IP 地址伪装
DNAT 目标地址转换; SNAT 源地址转换
2.iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m iprange –-src-range 192.168.0.1-192.168.0.254 -j ACCEPT
-m iprange 支持地址范围
–scr-range源地址范围 --dst-range目的地址范围 - iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m string –-algo bm|kmp –-string “move” –j ACCEPT
-m string 支持检查语法 –-algo检查语法时使用的算法 bm/kmp
–string匹配的字符串 - iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m time
–timestart 14:00 –-timestop 16:00 –j ACCEPT
-m time 仅接受14:00到16:00的访问
–timestart开始时间 --timestop结束时间
–datestart开始日期 –-datestop 结束日期
–monthdays月份 --weekdays周几 - iptables –t filter –I INPUT 7 –d 192.168.0.61 –p tcp –-dport 80 –m state NEW,ESTABISHED –j ACCEPT
-m state 支持连接状态检查
/proc/sys/net/nf_conntrack_max 修改最大追踪连接数
NEW 新建立的连接
ESTABLISHD 在NEW之后且NEW未失效之前的连接(响应报文)
RELATED 相关的连接,比如TCP的控制连接和数据连接
INVALIED 无法识别的连接
ipvsadm lvs配置
1.-A添加调度服务 ipvsadm –A –t/u/(f mask) 192.168.0.1:80 –s wrr
-A 添加调度服务,主机192.168.0.1端口80
-t tcp; -u udp; -f 使用防火墙mask 匹配
–s 调度算法为wrr权重轮询
1.1-E 修改调度服务算法 ipvsadm –E –t 192.168.0.1:80 –s sh
2.-a添加调度规则 ipvsadm –a –t/u/(f mask) 192.168.0.1:80
–r 192.168.0.61 –m/g –w 3
-a 在192.1680.1:80的调度服务上添加real-server
-r 192.168.0.61 指明real-server主机
-m nat模式; -g dr 模式; -w 3 权重为3
3.ipvsadm –a –f 10 –t 192.168.0.1:80 –r 192.168.0.61 –m
-f 10 使用防火墙标记 iptables –A INPUT –s 192.168.0.0/24 –p tcp –-dport 80 –j MASK 10
3.1-e修改调度规则 ipvsadm –e –t 192.168.0.1:80 –r 192.168.0.61 –w 3
修改主机权重为3
4.ipvsadm –S >/file 保存调度文件
5.ipvsadm –R </file 导入调度文件
setfacl
1.setfacl –m u:dump:rwx,g:dump:rwx,o:rwx files 设置dump用户,组,other对文件files的权限为rwx
2.setfacl –m m:w 设置acl mask为w,此mask对user和group起效
3.setfacl –b a 清空acl设置
4.setfacl –d –m u:dump:w /dir 设置/dir默认acl,当在/dir下创建文件时会自动继承此acl设定
5.setfacl –M aclfile file 从acl文件中读取设置
6.setfacl –m u:dump:rwx –R /dir 递归创建acl规则
7.setfacl –x u:dump file 删除某条acl规则
8.setfacl –m m:— file 设置mask为空
getfacl
1.getfacl –R a >aclfile 可将acl规则提取出来,制成acl文件
find
1.find –P 跳过符号连接
2.find –L 不跳过符号连接
3.find /etc –iname a* 查找/etc下以a开头的文件(不区分大小写)
4.find /etc –maxdepth 2 –mindepth 1 最大/最小查找深度
5.find /etc –gid/group ID/groupname 按照GID和组名查找
6.find /etc –uid/user ID/username 按照UID和用户名查找
7.find /etc –nogroup/nouser 查找没有属组/属主的文件
8.find /etc –perm u+/-/=rwx 按登陆用户/组权限查找
9.find /etc –size -/+/=3c/k/M/G 按文件大小查找
10.find /etc –type b/c/d/f/p/l/s/D 按文件类型查找
11.find /etc –cmin 6/-6 查找6分钟(之前/以内)修改过的文件
12.find /etc –used 1 查找1天内被存取过的文件或目录
13.find /etc –cmin 6 |xargs cat 将find 查找到的结果逐行送给cat处理
fdisk相关
1.fdisk –l 显示磁盘分区状态 df –h 显示分区使用信息
lsblk 树状列出磁盘使用及分区信息
blkid /dev/sda1 列出sd1格式及ID
fuser –v /dev/sda1 查看正在使用此分区的进程, -km 终止此进程
cat /proc/filesystem 查看系统支持的文件系统
e2label 查看和设置ext文件系统label
2.fdisk /dev/sda 开始分区
>m 显示帮助
>n 创建新分区
>e 扩展分区
>p 主分区
First cylinder (1500-2610, default 1500):开始柱面直接回车,系统自行统计
Last cylinder, +cylinders or +size{K,M,G} (1500-2610, default 2610): 500M 结束柱面,输入大小,系统自行计算
>p 打印分区情况
>t 修改分区ID
Partition number (1-5):选择要修改的分区,只可选主分区
Hex code (type L to list codes):82 输入分区ID,82为swap
>w 保存修改,并退出
>q 直接退出
后续处理命令
1.partx /dev/sda 对分区表重新登记
2.mkfs.(ext2,3,4/vfat等) /dev/sda5 格式化磁盘
3.fsck.(ext2,3,4/vfat等) /dev/sda5 磁盘检测修复工具
4.mkswap /dev/sda3 格式化交换分区
5.swapon [-a] /dev/sda3 挂在交换分区
6.swapoff [-a] /dev/sda3 卸载交换分区
mount
1.mount –o async,user,acl /dev/sda1 /tmp/cd1 挂载文件系统使用异步模式,并允许普通用户挂在此设备,开启acl功能,在fstable文件中也可设置,或使用default
2.mount –o remount,ro /dev/sda1 重新挂载sda1
3.mount /diretory1 /directory2 挂载diretory1到diretory2上
Ldd
1.ldd /usr/sbin/sshd 查看二进制程序sshd所依赖的库文件
Ln - ln –s /etc/fstable ~/soft 为fstable创建软链接soft
- ln –d /etc/fstable ~/hard 为fstable创建硬连接hard
不加-d 默认创建硬连接,硬连接相当于复制
lsmod 显示内核已加载的模块
modinfo 显示模块详细内容
depmod产生模块依赖的映射文件,在构建嵌入式系统时,需要由这个命令来生成相应的文件,由modprobe使用 - depmod –a 调查所有模块
- depmod –A 仅调查新加载的模块
modprobe - modprobe e1000 装在e1000的网卡驱动
- modprobe -r e1000 卸载e1000网卡驱动
- modprobe -l 打印已装在的内核模块
uname - uname –m 输出系统平台 x86/x64
- uname –a 输出所有
详见help
Sync 强制同步(立刻)同步(superblock/操)作到设备
kill=killall - kill –l 显示所有可使用的信号
- kill -signal PID 向指定PID发送指定信号
常用signal
1 重读配置文件 2 终止=CTRL+C
9 立刻杀死 15 按程序正常结束(优雅终止)
18 继续 19 暂停
wc
1.wc –l file 统计行数 2.wc –c file 统计字节数bt
3.wc –m file 统计字符数char 4.wc –w file 统计单词数
sudo
1.sudo –u dump commond 使用dump用户运行commond
2.sudo –g dump commond 使用dumo组运行commond
3.sudo –l 列出当前用户可用命令
配置文件/etc/sudoers 默认root无权限,需要修改权限
dump ALL=(root) cat
用户 主机=(暂转用户) 命令
User_Alias user1,user2,…用户别名组
Host_Alias IP,主机名 主机别名组
Command_Alias 命令别名组
jobs
1.CTRL + Z 或 commond + & 进入后台工作
2.fg + %jobnumber 装入前台
3.bg +%jobnumber 让后台暂停的作业继续运行
4.kill +%jobnumber 杀死此作业
screen
1.screen –S name 开启一个name命名的screen
2.screen –d 后台一个screen 在screen界面起效
3.screen –ls 显示所有screen
4.screen –r 17235 重新连入17235号screen
5.screen –X ls 17235 传递ls命令给17235号screen
6.screen –U 设置使用UTF-8编码 - screen –-wipe 清理损坏的screen
Screen 界面快捷键
ctrl + a + c:创建新窗口(create)
ctrl + a + n:切换至下一个窗口(next)
ctrl + a + p:切换至上一个窗口(previous)
ctrl + a + w: 列出所有窗口
ctrl + a + A: 窗口重命名
ctrl + a + d:detach当前会话
ctrl + a + [1-9]: 切换到指定窗口(1-9为窗口号)
ctrl + d:退出(关闭)当前窗口
Sleep
1.sleep 10s/m/h/d PID/commond 睡眠或延时执行
crontab
1.crontab –l 列出所有计划任务
2.crontab –e 设置计划任务
3.crontab –r 清除计划任务
分 时 周 月 年
2 15 * 12 * 每年12的每天15:02分执行
at
at time [回车]
ls /
CTRL +D 提交
- at –d 删除
- at –f 从文件中读取任务
- at –l 列出
- at –c 查看具体任务
at now + 5 minutes 任务在5分钟后运行
at now + 1 hour 任务在1小时后运行
at now + 3 days 任务在3天后运行
at now + 2 weeks 任务在两周后运行
at midnight 任务在午夜运行
at 10:30pm 任务在晚上10点30分
at 23:59 12/31/2018 任务在2018年12月31号23点59分
batch 让系统在空闲时选择时间自动执行 - batch [回车]
at>…
at>ctrl + D
tar
1.-c 创建 2.-x 解压 3.-f 文件 4.-C 指明文件存放路径
5.-v 显示过程
-j, --bzip2
-z, --gzip, --gunzip, --ungzip
-J, --xz --lzip --lzma --lzop
例:tar –czvf /file –C /tmp/file.tar.gz
ssh
1.ssh root@192.168.0.1 –P 9000 指明端口登陆
2.ssh-keygen –t rsa –p ***** -f ~/.ssh 使用rsa加密方式产生一对密钥,密码是*****,存在~/.ssh中
3.ssh-copy-id –i ~/.ssh/id_rsa.pub root@192.168.0.61
将公钥上传至远端主机,开启免密码登入
openssl - openssl passwd -1 –salt 8位杂质 ******* 生成密文密码
md5格式 杂质参数
2.openssl rand -hex 4 (hex 4:2*4=8位) 产生8位随机数 - openssl genrsa –out keyfile 2048 生成一对2048位的密钥文件
- openssl rsa –in keyfile –public 从密钥文件中提取公钥
scp
1.scp –p root@192.198.0.61:/file /tmp 从192.168.0.61复制文件到本地
2.scp -p /file root@192.168.0.61:/tmp 从本复制文件至192.168.0.1主机
(1)-r 递归复制 (2)-p 保留属性 (3)-p 9000 指明ssh端口
ftp相关
1.finger ftp 探测ftp用户全部信息
2.lftpget –c 192.168.0.1/file 使用断点续传下载
3.ftp下的mget.mput 支持一次下载/上传多个文件
文本处理
cut - last |cut -d ’ ’ -f 1 以空白为分隔符,取出第一段数据
- last |cut -c 10-20 输出每一行第10到第20个字符
send –options ‘cmd’
options
1.-n 静默模式 2.-f 从文件中读sed参数 3.-e 在命令行输入sed参数
4.直接修改读取的档案内容 5.-r 支持扩展正则表达 - lastb |sed ‘2,3d’ 删除2到3行 d删除
- lastb |sed ‘2a 123456’ 在第2行下面加上一行123456 a添加
- lastb |sed ‘2i 123456’ 在第2行上面加上一行123456 i插入
- lastb |sed -n ‘2p’ 只打印第二行,-n静默模式不向屏幕输出 p打印
- lastb |sed ‘2c null’ 使用null取代第二行 c取代
- lastb |sed -n ‘/:1/,/ssh/p’ 也可使用匹配含有/:1/的行到含有/ssh/的第一行,所有选项通配
- lastb |sed ‘s/test/root/g’ 将所有的test替换成root
awk - last -n 5|awk ‘{FS=“254”} {print $1"\n"}’ FS设置分隔符为”254”,然后打印第一列,每一行都换行
- last -n 5|awk ‘{FS=“254”}{if(NR==1)print $1"\n"}’ NR行数,只对第一行操作,并输出
- last -n 5|awk ‘{FS=“p”}{if(NR>=1)print NF}’ NF每行拥有的字段总数
- last -n 5|awk ‘{FS=" "} {if($6>8) print $4,$8,$9}’ 每行第六个字段大于8的输出,第4,8,9字段
- cat 1|awk '{FS=":"}{if(NR==2) print sum=$1+$2+KaTeX parse error: Expected 'EOF', got '}' at position 2: 3}̲' 计算第二行,第1,2,3… 上一条命令的最后一个参数(ESC+.)
xshell下的正则表达式
1.ll –d /etc/a??? 显示以a开头后面有3个字符的文件夹
2.ll –d /etc/a* 显示以a开头所有文件夹
3.ll –d /etc/[a-c]* 显示以a,b,c开头的所有文件夹
4.ll –d /etc/[^a-c]* 显示不以a,b,c开头的所有其他文件夹
5.echo $(uname -r) 命令返回值替换 - a=123456; ${a:3:4} 从3切片并向右取4位
7.a=123456; ${a:3:-4}从3切开并将右边的部分,从右向左删除2位
8.a=abc; ${a^^} 小写转大写
9.a=ABC; ${a,} 大写转小写
10a; ${a:-null} a空,返回null .
11.a=value; a : − n u l l a 不 空 , 返 回 v a l u e 12. {a:-null} a不空,返回value 12. a:−nulla不空,返回value12.{a:n} 若a空,则a=n