当前位置: 澳门新濠3559 > 操作系统 > 正文

按时间倒叙列出所有目录和文件 ll -rt,按时间倒

时间:2019-11-09 19:31来源:操作系统
1 文件 { ls -rtl # 定时间倒叙列出全部目录和文件 ll -rt touch file # 创设空白文件 rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制) dos2unix #windows文本转linux文本 unix2dos #linux文本转wi

1 文件{
ls -rtl # 定时间倒叙列出全部目录和文件 ll -rt
touch file # 创设空白文件
rm -rf 目录名 # 不提示删除非空目录(-r:递归删除 -f强制)
dos2unix # windows文本转linux文本
unix2dos # linux文本转windows文本
enca filename # 查看编码 安装 yum install -y enca
md5sum # 查看md5值
ln 源文件 目的文件 # 硬链接
ln -s 源文件 目的文件 # 符号连接
readlink -f /data # 查看连接真实目录
cat file | nl |less # 查看上下翻页且展现行号 q退出
head # 查看文件开头内容
head -c 10m # 截取文件中10M内容
split -C 10M # 将文件切割大小为10M -C按行
tail -f file # 查看结尾 监视日志文件
tail -F file # 监视日志同仁一视试, 针对文件被mv的情状能够不停读取(实时查看文件,可用于查看服务日志文件,方便排错卡塔尔
file # 检查文件类型
umask # 改过暗中认可权限
uniq # 删除重复的行
uniq -c # 重复的行现身次数
uniq -u # 只展现不重复行
paste a b # 将四个文本归并用tab键分隔开分离
paste -d'+' a b # 将七个文本合併内定'+'符号隔绝
paste -s a # 将多行数据统豆蔻梢头到意气风发行用tab键隔绝
chattr +i /etc/passwd # 不得放肆修正文件或目录 -i去掉锁 -Odyssey递归
more # 向下分面器
locate 字符串 # 搜索  (须要先‘updatedb’更新数据卡塔尔
wc -l file # 查看行数
cp filename{,.bak} # 急迅备份二个文本
cp a b # 拷贝不提醒 既不行使外号 cp -i
rev # 将行中的字符逆序排列
comm -12 2 3 # 行和行相比合营
iconv -f gbk -t utf8 原.txt > 新.txt # 转换编码
rename 原形式 指标情势 文件 # 重命名 可正则
watch -d -n 1 'df; ls -FlAt /path' # 实时有些目录下查看最新改良过的公文
cp -v /dev/dvd /rhel4.6.iso9660 # 制作镜像
diff suzu.c suzu2.c > sz.patch # 制作补丁
patch suzu.c < sz.patch # 安装补丁

作为Linux运转,要求精通Linux操作系统的着力采纳和管理文化,上边脚本之家笔者给大家介绍下Linux运行要求精通的下令,想产生Linux运行的相恋的人可以来学习一下。

干货!风华正茂篇小说集结全体Linux幼功命令,切合全体生手学习和黄金年代把手回看!,干货linux

1 文件{
ls -rtl # 定期间倒叙列出全体目录和文书 ll -rt
touch file # 创设空白文件
rm -rf 目录名 # 不提醒删除非空目录(-r:递归删除 -f强制)
dos2unix # windows文本转linux文本
unix2dos # linux文本转windows文本
enca filename # 查看编码 安装 yum install -y enca
md5sum # 查看md5值
ln 源文件 指标文件 # 硬链接
ln -s 源文件 目的文件 # 符号连接
readlink -f /data # 查看连接真实目录
cat file | nl |less # 查看上下翻页且展现行号 q退出
head # 查看文件早先内容
head -c 10m # 截取文件中10M剧情
split -C 10M # 将文件切割大小为10M -C按行
tail -f file # 查看结尾 监视日志文件
tail -F file # 监视日志同等对待试, 针对文件被mv的事态能够持续读取
file # 检查文件类型
umask # 校勘暗中同意权限
uniq # 删除重复的行
uniq -c # 重复的行现身次数
uniq -u # 只突显不重复行
paste a b # 将七个公文合併用tab键分隔开分离
paste -d'+' a b # 将八个公文合併内定'+'符号隔离
paste -s a # 将多行数据统风流潇洒到生龙活虎行用tab键隔断
chattr +i /etc/passwd # 不得大肆改革文件或目录 -i去掉锁 -帕杰罗递归
more # 向下分面器
locate 字符串 # 搜索
wc -l file # 查看行数
cp filename{,.bak} # 连忙备份三个文本
cp a b # 拷贝不提醒 既不应用小名 cp -i
rev # 将行中的字符逆序排列
comm -12 2 3 # 行和行相比同盟
iconv -f gbk -t utf8 原.txt > 新.txt # 转变编码
rename 原形式 指标情势 文件 # 重命名 可正则
watch -d -n 1 'df; ls -FlAt /path' # 实时有些目录下查看最新修正过的文件
cp -v /dev/dvd /rhel4.6.iso9660 # 制作镜像
diff suzu.c suzu2.c > sz.patch # 制作补丁
patch suzu.c < sz.patch # 安装补丁

sort排序{

-t # 钦赐排序时所用的栏位分隔字符
-n # 依照数值的深浅排序
-r # 以相反的逐条来排序
-f # 排序时,将小写字母视为大写字母
-d # 排序时,管理意国语字母、数字及空格字符外,忽视别的的字符
-c # 检查文件是不是曾经依照顺序排序
-b # 忽视每行前边起先处的空格字符
-M # 前边3个字母依据月份的缩写进行排序
-k # 指定域
-m # 将多少个排序好的文书进行联合
-T # 内定一时文件目录,暗中同意在/tmp
+<发轫栏位>-<结束栏位> # 以钦点的栏位来排序,范围由起首栏位到竣事栏位的前风流罗曼蒂克栏位。
-o # 将排序后的结果存入钦定的文

sort -n # 按数字排序
sort -nr # 按数字倒叙
sort -u # 过滤重复行
sort -m a.txt c.txt # 将多少个文件内容结合到一同
sort -n -t' ' -k 2 -k 3 a.txt # 第二域相通,将从第三域举办起降管理
sort -n -t':' -k 3r a.txt # 以:为分割域的第三域进行倒叙排列
sort -k 1.3 a.txt # 从第多少个字母起展开排序
sort -t" " -k 2n -u a.txt # 以第二域举办排序,若是赶上海重机厂复的,就删除

}

find查找{

# linux文件无创制时间
# Access 使用时间
# Modify 内容退换时间
# Change 状态改造时间(权限、属主)
# 时间暗中同意以24小时为单位,当前时间到向前24钟头为0天,向前48-72钟头为2天
# -and 且 相配多个原则 参数能够显明时期范围 -mtime +2 -and -mtime -4
# -or 或 相称大肆一个标准化

find /etc -name "*http*" # 按文件名查找
find . -type f # 查找某一门类文件
find / -perm # 依照文件权限查找
find / -user # 依据文件属主查找
find / -group # 依照文件所属的组来查找文件
find / -atime -n # 文件使用时间在N天之内
find / -atime +n # 文件使用时间在N天早先
find / -mtime +n # 文件内容退换时间在N天以前
find / -ctime +n # 文件状态改换时间在N天前
find / -mmin +30 # 按分钟查找内容改造
find / -size +1000000c -print # 查找文件长度超越1M字节的文书
find /etc -name "*passwd*" -exec grep "xuesong" {} ; # 按名字查找文件传递给-exec后命令
find . -name 't*' -exec basename {} ; # 查找文件名,不取路线
find . -type f -name "err*" -exec rename err ERR {} ; # 批量改名(查找err 替换为 ELX570LX570 {}文件
find 路径 -name *name1* -or -name *name2* # 查找放肆一个根本字

}

vim编辑器{

gconf-editor # 配置编辑器
/etc/vimrc # 配置文件路线
vim +24 file # 打开文件定位到内定行
vim file1 file2 # 打开七个文件
vim -O2 file1 file2 # 垂直分屏
vim -on file1 file2 # 水平分屏
sp filename # 上下分割打开新文件
vsp filename # 左右瓜分展开新文件
Ctrl+W [操作] # 多个文件间操作 大写W # 操作: 关闭当前窗口c 荧屏中度大器晚成致= 扩充高度+ 移动光标所在屏 右l 左h 上k 下j 中h 下二个w
:n # 编辑下一个文件
:2n # 编辑下三个公文
:N # 编辑前多个文书
:rew # 回到首文件
:set nu # 展开发银行号
:set nonu # 撤废行号
200G # 跳转到200
:nohl # 撤消高亮
:set autoindent # 设置自动缩进
:set ff # 查看文本格式
:set binary # 改为unix格式
ctrl+ U # 向前翻页
ctrl+ D # 向后翻页
%s/字符1/字符2/g # 全部轮流
X # 文书档案加密

}

归档解压缩{

tar zxvpf gz.tar.gz -C 放到钦命目录 包中的目录 # 解包tar.gz 不点名目录则全解压
tar zcvpf /$path/gz.tar.gz * # 打包gz 注意*最佳用相对路线
tar zcf /$path/gz.tar.gz * # 打包准确不提示
tar ztvpf gz.tar.gz # 查看gz
tar xvf 1.tar -C 目录 # 解包tar
tar -cvf 1.tar * # 打包tar
tar tvf 1.tar # 查看tar
tar -rvf 1.tar 文件名 # 给tar追Gavin件
tar --exclude=/home/dmtsai --exclude=*.tar -zcvf myfile.tar.gz /home /etc # 打包/home, /etc ,但排除 /home/dmtsai
tar -N "2015/06/01" -zcvf home.tar.gz /home # 在 /home 个中,比 贰零壹伍/06/01 新的文件才备份
tar -zcvfh home.tar.gz /home # 打包目录中归纳连续几天来目录
tar zcf - ./ | ssh [email protected] "tar zxf - -C /xxxx" # 后生可畏边压缩大器晚成边解压
zgrep 字符 1.gz # 查看压缩包普通话件字符行
bzip2 -dv 1.tar.bz2 # 解压bzip2
bzip2 -v 1.tar # bzip2压缩
bzcat # 查看bzip2
gzip A # 直接压缩文件 # 压缩后源文件未有
gunzip A.gz # 直接解压文件 # 解压后源文件未有
gzip -dv 1.tar.gz # 解压gzip到tar
gzip -v 1.tar # 压缩tar到gz
unzip zip.zip # 解压zip
zip zip.zip * # 压缩zip
# rar3.6下载:
rar a rar.rar *.jpg # 压缩文件为rar包
unrar x rar.rar # 解压rar包
7z a 7z.7z * # 7z压缩
7z e 7z.7z # 7z解压

}

文本ACL权限调节{

getfacl 1.test # 查看文件ACL权限
setfacl -R -m u:xuesong:rw- 1.test # 对文本扩大客户的读写权限 -Rubicon 递归

}

svn更新代码{

--force # 强制覆盖
/usr/bin/svn --username user --password passwd co $Code ${SvnPath}src/ # 检出总体项目
/usr/bin/svn --username user --password passwd up $Code ${SvnPath}src/ # 更新项目
/usr/bin/svn --username user --password passwd export $Code$File ${SvnPath}src/$File # 导出个别文件
/usr/bin/svn --username user --password passwd export -r 版本号 svn路径本地路线 --force # 导出钦命版本

}

git{

# 编译安装git-1.8.4.4
./configure --with-curl --with-expat
make
make install

git clone [email protected]:gittest.git ./gittest/ # 克隆项目到钦点目录
git pull # 更新项目 供给cd到花色目录中
git add . # 更新具备文件
git commit -m "gittest up" # 提交操作并充分备注
git push # 正式提交到长途git服务器
git reset --hard # 当地复苏整个项目
git rm -r -n --cached ./img # -n推行命令时,不会删除任何文件,而是展现此命令要删减的文书列表预览
git rm -r --cached ./img # 施行删除命令 需要commit和push让长途生效
git init --bare smc-content-check.git # 开首化新git项目 要求手动创制此目录并给git顾客权限 chown -奇骏 git:git smc-content-check.git
git config --global credential.helper store # 记住密码

}

平复rm删除的文书{

# debugfs针对 ext2 # ext3grep针对 ext3 # extundelete针对 ext4
df -T # 首先查看磁盘分区格式
umount /data/ # 卸载挂载,数据错失请首先卸载挂载,或重复挂载只读
ext3grep /dev/sdb1 --ls --inode 2 # 记录消息接轨搜索目录下文件inode音信
ext3grep /dev/sdb1 --ls --inode 131081 # 此处是inode
ext3grep /dev/sdb1 --restore-inode 49153 # 记录下inode音信发轫上升目录

}

openssl{

openssl rand 15 -base64 # 口令生成
openssl sha1 filename # 哈希算法校验文件
openssl md5 filename # MD5校验文件
openssl base64 filename.txt # base64编码/解码文件(发送邮件附属类小零器件之类效率会得以接受)
openssl base64 -d filename.bin # base64编码/解码二进制文件
openssl enc -aes-128-cbc filename.aes-128-cbc # 加密文档
# 推荐使用的加密算法是bf(Blowfish)和-aes-128-cbc(运转在CBC格局的1二十六位密匙AES加密算法),加密强度有保持
openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename # 解密文书档案

}

}

2 软件{

rpm{

rpm -ivh lynx # rpm安装
rpm -e lynx # 卸载包
rpm -e lynx --nodeps # 强制卸载
rpm -qa # 查看全部安装的rpm包
rpm -qa | grep lynx # 查找包是不是安装
rpm -ql # 软件包路线
rpm -Uvh # 升级包
rpm --test lynx # 测试
rpm -qc # 软件包配置文书档案
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # 导入rpm的签名新闻
rpm --initdb # 初始化rpm 数据库
rpm --rebuilddb # 重建rpm数据库 在rpm和yum无响应的图景采纳 先 rm -f /var/lib/rpm/__db.00* 在重建

}

yum{

yum list # 全数软件列表
yum install 包名 # 安装包和信赖性包
yum -y update # 进级全体包版本,信任关系,系统版本内核都晋级
yum -y update 软件包名 # 升级钦赐的软件包
yum -y upgrade # 不更正软件设置更新软件,系统版本进级,内核不改变
yum search mail # yum寻找相关包
yum grouplist # 软件包组
yum -y groupinstall "Virtualization" # 安装软件包组
repoquery -ql gstreamer # 不安装软件查看包括文件
yum clean all # 清除var下缓存

}

yum使用epel源{

# 包下载地址: # 接收版本567
rpm -Uvh

}

自定义yum源{

find /etc/yum.repos.d -name "*.repo" -exec mv {} {}.bak ;

vim /etc/yum.repos.d/yum.repo
[yum]
#http
baseurl=
#挂载iso
#mount -o loop CentOS-5.8-x86_64-bin-DVD-1of2.iso /data/iso/
#本地
#baseurl=file:///data/iso/
enable=1

#导入key
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

}

编译{

源码安装{

./configure --help # 查看全部编写翻译参数
./configure --prefix=/usr/local/ # 配置参数
make # 编译
# make -j 8 # 二十四线程编写翻译,速度超快,但有一点点软件不辅助
make install # 安装包
make clean # 淹没编写翻译结果

}

perl程序编写翻译{

perl Makefile.PL
make
make test
make install

}

python程序编译{

python file.py

# 源码包编写翻译安装
python setup.py build
python setup.py install

}

编译c程序{

gcc -g hello.c -o hello

}

}

}

3 系统{

wall     # 给此外顾客发音信
whereis ls # 查找命令的目录
which # 查看当前要施行的下令所在的路子
clear # 清空整个荧屏
reset # 重新开头化显示屏
cal # 显示月历
echo -n 123456 | md5sum # md5加密
mkpasswd # 随机生成密码 -l位数 -C大小 -c小写 -d数字 -s特殊字符
netstat -anlp | grep port # 是或不是展开了某些端口
ntpdate stdtime.gov.hk # 同步时间
tzselect # 选取时区 #+8=(5 9 1 1) # (TZ='Asia/Shanghai'; export TZ)括号内写入 /etc/profile
/sbin/hwclock -w # 时间保存到硬件
/etc/shadow # 账户影子文件
LANG=en # 修正语言
vim /etc/sysconfig/i18n # 纠正编码 LANG="en_US.UTF-8"
export LC_ALL=C # 强制字符集
vi /etc/hosts # 查询静态主机名
alias # 别名
watch uptime # 监测命令动态刷新
ipcs -a # 查看Linux系统当前单个分享内部存款和储蓄器段的最大值
ldconfig # 动态链接库管理命令
ldd `which cmd` # 查看命令的重视库
dist-upgrade # 会退换配置文件,改正旧的信任性关系,更动系统版本
/boot/grub/grub.conf # grub运维项配置
ps -mfL <PID> # 查看钦命进度运营的线程 线程数受 max user processes 节制
ps uxm |wc -l # 查看当前客户占用的经过数 [席卷线程] max user processes
top -p PID -H # 查看钦赐PID进度及线程
lsof |wc -l # 查看当前文件句柄数使用数据 open files
lsof |grep /lib # 查看加载库文件
sysctl -a # 查看当前怀有系统基本参数
sysctl -p # 改进内核参数/etc/sysctl.conf,让/etc/rc.d/rc.sysinit读取生效
strace -p pid # 追踪系统调用
ps -eo "%p %C %z %a"|sort -k3 -n # 把进程按内部存款和储蓄器使用大小排序
strace uptime 2>&1|grep open # 查看命令展开的连带文书
grep Hugepagesize /proc/meminfo # 内部存储器分页大小
mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0 # 随机生成钦命项目密码
echo 1 > /proc/sys/net/ipv4/tcp_syncookies # 使TCP SYN Cookie 珍重生效 # "SYN Attack"是意气风发种否决服务的攻击方式
grep Swap /proc/25151/smaps |awk '{a+=$2}END{print a}' # 查询某pid使用的swap大小

开机运行脚本顺序{

/etc/profile
/etc/profile.d/*.sh
~/bash_profile
~/.bashrc
/etc/bashrc

}

经过管理{

ps -eaf # 查看全数进程
kill -9 PID # 强制结束有个别PID进程
kill -15 PID # 安全退出 需程序内处时限信号
cmd & # 命令后台运维
nohup cmd & # 后台运营不受shell退出影响
ctrl+z # 将前台放入后台(暂停)
jobs # 查看后台运路程序
bg 2 # 运转后台暂停进度
fg 2 # 调回后台进程
pstree # 进程树
vmstat 1 9 # 每间距意气风发秒报告种类性能消息9次
sar # 查看cpu等状态
lsof file # 呈现张开内定文件的具有进度
lsof -i:32768 # 查看端口的经过
renice +1 180 # 把180号经过的优先级加1

ps{

ps aux |grep -v USER | sort -nk +4 | tail # 展现消耗内部存款和储蓄器最多的十二个运营中的进度,以内部存款和储蓄器使用量排序.cpu +3
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
%CPU # 进程的cpu占用率
%MEM # 进度的内存占用率
VSZ # 进度虚构大小,单位K(即总占用内部存储器大小,包涵实际内部存款和储蓄器和虚构内部存款和储蓄器)
RSS # 进度使用的驻留集大小即事实上物理内部存储器大小
START # 进度运转时间和日期
私吞的虚构内部存款和储蓄器大小 = VSZ - 兰德酷路泽SS

ps -eo pid,lstart,etime,args # 查看进度运维时间

}

top{

前五行是系统一整合体的总括音讯。
第大器晚成行: 任务队列音信,同 uptime 命令的施行结果。内容如下:
01:06:48 当前时光
up 1:22 系统运转时刻,格式为时:分
1 user 当前报到客户数
load average: 0.06, 0.60, 0.48 系统负荷,就六柱预测队列的平均长度。
多个数值分别为 1分钟、5秒钟、15分钟前到昨日的平均值。

其次、三行:为经过和CPU的音信。当有八个CPU时,那么些内容只怕会超过两行。内容如下:
Tasks: 29 total 进度总的数量
1 running 正在运作的历程数
28 sleeping 睡眠的进程数
0 stopped 结束的经过数
0 zombie 活死人进程数
Cpu(s): 0.3% us 客商空间占领CPU百分比
1.0% sy 内核空间攻克CPU百分比
0.0% ni 客户进度空间内部管理体改变过优先级的历程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si

第四、五行:为内部存款和储蓄器音信。内容如下:
Mem: 一九一二72k total 物理内部存款和储蓄器总的数量
173656k used 使用的情理内部存储器总数
17616k free 空闲内部存款和储蓄器总数
22052k buffers 用作内核缓存的内存量
Swap: 192972k total 交流区总的数量
0k used 使用的沟通区总数
一九二九72k free 空闲沟通区总的数量
123988k cached 缓冲的交流区总数。
内部存储器中的剧情被换出到交流区,而后又被换入到内部存款和储蓄器,但利用过的调换区还未有被掩瞒,
该数值即为那些内容已存在于内部存款和储蓄器中的调换区的大小。
相应的内部存款和储蓄器再度被换出时可不必再对调换区写入。

进度音信区,各列的意义如下: # 展现各类进度的详细新闻

序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进度全部者的顾客id
e USELAND 进度全体者的顾客名
f GROUP 进度全体者的组名
g TTY 运维进程的尖峰名。不是从终端运行的历程则显得为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最终采纳的CPU,仅在多CPU景况下有意义
k %CPU 上次更新到后日的CPU时间占据百分比
l TIME 进程使用的CPU时间一齐,单位秒
m TIME+ 进度使用的CPU时间一齐,单位1/100秒
n %MEM 进程使用的情理内部存款和储蓄器百分比
o VIRT 进度使用的设想内部存款和储蓄器总数,单位kb。VIRT=SWAP+RES
p SWAP 进度使用的杜撰内部存款和储蓄器中,被换出的分寸,单位kb。
q RES 进度使用的、未被换出的物理内部存款和储蓄器大小,单位kb。RES=CODE+DATA
r CODE 可试行代码占用的大要内部存款和储蓄器大小,单位kb
s DATA 可实行代码以外的局地(数据段+栈)占用的情理内部存款和储蓄器大小,单位kb
t SH君越 分享内部存储器大小,单位kb
u nFLT 页面错误次数
v nDRT 最终一遍写入到明天,被涂改正的页面数。
w S 进程情形。
D=不可中断的睡觉情形
R=运行
S=睡眠
T=跟踪/停止
Z=活死人进度 父进度在但并不等待子进度
x COMMAND 命令名/命令行
y WCHAN 若该进程在上床,则显得睡眠中的系统函数名
z Flags 任务标识,参考 sched.h

}

列出正在占用swap的历程{

#!/bin/bash
echo -e "PIDttSwapttProc_Name"
# 拿出/proc目录下全体以数字为名的目录(进度名是数字才是进程,其余如sys,net等寄存的是任何音讯卡塔尔国
for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`
do
# 让进度释放swap的主意只有三个:正是重启该进度。或然等其自行释放。放
# 假若经过会自行释放,那么大家就不会写脚本来找他了,找他都是因为他并未自动释放。
# 所以大家要列出占用swap并供给重启的长河,但是init这些进度是系统里全数进度的祖先进度
# 重启init进度表示重启系统,那是纯属不可能的,所以就无须检查实验她了,防止对系统产生影响。
if [ $pid -eq 1 ];then continue;fi
grep -q "Swap" /proc/$pid/smaps 2>/dev/null
if [ $? -eq 0 ];then
swap=$(grep Swap /proc/$pid/smaps
| gawk '{ sum+=$2;} END{ print sum }')
proc_name=$(ps aux | grep -w "$pid" | grep -v grep
| awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
if [ $swap -gt 0 ];then
echo -e "${pid}t${swap}t${proc_name}"
fi
fi
done | sort -k2 -n | awk -F't' '{
pid[NR]=$1;
size[NR]=$2;
name[NR]=$3;
}
END{
for(id=1;id<=length(pid);id++)
{
if(size[id]<1024)
printf("%-10st%15sKBt%sn",pid[id],size[id],name[id]);
else if(size[id]<1048576)
printf("%-10st%15.2fMBt%sn",pid[id],size[id]/1024,name[id]);
else
printf("%-10st%15.2fGBt%sn",pid[id],size[id]/1048576,name[id]);
}
}'

}

linux操作系统提供的时域信号{

kill -l # 查看linux提供的时域信号
trap "echo aaa" 2 3 15 # shell使用 trap 捕捉退出信号

# 发送随机信号日常常有二种原因:
# 1(被动式) 内核检查实验到三个系统事件.举例子进程退出会像父进度发送SIGCHLD模拟信号.键盘按下control+c会发送SIGINT时域信号
# 2(主动式) 通过系统调用kill来向钦定进度发送时域信号
# 进程甘休随机信号 SIGTERM 和 SIGKILL 的分别: SIGTERM 相比较和谐,进度能捕捉这一个非确定性信号,依据你的急需来关闭程序。在关闭程序在此以前,您能够终结展开的笔录文件和到位正在做的职务。在好几境况下,即使进程正在打开作业而且不可能暂停,那么进程能够忽视这么些SIGTERM时限信号。
# 假使一个进度收到三个SIGUSOdyssey1实信号,然后施行时域信号绑定函数,第三个SIGUS讴歌ZDX2非随机信号又来了,第叁个随机信号从未被管理实现的话,第四个功率信号就可以抛弃。

SIGHUP 1 A # 终端挂起也许调控过程终止
SIGINT 2 A # 键盘终端进度(如control+c)
SIGQUIT 3 C # 键盘的退出键被按下
SIGILL 4 C # 违法命令
SIGABRT 6 C # 由abort(3)发出的淡出指令
SIGFPE 8 C # 浮点非常
SIGKILL 9 AEF # Kill非频域信号 马上截止
SIGSEGV 11 C # 无效的内存援用
SIGPIPE 13 A # 管道破裂: 写二个未曾读端口的管道
SIGALRM 14 A # 时钟实信号 由alarm(2)发出的功率信号
SIGTERM 15 A # 终止复信号,可让程序安全退出 kill -15
SIGUSR1 30,10,16 A # 顾客自定义功率信号1
SIGUSR2 31,12,17 A # 客商自定义非确定性信号2
SIGCHLD 20,17,18 B # 子进度甘休自动向父进程发送SIGCHLD时限信号
SIGCONT 19,18,25 # 进度继续(曾被终止的历程卡塔尔国
SIGSTOP 17,19,23 DEF # 终止进度
SIGTSTP 18,20,24 D # 调整终端(tty卡塔 尔(英语:State of Qatar)上按下结束键
SIGTTIN 21,21,26 D # 后台进度谋算从决定终端读
SIGTTOU 22,22,27 D # 后台进度妄想从控制终端写

缺省管理动作意气风发项中的字母含义如下:
A 缺省的动作是终止进程
B 缺省的动作是忽略这时候限信号,将该时限信号废弃,不做管理
C 缺省的动作是终止进度并开展内核影象转储(dump core),内核印象转储是指将经过数据在内部存款和储蓄器的影像和经过在底蕴结构中的部分剧情以自然格式转储到文件系统,何况经过退出推行,那样做的实惠是为程序员提供了福利,使得他们能够收获进度那时候实施时的数据值,允许她们分明转储的缘由,并且可以调和他们的前后相继。
D 缺省的动作是终止进程,踏向甘休情状之后仍然是能够重新开展下去,日常是在调节和测量试验的历程中(例如ptrace系统调用卡塔尔
E 实信号不可能被抓获
F 功率信号不能够被忽视
}

系统性格状态{

vmstat 1 9

r # 等待实践的职分数。当以此值超越了cpu线程数,就晤面世cpu瓶颈。
b # 等待IO的经过数量,表示窒碍的经过。
swpd # 虚构内部存储器已利用的尺寸,如大于0,表示机道具理内部存款和储蓄器不足,如不是程序内部存款和储蓄器走漏,那么该进级内部存款和储蓄器。
free # 空闲的情理内部存款和储蓄器的大小
buff # 已用的buff大小,对块设备的读写实行缓冲
cache # cache直接用来记念大家张开的文书,给文件做缓冲,(把空闲的情理内部存款和储蓄器的一片段拿来做文件和目录的缓存,是为了增长度序推行的习性,当程序行使内部存款和储蓄器时,buffer/cached会非常快地被使用。)
inact # 非活跃内部存储器大小,即被标注可回笼的内部存款和储蓄器,分裂于free和active -a选项时浮现
active # 活跃的内存大小 -a选项时彰显
si # 每秒从磁盘读入虚构内部存款和储蓄器的高低,要是这几个值大于0,表示物理内部存款和储蓄器非常不够用可能内部存款和储蓄器走漏,要探寻耗内存进度消除掉。
so # 每秒设想内部存款和储蓄器写入磁盘的深浅,假若这一个值大于0,同上。
bi # 块设备每秒选择的块数量,这里的块设备是指系统上独具的磁盘和别的块设备,默许块大小是1024byte
bo # 块设备每秒发送的块数量,比方读取文件,bo将要大于0。bi和bo经常都要临近0,否则便是IO过于频仍,供给调动。
in # 每秒CPU的中断次数,包罗时间暂停。in和cs这八个值越大,会见到由基本消耗的cpu时间会更多
cs # 每秒上下文切换次数,举个例子大家调用系统函数,将在拓宽上下文切换,线程的切换,也要经过上下文切换,这一个值要越小越好,太大了,要思量调节减弱线程或许经过的数量,举个例子在apache和nginx这种web服务器中,我们平常做质量测量试验时会举办几千并发照旧几万涌出的测验,采纳web服务器的长河能够由进度或然线程的峰值一贯下调,压测,直到cs到二个一点都不大的值,那几个进程和线程数正是比较适当的值了。系统调用也是,每一遍调用系统函数,大家的代码就能够进去底子空间,诱致上下文切换,那几个是很耗电源,也要尽量防止频仍调用系统函数。上下文切换次数过多表示你的CPU抢先六分之三萧条在上下文切换,引致CPU干正经事的年月少了,CPU未有丰盛利用。
us # 客商进程实行消耗cpu时间(user time) us的值比较高时,表明客户进程消耗的cpu时间多,不过大器晚成旦长时间当先百分之二十的应用,那么大家就该构思优化程序算法或其它方法
sy # 系统CPU时间,即使太高,表示系统调用时间长,举个例子是IO操作频仍。
id # 空闲 CPU时间,平日的话,id + us + sy = 100,经常感觉id是悠闲CPU使用率,us是顾客CPU使用率,sy是系统CPU使用率。
wt # 等待IOCPU时间。Wa过高时,说明io等待相比严重,那大概是由于磁盘多量放肆拜望形成的,也会有希望是磁盘的带宽现身瓶颈。

固然 r 平时超过4,且id平日少于40,表示cpu的负荷比较重。
万风流罗曼蒂克 pi po 长时间不等于0,表示内部存款和储蓄器不足。
若果 b 队长春常当先3,表示io质量糟糕。

}

}

日记处理{

history # 历时命令私下认可1000条
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 让history命令展现具体时间
history -c # 撤除记录命令
cat $HOME/.bash_history # 历史命令记录文件
lastb -a # 列出登陆系统战败的客户相关音信 清空二进制日志记录文件 echo > /var/log/btmp
last # 查看登录过的客户消息 清空二进制日志记录文件 echo > /var/log/wtmp 默许张开乱码
who /var/log/wtmp # 查看登录过的顾客音信
lastlog # 客户最终登陆的命宫
tail -f /var/log/messages # 系统日志
tail -f /var/log/secure # ssh日志

}

selinux{

sestatus -v # 查看selinux状态
getenforce # 查看selinux模式
setenforce 0 # 设置selinux为超计生情势(可制止阻止一些操作)
semanage port -l # 查看selinux端口约束准绳
semanage port -a -t http_port_t -p tcp 8000 # 在selinux中注册端口类型
vi /etc/selinux/config # selinux配置文件
SELINUX=enfoceing # 关闭selinux 把其纠正为 SELINUX=disabled

}

查看剩余内部存款和储蓄器{

free -m
#-/+ buffers/cache: 6458 1649
#6458M为真正使用内部存款和储蓄器 1649M为真实剩余内部存款和储蓄器(剩余内部存款和储蓄器+缓存+缓冲器)
#linux会利用全体的剩余内部存款和储蓄器作为缓存,所以要保障linux运维速度,就供给有限支撑内部存款和储蓄器的缓存大小

}

系统音信{

uname -a # 查看Linux内核版本音讯
cat /proc/version # 查看内核版本
cat /etc/issue # 查看系统版本
lsb_release -a # 查看系统版本 需安装 centos-release
locale -a # 列出富有语系
locale # 当前景况变量中全体编码
hwclock # 查看时间
who # 当前在线客户
w # 当前在线客商
whoami # 查看当前客商名
logname # 查看开头登入客户名
uptime # 查看服务器运营时间
sar -n DEV 1 10 # 查看网卡网速流量
dmesg # 显示开机信息
lsmod # 查看内核模块

}

硬件音讯{

more /proc/cpuinfo # 查看cpu信息
lscpu # 查看cpu信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看cpu型号和逻辑核心数
getconf LONG_BIT # cpu运转的位数
cat /proc/cpuinfo | grep 'physical id' |sort| uniq -c # 物理cpu个数
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l # 结果大于0协助陆十一人
cat /proc/cpuinfo|grep flags # 查看cpu是不是扶植设想化 pae帮助半虚构化 AMDVT 辅助全设想化
more /proc/meminfo # 查看内部存款和储蓄器消息
dmidecode # 查看周详硬件音讯
dmidecode | grep "Product Name" # 查看服务器型号
dmidecode | grep -P -A5 "Memorys+Device" | grep Size | grep -v Range # 查看内部存款和储蓄器插槽
cat /proc/mdstat # 查看软raid信息
cat /proc/scsi/scsi # 查看Dell硬raid新闻(IBM、HP供给合法检查测量检验工具)
lspci # 查看硬件音信
lspci|grep RAID # 查看是不是扶植raid
lspci -vvv |grep Ethernet # 查看网卡型号
lspci -vvv |grep Kernel|grep driver # 查看驱动模块
modinfo tg2 # 查看驱动版本(驱动模块)
ethtool -i em1 # 查看网卡驱动版本
ethtool em1 # 查看网卡式磁带宽

}

终极快速键{

Ctrl+A   # 行前
Ctrl+E   # 行尾
Ctrl+S   # 终端锁屏
Ctrl+Q    # 解锁屏
Ctrl+D    # 退出

}

开机运营情势{

vi /etc/inittab
id:3:initdefault: # 3为多顾客命令
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now # 注释此行 防止 ctrl+alt+del 关闭Computer

}

极限提醒展现{

echo $PS1 # 情形变量调节提醒展现
PS1='[[email protected] H w A @#]$'
PS1='[[email protected]h W]$'

}

定期职责{

at 5pm + 3 days /bin/ls # 单次准期职分 钦命三日后清晨5:00实践/bin/ls

crontab -e # 编辑周期任务
#分钟 小时 天 月 星期 命令或脚本
1,30 1-3/2 * * * 命令或脚本 >> file.log 2>&1
echo "40 7 * * 2 /root/sh">>/var/spool/cron/root # 直接将下令写入周期职分
crontab -l # 查看自动周期性任务
crontab -r # 删除自动周期性职责
cron.deny和cron.allow # 幸免或允许客户使用周期职分
service crond start|stop|restart # 运行自动周期性服务

}

date{

星期日[SUN] 星期一[MON] 星期二[TUE] 星期三[WED] 星期四[THU] 星期五[FRI] 星期六[SAT]
一月[JAN] 二月[FEB] 三月[MAR] 四月[APR] 五月[MAY] 六月[JUN] 七月[JUL] 八月[AUG] 九月[SEP] 十月[OCT] 十一月[NOV] 十二月[DEC]

date -s 20091112 # 设日期
date -s 18:30:50 # 设时间
date -d "7 days ago" +%Y%m%d # 7天前不久期
date -d "5 minute ago" +%H:%M # 5分钟前时间
date -d "1 month ago" +%Y%m%d # 贰个月前
date -d '1 days' +%Y-%m-%d # 一天后
date -d '1 hours' +%H:%M:%S # 两时辰后
date +%Y-%m-%d -d '20110902' # 日期格式转变
date +%Y-%m-%d_%X # 日期和时间
date +%N # 纳秒
date -d "2012-08-13 14:00:23" +%s # 换算成秒计算(一九七〇年现今的秒数)
date -d "@1363867952" +%Y-%m-%d-%T # 将时间戳换算成日期
date -d "1970-01-01 UTC 1363867952 seconds" +%Y-%m-%d-%T # 将时间戳换算成日期
date -d "`awk -F. '{print $1}' /proc/uptime` second ago" +"%Y-%m-%d %H:%M:%S" # 格式化系统运营时间(多少秒前)

}

limits.conf{

ulimit -SHn 65535 # 有时设置文件呈报符大小 进度最大展开文件柄数 还可能有socket最菲尼克斯接数, 等同配置 nofile
ulimit -SHu 65535 # 临时安装客商最大进度数
ulimit -a # 查看

/etc/security/limits.conf

# 文件叙述符大小 open files
# lsof |wc -l 查看当前文件句柄数使用数据
* soft nofile 16384 # 设置太大,进程使用过多会把机器拖死
* hard nofile 32768

# 顾客最大进程数 max user processes
# echo $((`ps uxm |wc -l`-`ps ux |wc -l`)) 查看当前用户占用的长河数 [满含线程]
user soft nproc 16384
user hard nproc 32768

# 假若/etc/security/limits.d/有配备文件,将会覆盖/etc/security/limits.conf里的铺排
# 即/etc/security/limits.d/的配置文件里就毫无有同等的参量设置
/etc/security/limits.d/90-nproc.conf # centos6.3的默许那个文件会覆盖 limits.conf
user soft nproc 16384
user hard nproc 32768

sysctl -p # 更正配置文件后让系统生效

}

百万长链接设置{

# 内部存款和储蓄器消耗需求超大
vim /root/.bash_profile
# 增加如下2行,退出bash重新登入
echo 20000500 > /proc/sys/fs/nr_open
ulimit -n 10000000

}

libc.so故障修复{

# 由于进级glibc招致libc.so不牢固,倏然报错,幸好还应该有未脱离的极点
grep: error while loading shared libraries: /lib64/libc.so.6: ELF file OS ABI invalid

# 看看当前系统有个别许版本 libc.so
ls /lib64/libc-[tab]

# 纠正遭遇变量指向此外 libc.so 文件测量检验
export LD_PRELOAD=/lib64/libc-2.7.so # 假如不纠正LD_PRELOAD变量,ln不可能用,供给选择 /sbin/sln 命令做链接

# 当前只要好使了,在施行上面强制替换软链接。如糟糕使,测量检验别的版本的libc.so文件
ln -f -s /lib64/libc-2.7.so /lib64/libc.so.6

}

sudo{

echo myPassword | sudo -S ls /tmp # 直接输入sudo的密码非人机联作,从职业输入读取密码并非极限设备
visudo # sudo命令权限增添 /etc/sudoers
用户 别名(可用all)=NOPASSWD:命令1,命令2
user ALL=NOPASSWD:/bin/su # 免root密码切换root身份
wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restart
UserName ALL=(ALL) ALL
UserName ALL=(ALL) NOPASSWD: ALL
peterli ALL=(ALL) NOPASSWD:/sbin/service
Defaults requiretty # sudo不一致敬后台运维,注释此行既允许
Defaults !visiblepw # sudo不容许远程,去掉!既允许

}

grub开机运转项加多{

vim /etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1

}

stty{

#stty时贰个用来校正并打字与印刷终端行设置的常用命令

stty iuclc # 在命令行下防止出口大写
stty -iuclc # 苏醒出口大写
stty olcuc # 在指令行下禁绝出口小写
stty -olcuc # 复苏出口小写
stty size # 打字与印刷出终极的行数和列数
stty eof "string" # 改良系统私下认可ctrl+D来表示文件的实现
stty -echo # 防止回显
stty echo # 展开回显
stty -echo;read;stty echo;read # 测验制止回显
stty igncr # 忽视回车符
stty -igncr # 恢复生机回车符
stty erase '#' # 将#安装为退格字符
stty erase '^?' # 恢复生机员退伍格字符

依期输入{

timeout_read(){
timeout=$1
old_stty_settings=`stty -g`  # save current settings
stty -icanon min 0 time 100  # set 10seconds,not 100seconds
eval read varname   # =read $varname
stty "$old_stty_settings"   # recover settings
}

read -t 10 varname # 更轻巧的情势便是选用read命令的-t选项

}

检验客商开关{

#!/bin/bash
old_tty_settings=$(stty -g) # 保存老的设置(为何?).
stty -icanon
Keypress=$(head -c1) # 或许使用$(dd bs=1 count=1 2> /dev/null)
echo "Key pressed was ""$Keypress""."
stty "$old_tty_settings" # 恢复生机老的设置.
exit 0

}

}

iptables{

内建多个表:nat mangle 和 filter
filter预设准则表,有INPUT、FOLANDWA陆风X8D 和 OUTPUT 多少个法规链
vi /etc/sysconfig/iptables # 配置文件
INPUT # 进入
FORWARD # 转发
OUTPUT # 出去
ACCEPT # 将封包放行
REJECT # 拦阻该封包
DROP # 废弃封包不予管理
-A # 在所采纳的链(INPUT等)末增添一条或越多法规
-D # 删除一条
-E # 修改
-p # tcp、udp、icmp 0也等于全部all !取反
-P # 设置缺省计策(与全体链都不宽容强制行使此政策)
-s # IP/掩码 (IP/24) 主机名、网络名和精晓的IP地址 !取反
-j # 目的跳转,登时间调整制包的气数的专项使用内建指标
-i # 进入的(网络)接口 [名称] eth0
-o # 输出接口[名称]
-m # 模块
--sport # 源端口
--dport # 目的端口

iptables -F # 将防火墙中的准绳条目款项消逝掉 # 注意: iptables -P INPUT ACCEPT
iptables-restore < 法规文件 # 导入防火墙法则
/etc/init.d/iptables save # 保存防火墙设置
/etc/init.d/iptables restart # 重启防火墙服务
iptables -L -n # 查看准则
iptables -t nat -nL # 查看转载

iptables实例{

iptables -L INPUT # 列出某法则链中的富有规行矩步
iptables -X allowed # 删除某些法则链 ,不加法则链,祛除全体非内建的
iptables -Z INPUT # 将封包计数器归零
iptables -N allowed # 定义新的法则链
iptables -P INPUT DROP # 定义过滤政策
iptables -A INPUT -s 192.168.1.1 # 比对封包的发源IP # ! 192.168.0.0/24 ! 反向相比
iptables -A INPUT -d 192.168.1.1 # 比对封包的指标地IP
iptables -A INPUT -i eth0 # 比对封包是从哪片网卡步入
iptables -A FORWARD -o eth0 # 比对封包要从哪片网卡送出 eth+表示具备的网卡
iptables -A INPUT -p tcp # -p ! tcp 消弭tcp以外的udp、icmp。-p all全体品种
iptables -D INPUT 8 # 从有个别法规链中删除一条准则
iptables -D INPUT --dport 80 -j DROP # 从某些准绳链中删除一条法规
iptables -R INPUT 8 -s 192.168.0.1 -j DROP # 替代现行反革命法规
iptables -I INPUT 8 --dport 80 -j ACCEPT # 插入一条法规
iptables -A INPUT -i eth0 -j DROP # 此外情形分歧意
iptables -A INPUT -p tcp -s IP -j DROP # 制止钦赐IP访问
iptables -A INPUT -p tcp -s IP --dport port -j DROP # 幸免钦点IP访问端口
iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT # 允许在IP访谈钦定端口
iptables -A INPUT -p tcp --dport 22 -j DROP # 禁用某端口
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP # 禁止icmp端口
iptables -A INPUT -i eth0 -p icmp -j DROP # 禁止icmp端口
iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP # 阻止全数未有经过你系统授权的TCP连接
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT # IP包流量限定
iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT # 除192.168.62.1外,制止任哪个人ping小编的主机
iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --rttl --name WEB --rsource -j DROP # 可防御cc攻击(未测试)

}

iptables配置实例文件{

# Generated by iptables-save v1.2.11 on Fri Feb 9 12:10:37 2007
*filter
:INPUT ACCEPT [637:58967]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533]
# 允许的IP或IP段访谈 提出多少个
-A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
# 开放门户开放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
# 钦点某端口针对IP开放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
# 拒却全数公约(INPUT允许)
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
# 允许已创立的或相关连的畅通
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 拒绝ping
-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Feb 9 12:10:37 2007

}

iptables配置实例{

# 允许某段IP访谈任何端口
iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
# 设定预设法则(拒绝全体的数据包,再允许须求的,如只做WEB服务器.如故引入八个链都是DROP)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 注意: 直接设置那三条会掉线
# 开启22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 如若OUTPUT 设置成DROP的,要写上下面一条
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
# 注:不写诱致力不胜任SSH.其余的端口相像,OUTPUT设置成DROP的话,也要增多一条链
# 假设翻开了web服务器,OUTPUT设置成DROP的话,相仿也要增加一条链
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
# 做WEB服务器,开启80端口 ,其余同理
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 做邮件服务器,开启25,110端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 允许icmp包通过,允许ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
# 允许loopback!(不然会招致DNS无法符合规律关闭等难点)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

}

centos6的iptables基本配备{
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 222.186.135.61 -p tcp -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
}

加上网段转载{

# 举例通过vpn上网
echo 1 > /proc/sys/net/ipv4/ip_forward # 在基本里张开ip转载作用
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE # 加多网段转载
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o eth0 -j SNAT --to 192.168.10.158 # 原IP网段经过哪个网卡IP出去
iptables -t nat -nL # 查看转载

}

端口映射{

# 内网通过有外网IP的机械映射端口
# 内网主机增加路由
route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111 # 内网须要增加暗中同意网关,并且网关开启转载
# 网关主机
echo 1 > /proc/sys/net/ipv4/ip_forward # 在幼功里展开ip转载作用
iptables -t nat -A PREROUTING -d 外网IP -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22 # 进入
iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -j SNAT --to 外网IP # 转载回去
iptables -t nat -nL # 查看转载

}

}

}

4 服务{

/etc/init.d/sendmail start # 运转服务
/etc/init.d/sendmail stop # 关闭服务
/etc/init.d/sendmail status # 查看服务当前情景
/date/mysql/bin/mysqld_safe --user=mysql & # 运营mysql后台运营
vi /etc/rc.d/rc.local # 开机运行实践 可用于开机运转脚本
/etc/rc.d/rc3.d/S55sshd # 开机运维和关机关闭服务连接 # S开机start K关机stop 55等第 后跟服务名
ln -s -f /date/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd # 将运行程序脚本连接到开机运转目录
ipvsadm -ln # lvs查看后端负运载飞机并发
ipvsadm -C # lvs肃清准则
xm list # 查看xen设想主机列表
virsh # 虚拟化(xenkvm)管理工具 yum groupinstall Virtual*
./bin/httpd -M # 查看httpd加载模块
httpd -t -D DUMP_MODULES # rpm包httpd查看加载模块
echo 内容| /bin/mail -s "标题" 收件箱 -f 发件人 # 发送邮件
"`echo "内容"|iconv -f utf8 -t gbk`" | /bin/mail -s "`echo "标题"|iconv -f utf8 -t gbk`" 收件箱 # 解决邮件乱码
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg # 检查测量试验nagios配置文件

chkconfig{

chkconfig 服务名 on|off|set # 设置非独立服务启状态
chkconfig --level 35 httpd off # 让服务不自动运行
chkconfig --level 35 httpd on # 让服务机关运营 35指的是运作等级
chkconfig --list # 查看全部服务的运维状态
chkconfig --list |grep httpd # 查看有个别服务的开行状态
chkconfig –-list [劳务名称] # 查看服务的动静

}

nginx{

yum install -y make gcc openssl-devel pcre-devel bzip2-devel libxml2 libxml2-devel curl-devel libmcrypt-devel libjpeg libjpeg-devel libpng libpng-devel openssl

groupadd nginx
useradd nginx -g nginx -M -s /sbin/nologin

mkdir -p /opt/nginx-tmp

wget
tar fxz ngx_cache_purge-1.6.tar.gz
# ngx_cache_purge 扫除钦赐url缓存
# 假诺叁个U索罗德L为
# 通过拜望 就能够消亡该UMuranoL的缓存。

tar zxvpf nginx-1.4.4.tar.gz
cd nginx-1.4.4

# ./configure --help
# --with # 暗许不加载 需点名编写翻译此参数才使用
# --without # 暗中认可加载,可用此参数禁止使用
# --add-module=path # 增加模块的门道
# --add-module=/opt/ngx_module_upstream_check # nginx 代理状态页面
# ngx_module_upstream_check 编写翻译前亟需打对应版本补丁 patch -p1 < /opt/nginx_upstream_check_module/check_1.2.6+.patch
# --add-module=/opt/ngx_module_memc # 将央浼页面数据贮存在 memcached中
# --add-module=/opt/ngx_module_lua # 支持lua脚本 yum install lua-devel lua

./configure
--user=nginx
--group=nginx
--prefix=/usr/local/nginx
--pid-path=/usr/local/nginx/nginx.pid
--lock-path=/usr/local/nginx/nginx.lock
--with-http_ssl_module
--with-http_realip_module
--with-http_gzip_static_module
--with-http_stub_status_module
--add-module=/opt/ngx_cache_purge-1.6
--http-client-body-temp-path=/opt/nginx-tmp/client
--http-proxy-temp-path=/opt/nginx-tmp/proxy
--http-fastcgi-temp-path=/opt/nginx-tmp/fastcgi
--http-uwsgi-temp-path=/opt/nginx-tmp/uwsgi
--http-scgi-temp-path=/opt/nginx-tmp/scgi

make && make install

/usr/local/nginx/sbin/nginx –t # 检查Nginx配置文件 但并不推行
/usr/local/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf # 检查Nginx配置文件
/usr/local/nginx/sbin/nginx # 启动nginx
/usr/local/nginx/sbin/nginx -s reload # 重载配置
/usr/local/nginx/sbin/nginx -s stop # 关闭nginx服务

}

httpd{

编写翻译参数{

# so模块用来提供DSO帮衬的apache焦点模块
# 假若编写翻译中带有其他DSO模块,则mod_so会被活动蕴涵进基本。
# 假使期望主旨能够装载DSO,但不实际编写翻译任何DSO模块,则需分明钦赐"--enable-so=static"

./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite --enable-forward # 实例编写翻译

--with-mpm=worker # 已worker格局运转
--with-apxs=/usr/local/apache/bin/apxs # 制作apache的动态模块DSO rpm包 httpd-devel #编写翻译模块 apxs -i -a -c mod_foo.c
--enable-so # 让Apache能够帮衬DSO格局
--enable-mods-shared=most # 告诉编写翻译器将有着正式模块都动态编写翻译为DSO模块
--enable-rewrite # 扶植地点重写成效
--enable-module=most # 用most能够将黄金年代部分有的时候用的,不在缺省常用模块中的模块编写翻译进来
--enable-mods-shared=all # 意思是动态加载全数模块,如若去掉-shared话,是静态加载全数模块
--enable-expires # 能够拉长文件过期的约束,有效减轻服务器压力,缓存在客商端,保质期内不会再也做客服务器,除非按f5刷新,但也形成文件更新不即刻
--enable-deflate # 压缩功用,网页可以直达十分之六的滑坡,节省带宽开支,但会对cpu压力有少数加强
--enable-headers # 文件头音讯改写,压缩作用需求
--disable-MODULE # 禁用MODULE模块(仅用于着力模块)
--enable-MODULE=shared # 将MODULE编译为DSO(可用于具备模块)
--enable-mods-shared=MODULE-LIST # 将MODULE-LIST中的全部模块都编写翻译成DSO(可用于具备模块)
--enable-modules=MODULE-LIST # 将MODULE-LIST静态连接进基本(可用于具备模块)

# 上述 MODULE-LIST 可以是:
1、用引号界定並且用空格分隔的模块名列表 --enable-mods-shared='headers rewrite dav'
2、"most"(大许多模块) --enable-mods-shared=most
3、"all"(全体模块)

}

转发{

#针对非80端口的乞请管理
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) [L,R]

RewriteCond %{HTTP_HOST} ^ss.aa.com [NC]
RewriteRule ^(.*) [L,R=301]
#RewriteRule 只对?前管理,所以会把?后的都保存下去
#在转变后地址后加?就能够收回RewriteRule保留的字符
#宝马X3的意思是redirect,即重定向,该央求不会再被apache交给后端管理,而是直接回到给浏览器进行重定向跳转。301是再次来到的http状态码,具体能够参照http rfc文书档案,跳转都是3XX。
#L是last,即最终八个rewrite法则,若是央浼被此准绳命中,将不会一连再向下相称其余法规。

}

}

mysql源码安装{

groupadd mysql
useradd mysql -g mysql -M -s /bin/false
tar zxvf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
--with-mysqld-user=mysql
--with-extra-charsets=all
--with-unix-socket-path=/var/tmp/mysql.sock
make && make install
# 生成mysql顾客数据库和表文件,在安装包中输入
scripts/mysql_install_db --user=mysql
vi ~/.bashrc
export PATH="$PATH: /usr/local/mysql/bin"
# 配置文件,有large,medium,small五个,根据机器质量选拔
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
cd /usr/local
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
cp /usr/local/mysql/libexec/mysqld mysqld.old
ln -s /usr/local/mysql/bin/mysql /sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/S15mysql5
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/K15mysql5

}

mysql常用命令{

./mysql/bin/mysqld_safe --user=mysql & # 启动mysql服务
./mysql/bin/mysqladmin -uroot -p -S ./mysql/data/mysql.sock shutdown # 停止mysql服务
mysqlcheck -uroot -p -S mysql.sock --optimize --databases account # 检查、修复、优化MyISAM表
mysqlbinlog slave-relay-bin.000001 # 查看二进制日志(报错加相对路径)
mysqladmin -h myhost -u root -p create dbname # 创建数据库

flush privileges; # 刷新
show databases; # 突显全部数据库
use dbname; # 展开数据库
show tables; # 显示选中数据库中负有的表
desc tables; # 查看表结构
drop database name; # 删除数据库
drop table name; # 删除表
create database name; # 制造数据库
select 列名称 from 表名称; # 查询
show grants for repl; # 查看客商权限
show processlist; # 查看mysql进程
select user(); # 查看全体客户
show slave statusG; # 查看主从状态
show variables; # 查看所有参数变量
show status; # 运市价况
show table status # 查看表的斯特林发动机状态
drop table if exists user # 表存在就删除
create table if not exists user # 表不设有就创建
select host,user,password from user; # 查询客商权限 先use mysql
create table ka(ka_id varchar(6),qianshu int); # 创建表
SHOW VARIABLES LIKE 'character_set_%'; # 查看系统的字符集和排序格局的设定
show variables like '%timeout%'; # 查看超时(wait_timeout)
delete from user where user=''; # 删除空客户
delete from user where user='sss' and host='localhost' ; # 删除顾客
drop user 'sss'@'localhost'; # 使用此措施删除客商尤其可相信
ALTER TABLE mytable ENGINE = MyISAM ; # 退换现存的表使用的蕴藏引擎
SHOW TABLE STATUS from 库名 where Name='表名'; # 查询表引擎
CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB # 创设表钦赐期存款款和储蓄引擎的花色(MyISAM或INNODB)
grant replication slave on *.* to '用户'@'%' identified by '密码'; # 创造主从复制客户
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction); # 增加索引
alter table name add column accountid(列名) int(11) NOT NULL(字段不为空); # 插入字段
update host set monitor_state='Y',hostname='xuesong' where ip='192.168.1.1'; # 更新数据

自增表{

create table oldBoy (id INTEGER PRIMARY KEY AUTO_INCREMENT, name CHAR(30) NOT NULL, age integer , sex CHAR(15) ); # 创制自增表
insert into oldBoy(name,age,sex) values(%s,%s,%s) # 自增插入数据

}

登录mysql的命令{

# 格式: mysql -h 主机地址 -u 顾客名 -p 顾客密码
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK

}

shell执行mysql命令{

mysql -u root -p'123' xuesong < file.sql # 针对钦赐库施行sql文件中的语句,好处无需转义特殊符号,一条语句能够换行.不钦赐库试行时语句中供给先use
mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "
use $dbname;
delete from data where date=('$date1');
" # 实践多条mysql命令
mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int(11) NOT NULL;flush privileges;" # 不登录mysql插入字段

}

备份数据库{

mysqldump -h host -u root -p --default-character-set=utf8 dbname >dbname_backup.sql # 不饱含库名,还原需先创造库,在use
mysqldump -h host -u root -p --database --default-character-set=utf8 dbname >dbname_backup.sql # 包罗库名,还原无需制造库
/bin/mysqlhotcopy -u root -p # mysqlhotcopy只可以备份MyISAM引擎
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 dbname table1 table2 > /data/db.sql # 备份表
mysqldump -uroot -p123 -d database > database.sql # 备份数据库结构

innobackupex --user=root --password="" --defaults-file=/data/mysql5/data/my_3306.cnf --socket=/data/mysql5/data/mysql.sock --slave-info --stream=tar --tmpdir=/data/dbbackup/temp /data/dbbackup/ 2>/data/dbbackup/dbbackup.log | gzip 1>/data/dbbackup/db50.tar.gz # xtrabackup备份需单独安装软件 优点: 速度快,压力小,可一贯回复主从复制

}

过来数据库{

mysql -h host -u root -p dbname < dbname_backup.sql
source 路径.sql # 登陆mysql后还原sql文件

}

赋权限{

# 指定IP: $IP 本机: localhost 所有IP地址: % # 日常内定多条
grant all on zabbix.* to [email protected]"$IP"; # 对现成账号付与权力
grant select on database.* to [email protected]"%" Identified by "passwd"; # 付与查询权限(未有客商,直接开立)
grant all privileges on database.* to [email protected]"$IP" identified by 'passwd'; # 授予钦赐IP钦定客户具备权力(不允许对当下库给其余客商赋权限)
grant all privileges on database.* to [email protected]"localhost" identified by 'passwd' with grant option; # 授予本机内定客商具有权力(允许对眼下库给别的顾客赋权限)
grant select, insert, update, delete on database.* to [email protected]'ip'identified by "passwd"; # 开放管理操作指令
revoke all on *.* from [email protected]; # 回笼权限

}

更动密码{

update user set password=password('passwd') where user='root'
mysqladmin -u root password 'xuesong'

}

mysql忘记密码后重新初始化{

cd /data/mysql5
/data/mysql5/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
use mysql;
update user set password=password('123123') where user='root';

}

mysql主从复制失败恢复生机{

slave stop;
reset slave;
change master to master_host='10.10.10.110',master_port=3306,master_user='repl',master_password='repl',master_log_file='master-bin.000010',master_log_pos=107,master_connect_retry=60;
slave start;

}

sql语句使用变量{

use xuesong;
set @a=concat('my',weekday(curdate())); # 组适时间变量
set @sql := concat('CREATE TABLE IF NOT EXISTS ',@a,'( id INT(11) NOT NULL )'); # 组合sql语句
select @sql; # 查看语句
prepare create_tb from @sql; # 准备
execute create_tb; # 执行

}

检查实验mysql主从复制延迟{

1、在从库按期实行更新主库中的一个timeout数值
2、同期收取从库中的timeout值比较推断从库与主库的延迟

}

mysql慢查询{

拉开慢查询日志{

# 配置文件 /etc/my.conf
[mysqld]
log-slow-queries=/var/lib/mysql/slowquery.log # 钦赐日志文件存放地方,可认为空,系统会给一个缺省的文本host_name-slow.log
long_query_time=5 # 记录当先的光阴,默以为10s
log-queries-not-using-indexes # log下来未有选拔索引的query,能够依据事态决定是不是开启 可不加
log-long-format # 借使设置了,全部未有应用索引的询问也将被记录 可不加
# 直接退换生效
show variables like "%slow%"; # 查看慢查询状态
set global slow_query_log='ON'; # 开启慢查询日志 变量恐怕分裂,看上句询问出来的变量

}

mysqldumpslow慢查询日志查看{

-s # 是order的逐个,包涵看了代码,重要有 c,t,l,r和ac,at,al,ar,分别是依据query次数,时间,lock的大运和返回的记录数来排序,后边加了a的时倒序
-t # 是top n的意思,即为重返前边多少条的数码
-g # 前边可以写三个正则相称模式,大小写不灵活的

mysqldumpslow -s c -t 20 host-slow.log # 访谈次数最多的十八个sql语句
mysqldumpslow -s r -t 20 host-slow.log # 重返记录集最多的十几个sql
mysqldumpslow -t 10 -s t -g "left join" host-slow.log # 依据时间回来前10条里面富含左连接的sql语句

show global status like '%slow%'; # 查看今后以此session某些许个慢查询
show variables like '%slow%'; # 查看慢查询日志是或不是展开,即使slow_query_log和log_slow_queries展现为on,表明服务器的慢查询日志已经拉开
show variables like '%long%'; # 查看超时阀值
desc select * from wei where text='xishizhaohua'G; # 扫描整张表 tepe:ALL 未有使用索引 key:NULL
create index text_index on wei(text); # 创制索引

}

}

mysql操作次数查询{

select * from information_schema.global_status;

com_select
com_delete
com_insert
com_update

}

}

mongodb{

一、启动{

# 不运维认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/
# 运转认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/ --auth

# 配置文件措施运行
cat /opt/mongodb/mongodb.conf
port=27017 # 端口号
fork=true # 以守护进度的措施运转,创设服务器进程
auth=true # 开启顾客认证
logappend=true # 日志接收扩充格局
logpath=/opt/mongodb/mongodb.log # 日志输出文件路线
dbpath=/opt/mongodb/data/ # 数据库路线
shardsvr=true # 设置是还是不是分片
maxConns=600 # 数据库的最浦那接数
./mongod -f /opt/mongodb/mongodb.conf

# 其余参数
bind_ip # 绑定IP 使用mongo登陆必要钦命对应IP
journal # 开启日志效率,裁减单机故障的还原时间,替代dur参数
syncdelay # 系统一齐刷新磁盘的年月,默许60秒
directoryperdb # 每一种db单独寄放目录,建议设置.与mysql独立表空间形似
repairpath # 实施repair时的一时目录.如果没开启journal,现身非常重启,必得进行repair操作
# mongodb未有参数设置内部存款和储蓄器大小.使用os mmap机制缓存数据文件,在数据量不超越内部存款和储蓄器的意况下,功用相当的高.数据量超越系统可用内存会影响写入质量

}

二、关闭{

# 方法一:登录mongodb
./mongo
use admin
db.shutdownServer()

# 方法:kill传递能量信号 三种皆可
kill -2 pid
kill -15 pid

}

三、开启认证与顾客处理{

./mongo # 先登录
use admin # 切换到admin库
db.addUser("root","123456") # 创立客商
db.addUser('zhansan','pass',true) # 若是客户的readOnly为true那么那个客商只好读取数据,增加一个readOnly客户zhansan
./mongo 127.0.0.1:27017/mydb -uroot -p123456 # 再度登陆,只可以针对顾客所在库登入
#固然是一级管理员,可是admin不可能从来登陆其他数据库,不然报错
#Fri Nov 22 15:03:21.886 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
show collections # 查看链接状态 再度登陆使用如下命令,显示错误未经授权
db.system.users.find(); # 查看创制客商音信
db.system.users.remove({user:"zhansan"}) # 删除客商

#卷土而来密码只要求重启mongodb 不加--auth参数

}

四、登录{

192.168.1.5:28017 # http登录后可查阅情形
./mongo # 默许登陆后展开 test 库
./mongo 192.168.1.5:27017/databaseName # 直接连接有些库 一纸空文则开创 运维认证须要钦赐对应库才可登入

}

五、查看意况{

#登入后推行命令查看景况
db.runCommand({"serverStatus":1})
globalLock # 表示全局写入锁并吞了服务器多少时间(飞秒)
mem # 包括服务器内存映射了稍微数量,服务器进程的虚构内存和常驻内部存款和储蓄器的占有处境(MB)
indexCounters # 表示B树在磁盘检索(misses)和内部存储器检索(hits)的次数.若是那多个比值最早上升,就要考虑增加内部存款和储蓄器了
backgroudFlushing # 表示后台做了多少次fsync以至用了多少时间
opcounters # 包涵每个关键擦撞的次数
asserts # 总括了断言的次数

#动静新闻从服务器运行上马臆度,要是过大就能够重新苏醒设置,发送重新载入参数,全数计数都会重新初始化,asserts中的roolovers值扩充

#mongodb自带的一声令下
./mongostat
insert #每秒插入量
query #每秒查询量
update #每秒更新量
delete #每秒删除量
locked #锁定量
qr|qw #客商端询问排队长度(读|写)
ar|aw #龙腾虎跃客商端量(读|写)
conn #连接数
time #现阶段日子

}

六、常用命令{

db.listCommands() # 当前MongoDB帮忙的具有命令(相仿可由此运转命令db.runCommand({"listCommands" : `1})来查询全数命令卡塔 尔(阿拉伯语:قطر‎

db.runCommand({"buildInfo" : 1}) # 重返MongoDB服务器的版本号和服务器OS的相干音信。
db.runCommand({"collStats" : 集合名}) # 重返该群集的总括音讯,包涵数据大小,已分配存款和储蓄空间尺寸,索引的轻重等。
db.runCommand({"distinct" : 集合名, "key" : 键, "query" : 查询文书档案}) # 重临特定文书档案全数相符查询文书档案内定条件的文书档案的钦命键的具备分化的值。
db.runCommand({"dropDatabase" : 1}) # 清空当前数据库的音讯,富含删除全部的联谊和目录。
db.runCommand({"isMaster" : 1}) # 检查本服务器是主服务器依然从服务器。
db.runCommand({"ping" : 1}) # 检查服务器链接是或不是健康。尽管服务器上锁,该命令也会应声赶回。
db.runCommand({"repaireDatabase" : 1}) # 对现阶段数据库实行修复并减弱,如果数据库非常的大,那几个命令会非常耗费时间。
db.runCommand({"serverStatus" : 1}) # 查看那台服务器的军事拘留总计音信。
# 有个别命令必需在admin数据库下运作,如下多少个指令:
db.runCommand({"renameCollection" : 集合名, "to":集合名}) # 对群集重命名,注意八个会集名都即使完整的联谊命名空间,如foo.bar, 表示数据库foo下的会集bar。
db.runCommand({"listDatabases" : 1}) # 列出服务器上有着的数据库

}

七、进度调节{

db.currentOp() # 查看活动进程
db.$cmd.sys.inprog.findOne() # 查看活动经过 与地点同样
opid # 操作进度号
op # 操作类型(查询更新)
ns # 命名空间,指操作的是哪个目的
query # 若是操作类型是查询,这里将展现具体的查询内容
lockType # 锁的种类,指明是读锁依旧写锁

db.killOp(opid值) # 结束进度
db.$cmd.sys.killop.findOne({op:opid值}) # 停止进度

}

八、备份还原{

./mongoexport -d test -c t1 -o t1.dat # 导出JSON格式
-c # 指明导出集结
-d # 使用库
./mongoexport -d test -c t1 -csv -f num -o t1.dat # 导出csv格式
-csv # 指明导出csv格式
-f # 指明供给导出这些例

db.t1.drop() # 登陆后删除数据
./mongoimport -d test -c t1 -file t1.dat # mongoimport还原JSON格式
./mongoimport -d test -c t1 -type csv --headerline -file t1.dat # mongoimport还原csv格式数据
--headerline # 指明不导入第风流浪漫行 因为第意气风发行是列名

./mongodump -d test -o /bak/mongodump # mongodump数据备份
./mongorestore -d test --drop /bak/mongodump/* # mongorestore恢复
--drop #复苏前先删除
db.t1.find() #查看

# mongodump 即使能不停机备份,但市区了拿到实时数据视图的力量,使用fsync命令能在运作时复制数据目录何况不会损坏数据
# fsync会强克制务器将具有缓冲区的多少写入磁盘.协作lock还阻挡对数据库的愈益写入,知道释放锁甘休
# 备份在从库上备份,不贻误读写还可以保险实时快速照相备份
db.runCommand({"fsync":1,"lock":1}) # 推行强制更新与写入锁
db.$cmd.sys.unlock.findOne() # 解锁
db.currentOp() # 查看解锁是还是不是正规

}

九、修复{

# 当停电或任何故障引起不正规关闭时,会诱致部分数量损坏错失
./mongod --repair # 修复操作:运维时候增多 --repair
# 修复进度:将享有文书档案导出,然后立即导入,忽视无效文书档案.实现后重新建立索引。时间较长,会抛弃损坏文书档案
# 修复数据还是能起到压缩数据库的职能
db.repairDatabase() # 运维中的mongodb可应用 repairDatabase 修复当前利用的数据库
{"repairDatabase":1} # 通过驱动程序

}

十、python使用mongodb{

原文:

easy_install pymongo # 安装(python2.7+)
import pymongo
connection=pymongo.Connection('localhost',27017) # 创制连接
db = connection.test_database # 切换数据库
collection = db.test_collection # 获取collection
# db和collection都是延时创立的,在增添Document时才真的制造

文书档案增加, _id自动创制
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
posts = db.posts
posts.insert(post)
ObjectId('...')

批量插入
new_posts = [{"author": "Mike",
"text": "Another post!",
"tags": ["bulk", "insert"],
"date": datetime.datetime(2009, 11, 12, 11, 14)},
{"author": "Eliot",
"title": "MongoDB is fun",
"text": "and pretty easy too!",
"date": datetime.datetime(2009, 11, 10, 10, 45)}]
posts.insert(new_posts)
[ObjectId('...'), ObjectId('...')]

拿到具有collection
db.collection_names() # 相当于SQL的show tables

得到单个文书档案
posts.find_one()

查询多少个文书档案
for post in posts.find():
post

加条件的查询
posts.find_one({"author": "Mike"})

高档查询
posts.find({"date": {"$lt": "d"}}).sort("author")

总结数据
posts.count()

加索引
from pymongo import ASCENDING, DESCENDING
posts.create_index([("date", DESCENDING), ("author", ASCENDING)])

查阅查询语句的属性
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["cursor"]
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["nscanned"]

}

}

JDK安装{

chmod 744 jdk-1.7.0_79-linux-i586.bin
./jdk-1.7.0_79-linux-i586.bin
vi /etc/profile # 增多景况变量
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH CLASSPATH

. /etc/profile # 加载新的蒙受变量
jps -ml # 查看java进程
}

redis动态加内存{

./redis-cli -h 10.10.10.11 -p 6401
save # 保存当前快速照相
config get * # 列出具有当前布局
config get maxmemory # 查看指虞诩插
config set maxmemory 15360000000 # 动态改良最大内部存款和储蓄器配置参数

}

nfs{

# 信赖rpc服务通讯 portmap[centos5] 或 rpcbind[centos6]
yum install nfs-utils portmap # centos5安装
yum install nfs-utils rpcbind # centos6安装

vim /etc/exports # 配置文件
# sync # 同步写入
# async # 暂存并非一向写入
# no_root_squash # 开放客商端采取root身份操作
# root_squash # 使用者身份为root则被压缩成无名氏使用,即nobody,相对安全
# all_squash # 全数NFS的使用者身份都被减弱为无名氏
/data/images 10.10.10.0/24(rw,sync,no_root_squash)

service portmap restart # 重启centos5的nfs依赖的rpc服务
service rpcbind restart # 重启centos6的nfs依赖的rpc服务
service nfs restart # 重启nfs服务 确定保障重视 portmap 或 rpcbind 服务已运维
service nfs reload # 重载NFS服务配置文件
showmount -e # 服务端查看本身分享的劳务
showmount -a # 展现已经与顾客端连接上的目录新闻
showmount -e 10.10.10.3 # 列出服务端可供使用的NFS共享客户端测量检验能还是不可能访谈nfs服务
mount -t nfs 10.10.10.3:/data/images/ /data/img # 挂载nfs 假使延期影响大加参数 noac

# 服务端的 portmap 或 rpcbind 被结束后,nfs依旧专门的学业例行,但是umout财务和会计提醒: not found / mounted or server not reachable 重启服务器的portmap 或 rpcbind 也行不通。 nfs也要跟珍视启,不然nfs工作依然是不健康的。
# 同时已挂载会促成NFS客商端df卡住和挂载目录不可能访谈。请先用 mount 查看当前挂载景况,记录挂载音信,在胁迫卸载挂载目录,重新挂载
umount -f /data/img/ # 强制卸载挂载目录 如还不能 umount -l /data/img/

nfsstat -c # 顾客机发送和推却的RPC和NFS调用数指标音讯
nfsstat -cn # 展现和打字与印刷与顾客机NFS调用相关的新闻
nfsstat -r # 展现和打字与印刷顾客机和服务器的与RPC调用相关的新闻
nfsstat –s # 呈现关于服务器收到和谢绝的RPC和NFS调用数目标信息

}

hdfs{
hdfs --help # 全体参数

hdfs dfs -help # 运营文件系统命令在Hadoop文件系统
hdfs dfs -ls /logs # 查看
hdfs dfs -ls /user/ # 查看客户
hdfs dfs -cat
hdfs dfs -df
hdfs dfs -du
hdfs dfs -rm
hdfs dfs -tail

hdfs dfsadmin -help # hdfs集群节点管理
hdfs dfsadmin -report # 基本的文件系统总计音信
}

}

5 网络{

rz # 通过ssh上传小文件
sz # 通过ssh下载小文件
ifconfig eth0 down # 禁止使用网卡
ifconfig eth0 up # 启用网卡
ifup eth0:0 # 启用网卡
mii-tool em1 # 查看网线是或不是连接
traceroute www.baidu.com # 测量检验跳数
vi /etc/resolv.conf # 设置DNS nameserver IP 定义DNS服务器的IP地址
nslookup www.moon.com # 分析域名IP
dig -x www.baidu.com # 解析域名IP
dig +short txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条
host -t txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条
tcpdump tcp port 22 # 抓包
lynx # 文本上网
wget -P 路径 -O 重命名 http地址 # 下载 包名:wgetrc -q 安静
dhclient eth1 # 自动得到IP
mtr -r www.baidu.com # 测量试验互联网链路节点响合时间 # trace ping 结合
ipcalc -m "$ip" -p "$num" # 依照IP和主机最大数总结掩码
curl -I www.baidu.com # 查看网页http头
curl -s www.baidu.com # 不出示速度
queryperf -d list -s DNS_IP -l 2 # BIND自带DNS压力测量检验 [list 文件格式:www.turku.fi A]
telnet ip port # 测量试验端口是还是不是开放,某个服务可直接输入指令获得再次回到状态
echo "show " |nc $ip $port # 适用于telnet后生可畏类登入得到传令归来
nc -l -p port # 监听内定端口
nc -nv -z 10.10.10.11 1080 |grep succeeded # 检查主机端口是不是开放
curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} $URL # 检查页面状态
curl -d "user=xuesong&pwd=123" # 提交web页面表单 需查看表单提交地址
curl -s # 通过IP138取本机出口外网IP
rsync -avzP -e "ssh -p 22" /dir [email protected]$IP:/dir # 同步目录 # --delete 无差同步 删除目录下其余文件
sshpass -p "$passwd" rsync -avzP -e "ssh -p 22" /dir [email protected]$IP:/dir/ # 钦点密码幸免互相联合目录
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0 # 扩大逻辑IP地址
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 禁ping
net rpc shutdown -I IP_ADDRESS -U username%password # 远程关掉风流倜傥台WINDOWS机器
wget --random-wait -r -p -e robots=off -U Mozilla www.example.com # 递归形式下载整个网址

网卡流量查看{

watch more /proc/net/dev # 实时监察和控制流量文件系统 累加值
iptraf # 网卡流量查看工具
nethogs -d 5 eth0 eth1 # 按进度实时总括网络流量 epel源nethogs

sar {
-n参数有6个差异的开关: DEV | EDEV | NFS | NFSD | SOCK | ALL
DEV呈现互连网接口消息
EDEV显示关于互联网错误的总括数据
NFS计算活动的NFS顾客端的新闻
NFSD总计NFS服务器的音信
SOCK展现套 接字消息
ALL展现全部5个按键

sar -n DEV 1 10

rxpck/s # 每分钟收到的数据包
txpck/s # 每分钟发先生送的数据包
rxbyt/s # 每分钟收到的字节数
txbyt/s # 每分钟发(Zhong Fa卡塔 尔(阿拉伯语:قطر‎送的字节数
rxcmp/s # 每分钟收到的收缩数据包
txcmp/s # 每分钟发(Zhong Fa卡塔 尔(英语:State of Qatar)送的压缩数据包
rxmcst/s # 每分钟收到的多播数据包

}

}

netstat{

# 几十万冒出的意况下netstat会未有响应,提议使用 ss 命令
-a # 显示全数连接中的Socket
-t # 显示TCP连接
-u # 显示UDP连接
-n # 显示全部已成立的管用连接
netstat -anlp # 查看链接
netstat -r # 查看路由表
}

ss{

# netstat是遍历/proc上边每一种PID目录,ss直接读/proc/net下边包车型大巴计算音讯。所以ss施行的时候消耗电源以至消耗的时光都比netstat少非常多
ss -s # 列出最近socket详细新闻
ss -l # 展现本地张开的具有端口
ss -pl # 显示各个进度实际打开的socket
ss -ant # 展现全数TCP socket
ss -u -a # 展现全体UDP Socekt
ss dst 192.168.119.113 # 相配远程地址
ss dst 192.168.119.113:http # 匹配远程地址和端口号
ss dst 192.168.119.113:3844 # 相称远程地址和端口号
ss src 192.168.119.103:16021 # 相称本地地址和端口号
ss -o state established '( dport = :smtp or sport = :smtp )' # 呈现全体已确立的SMTP连接
ss -o state established '( dport = :http or sport = :http )' # 彰显全数已创建的HTTP连接
ss -x src /tmp/.X11-unix/* # 搜索具备连接X服务器的长河

}

并发数查看{

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV # 正在守候管理的呼吁
ESTABLISHED # 寻常数据传输状态,既当前并发数
TIME_WAIT # 处理完结,等待超时甘休的倡议
CLOSE_WAIT # 客户端万分关闭,未有做到4次挥手 如多量也许存在攻击行为

}

ssh{

ssh -p 22 [email protected] # 从linux ssh登陆另风姿罗曼蒂克台linux
ssh -p 22 [email protected] CMD # 利用ssh操作远程主机
scp -P 22 文件 [email protected]:/目录 # 把当羊眼半夏件拷贝到远程主机
sshpass -p '密码' ssh -n [email protected]$IP "echo hello" # 钦定密码远程操作
ssh -o StrictHostKeyChecking=no $IP # ssh连接不提示yes
ssh -t "su -" # 钦赐伪终端 客户端以互相形式专门的职业
scp [email protected]:远程目录 本地目录 # 把远程钦命文件拷贝到当地
ssh -N -L2001:remotehost:80 [email protected] # 用SSH创制端口转载通道
ssh -t host_A ssh host_B # 嵌套使用SSH
ssh -t -p 22 [email protected]$Ip /bin/su - root -c {$Cmd}; # 远程su实行命令 Cmd=""/sbin/ifconfig eth0""
ssh-keygen -t rsa # 生成密钥
ssh-copy-id -i [email protected] # 传送key
vi $HOME/.ssh/authorized_keys # 公钥存放地方
sshfs [email protected]:/path/to/folder /path/to/mount/point # 通过ssh挂载远程主机上的公文夹
fusermount -u /path/to/mount/point # 卸载ssh挂载的目录
ssh [email protected] cat /path/to/remotefile | diff /path/to/localfile - # 用DIFF比较远程文件跟地面文件
su - user -c "ssh [email protected] "echo -e aa |mail -s test [email protected]"" # 切换客户登录远程发送邮件

SSH反向连接{

# 外网A要调控内网B

ssh -NfR 1234:localhost:2223 [email protected] -p22 # 将A主机的1234端口和B主机的2223端口绑定,也正是远程端口映射
ss -ant # 这时在A主机上sshd会listen本地1234端口
# LISTEN 0 128 127.0.0.1:1234 *:*
ssh localhost -p1234 # 在A主机连接本地1234端口

}
}

网卡配置文件{

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
HWADDR=00:0C:29:3F:E1:EA
IPADDR=192.168.1.55
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1
#ARPCHECK=no # 进制arp检查

}

route {

route # 查看路由表
route add default gw 192.168.1.1 dev eth0 # 增多暗中同意路由
route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 增添静态路由网关
route del -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 删除静态路由网关

}

静态路由{

vim /etc/sysconfig/static-routes
any net 192.168.12.0/24 gw 192.168.0.254
any net 192.168.13.0/24 gw 192.168.0.254

}

解决ssh链接慢{

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i '/#UseDNS yes/aUseDNS no' /etc/ssh/sshd_config
/etc/init.d/sshd restart

}

ftp上传{

ftp -i -v -n $HOST <<END
user $USERNAME $PASSWORD
cd /ftp
mkdir data
cd data
mput *.tar.gz
bye
END

}

nmap{

nmap -PT 192.168.1.1-111 # 先ping在扫描主机开放端口
nmap -O 192.168.1.1 # 扫描出系统基本版本
nmap -sV 192.168.1.1-111 # 扫描端口的软件版本
nmap -sS 192.168.1.1-111 # 半开扫描(经常不会记录日志)
nmap -P0 192.168.1.1-111 # 不ping直接扫描
nmap -d 192.168.1.1-111 # 详细信息
nmap -D 192.168.1.1-111 # 不可能找寻真正扫描主机(掩盖IP)
nmap -p 20-30,139,60000- # 端口范围 表示:扫描20到30号端口,139号端口以至全体大于60000的端口
nmap -P0 -sV -O -v 192.168.30.251 # 组合扫描(不ping、软件版本、内核版本、详细音信)

# 不协理windows的扫描(可用以判定是不是是windows)
nmap -sF 192.168.1.1-111
nmap -sX 192.168.1.1-111
nmap -sN 192.168.1.1-111

}

流量切分线路{

# 程序决断步向IP线路,设置服务器路由法则调控重返
vi /etc/iproute2/rt_tables
#增多一条宗旨
252 bgp2 #瞩目政策的序号顺序
ip route add default via 第二个出口上线IP(非暗中同意网关) dev eth1 table bgp2
ip route add from 本机第三个ip table bgp2
#查看
ip route list table 252
ip rule list
#中标后将语句增多开机运转

}

snmp{

snmptranslate .1.3.6.1.2.1.1.3.0 # 查看映射关系
DISMAN-EVENT-MIB::sysUpTimeInstance
snmpdf -v 1 -c public localhost # SNMP监视远程主机的磁盘空间
snmpnetstat -v 2c -c public -a 192.168.6.53 # SNMP获得钦赐IP的兼具开放端口状态
snmpwalk -v 2c -c public 10.152.14.117 .1.3.6.1.2.1.1.3.0 # SNMP获得主机运行时间
# MIB安装(ubuntu)
# sudo apt-get install snmp-mibs-downloader
# sudo download-mibs
snmpwalk -v 2c -c public 10.152.14.117 sysUpTimeInstance # SNMP通过MIB库获取主机运维时间

}

}

6 磁盘{

df -Ph # 查看硬盘体量
df -T # 查看磁盘分区格式
df -i # 查看inode节点 借使inode用满后无法创建文件
du -h 目录 # 检验目录下全部文件大小
du -sh * # 展现当前目录中子目录的轻重
mount -l # 查看分区挂载情形
fdisk -l # 查看磁盘分区状态
fdisk /dev/hda3 # 分区
mkfs -t ext3 /dev/hda3 # 格式化分区
fsck -y /dev/sda6 # 对文件系统修复
lsof |grep delete # 释放进程占用磁盘空间 列出进度后,查看文件是还是不是存在,官样文章则kill掉此进度
tmpwatch -afv 10 /tmp # 删除10钟头内未使用的文本 勿在重大目录使用
cat /proc/filesystems # 查看当前系统协理文件系统
mount -o remount,rw / # 修改只读文件系统为读写
iotop # 磁盘IO占用意况排序 yum install iotop
smartctl -H /dev/sda # 检验硬盘状态 # yum install smartmontools
smartctl -i /dev/sda # 检验硬盘消息
smartctl -a /dev/sda # 检查测验全部消息
e2label /dev/sda5 # 查看卷标
e2label /dev/sda5 new-label # 创造卷标
ntfslabel -v /dev/sda8 new-label # NTFS加多卷标
tune2fs -j /dev/sda # ext2分区转ext3分区
tune2fs -l /dev/sda # 查看文件系统消息
mke2fs -b 2048 /dev/sda5 # 钦定索引块大小
dumpe2fs -h /dev/sda5 # 查看一流块的音信
mount -t iso9660 /dev/dvd /mnt # 挂载光驱
mount -t ntfs-3g /dev/sdc1 /media/yidong # 挂载ntfs硬盘
mount -t nfs 10.0.0.3:/opt/images/ /data/img # 挂载nfs 要求重载 /etc/init.d/nfs reload 重启要求先运转 portmap 服务
mount -o loop /software/rhel4.6.iso /mnt/ # 挂载镜像文件

磁盘IO品质检查评定{

iostat -x 1 10

% user # 呈现了在顾客级(应用程序)施行时生成的 CPU 使用率百分比。
% system # 呈现了在系统级(内核)实行时生成的 CPU 使用率百分比。
% idle # 展现了在 CPU 空闲还要系统绝非未成功的磁盘 I/O 诉求时的日子百分比。
% iowait # 展现了 CPU 空闲时期系统有未到位的磁盘 I/O 必要时的大运百分比。

rrqm/s # 每秒实行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s # 每秒实行 merge 的写操作数目。即 delta(wmerge)/s
r/s # 每秒达成的读 I/O 设备次数。即 delta(rio)/s
w/s # 每秒完毕的写 I/O 设备次数。即 delta(wio)/s
rsec/s # 每秒读扇区数。即 delta(rsect)/s
wsec/s # 每秒写扇区数。即 delta(wsect)/s
rkB/s # 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(供给总括)
wkB/s # 每秒写K字节数。是 wsect/s 的二分之一。(须求总计)
avgrq-sz # 平均每一趟设备I/O操作的数码大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz # 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为皮秒)。
await # 平均每一次设备I/O操作的等候时间 (纳秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm # 平均每一趟设备I/O操作的服务时间 (皮秒)。即 delta(use)/delta(rio+wio)
%util # 大器晚成秒中有百分之多少的小时用来 I/O 操作,或然说大器晚成秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为皮秒)

IO质量评定准则{

1、 假如 %util 接近百分之百,表明发生的I/O伏乞太多,I/O系统已经满负荷,该磁盘大概存在瓶颈。
2、 idle 小于百分之八十 IO压力就非常的大了,日常读取速度有比较多的wait.
3、 同有时间能够整合 vmstat 查看查看b参数(等待财富的进程数)和wa参数(IO等待所占用的CPU时间的比重,高过四分之三时IO压力高)
4、 svctm 日常要低于 await (因为还要等待的央求的等候时间被重新总计了),svctm 的大大小小雷同和磁盘品质有关,CPU/内部存款和储蓄器的负荷也会对其有影响,央求过多也会直接引致svctm 的增添. await 的尺寸相仿决定于服务时间(svctm) 以至 I/O 队列的长度和 I/O 乞求的发生方式. 若是 svctm 比较接近 await,表明 I/O 大致未有等待时间;如若 await 远大于 svctm,表明 I/O 队列太长,应用得到的响合时间变慢,要是响适时间超越了顾客能够容许的限量,这个时候能够虚构更改越来越快的磁盘,调节内核 elevator 算法,优化利用,只怕进级 CPU
5、 队列长度(avgqu-sz)也可用作衡量系统 I/O 负荷的目标,但出于 avgqu-sz 是依照单位时间的平均值,所以不能够展示弹指间的 I/O 雨涝。

}

}

创办swap文件措施{

dd if=/dev/zero of=/swap bs=1024 count=4096000 # 创建一个丰裕大的文件
# count的值等于1024 x 你想要的文件大小, 4096000是4G
mkswap /swap # 把这些文件造成swap文件
swapon /swap # 启用那个swap文件
/swap swap swap defaults 0 0 # 在历次开机的时候自动加载swap文件, 须要在 /etc/fstab 文件中扩张生龙活虎行
cat /proc/swaps # 查看swap
swapoff -a # 关闭swap
swapon -a # 开启swap

}

新硬盘挂载{

fdisk /dev/sdc
p # 打字与印刷分区
d # 删除分区
n # 创设分区,(一块硬盘最多4个主分区,扩张占二个主分区地点。p主分区 e扩充卡塔 尔(阿拉伯语:قطر‎
w # 保存退出
mkfs -t ext3 -L 卷标 /dev/sdc1 # 格式化相应分区
mount /dev/sdc1 /mnt # 挂载
vi /etc/fstab # 增多开机挂载分区
LABEL=/data /data ext3 defaults 1 2 # 用卷标挂载
/dev/sdb1 /data4 ext3 defaults 1 2 # 用真实分区挂载
/dev/sdb2 /data4 ext3 noatime,defaults 1 2

第一个数字"1"该采纳被"dump"命令使用来检查八个文件系统应该以多快频率举办转储,若无需转储就设置该字段为0
第一个数字"2"该字段被fsck命令用来决定在运行时要求被围观的文件系统的逐意气风发,根文件系统"/"对应该字段的值应为1,别的文件系统应为2。若该文件系统无需在运营时扫描则设置该字段为0
当以 noatime 选项加载(mount卡塔 尔(阿拉伯语:قطر‎文件系统时,对文本的读取不会更新文件属性中的atime信息。设置noatime的入眼是割除了文件系统对文本的写操作,文件只是轻松地被系统读取。由于写操作绝对读来讲要更成本系统能源,所以那样设置能够鲜明坚实服务器的性子.wtime消息依然有效,任曾几何时候文件被写,该新闻仍被更新。

}

大磁盘2T和16T分区{

parted /dev/sdb # 针对磁盘分区
(parted) mklabel gpt # 设置为 gpt
(parted) print
(parted) mkpart primary 0KB 22.0TB # 钦命分区大小
Is this still acceptable to you?
Yes/No? Yes
Ignore/Cancel? Ignore
(parted) print
Model: LSI MR9271-8i (scsi)
Disk /dev/sdb: 22.0TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 22.0TB 22.0TB primary
(parted) quit

mkfs.ext4 -b 4096 /dev/sdb1 # 小于16T如使用ext4钦定块大小 块大小影响磁盘分区大小

# 大于16T的单个分区ext4格式化报错
Size of device /dev/sdb1 too big to be expressed in 32 bits using a blocksize of 4096.
# 改进ext4的公文增多生龙活虎行,化解ext4格式化大于16T报错
vim /etc/mke2fs.conf

[fs_types] ext4 = {
features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
auto_64-bit_support = 1 # 加多此行
inode_size = 256
}

yum -y install xfsprogs
mkfs.xfs -f /dev/sdb1 # 大于16T单个分区或利用XFS分区也可

}

raid原理与分歧{

raid0最少2块硬盘.吞吐量大,品质好,同时读写,但损坏一个就夭亡
raid1最少2块硬盘.卓越镜像,三个仓库储存,四个备份.安全性相比较高.可是性质比0弱
raid5最少3块硬盘.分别存款和储蓄校验音信和数码,坏了叁个基于校验消息能上升
raid6起码4块硬盘.五个独立的奇偶系统,可坏两块磁盘,写品质极度差

}

}

7 用户{

users # 呈现全体的报到顾客
groups # 列出脚下客户和她所属的组
who -q # 呈现全数的登入客商
groupadd # 添加组
useradd user # 建构客户
passwd 用户 # 订正密码
userdel -r # 删除帐号及家目录
chown -R user:group # 改正目录具有者(酷路泽递归)
chown y.li:mysql # 改正全数者客户中包括点"."
umask # 设置顾客文件和目录的文件创立缺省屏蔽值
chgrp # 校正客户组
finger # 查找客户突显音信
echo "xuesong" | passwd user --stdin # 非互相修正密码
useradd -g www -M -s /sbin/nologin www # 钦赐组并不容许登陆的顾客,nologin允许使用服务
useradd -g www -M -s /bin/false www # 内定组并差异意登陆的客商,false最为严峻
useradd -d /data/song -g song song # 制造客商并钦点家目录和组
usermod -l 新顾客名 老客户名 # 改良客户名
usermod -g user group # 修改客商所属组
usermod -d 目录 -m 用户 # 纠正客商家目录
usermod -G group user # 将客商增进到附加组
gpasswd -d user group # 从组中删去顾客
su - user -c " #命令1; " # 切换顾客推行

光复密码{

# 即走入单客商模式: 在linux现身grub后,在设置的系统方面按"e",然后现身grub的布局文件,开关盘移动光标到第二行"Ker……",再按"e",然后在这里风流倜傥行的末段加上:空格 single恐怕空格1回车,然后按"b"重启,就进来了"单顾客情势"
}

极度权限{

s或 S (SUID卡塔 尔(阿拉伯语:قطر‎:对应数值4
s或 S (SGID卡塔尔:对应数值2
t或 T :对应数值1
大S(英文名:Barbie Hsu卡塔 尔(阿拉伯语:قطر‎:代表享有root权限,不过从未推行权限
小s:具有特一时全部举办权限,这么些文件能够访问系统任何root客商能够访谈的能源
T或T(Sticky卡塔尔:/tmp和 /var/tmp目录供全体顾客权且存取文件,亦即每位顾客皆具备完整的权限步入该目录,去浏览、删除和活动文件

}

}

8 脚本{

#!/bin/sh # 在剧本第大器晚成行脚本头 # sh为当前系统暗中认可shell,可钦赐为bash等shell
sh -x # 实行进度
sh -n # 检查语法
(a=bbk) # 括号成立子shell运营
basename /a/b/c # 从全路线中保留最终一层文件名或目录
dirname # 取路径
$RANDOM # 随机数
$$ # 进程号
source FileName # 在当下bash情形下读取并施行FileName中的命令 # 等同 . FileName
sleep 5 # 间距睡眠5秒
trap # 在接到届期限信号后将在利用的行进
trap "" 2 3 # 禁止ctrl+c
$PWD # 当前目录
$HOME # 家目录
$OLDPWD # 在此以前一个索引的门道
cd - # 重返上二个目录路线
local ret # 局地变量
yes # 重复打字与印刷
yes |rm -i * # 自动回复y可能其它
ls -p /home # 区分目录和文书夹
ls -d /home/ # 查占星称完整路线
time a.sh # 测试程序施行时间
echo -n aa;echo bb # 不换行推行下一句话 将字符串原样输出
echo -e "stssnnn" # 使转义生效
echo $a | cut -c2-6 # 取字符串中字元
echo {a,b,c}{a,b,c}{a,b,c} # 排列组合(括号内二个因素分别和此外括号内成分组合)
echo $((2#11010)) # 二进制转10进制
echo aaa | tee file # 打字与印刷同一时间写入文件 暗许覆盖 -a追加
echo {1..10} # 打印10个字符
printf '%10sn'|tr " " a # 打印10个字符
pwd | awk -F/ '{ print $2 }' # 重回目录名
tac file |sed 1,3d|tac # 倒置读取文件 # 删除最终3行
tail -3 file # 取最后3行
outtmp=/tmp/$$`date +%s%N`.outtmp # 不经常文件定义
:(){ :|:& };: # 著名的 fork炸弹,系统施行海量的历程,直到系统僵死
echo -e "e[32m颜色e[0m" # 打字与印刷颜色
echo -e "33[32m颜色33[m" # 打印颜色
echo -e "33[0;31mL33[0;32mO33[0;33mV33[0;34mEt33[0;35mY33[0;36mO33[0;32mUe[m" # 打字与印刷颜色

正则表达式{

^ # 行首确定地点
$ # 行尾定位
. # 相称除换行符以外的随机字符
* # 匹配0或四个再度字符

  • # 重复二次或更频繁
    ? # 重复零次或二遍
    ? # 甘休贪婪因子 .*? 表示小小的匹配
    [] # 相配大器晚成组中放肆三个字符
    [^] # 相配不在钦命组内的字符
    # 用来转义元字符
    < # 词首定位符(扶持vi和grep) <love
    > # 词尾定位符(援助vi和grep) love>
    x{m} # 重复现身m次
    x{m,} # 重复现身最少m次
    x{m,n} # 重复现身起码m次不超越n次
    X? # 相配现身零次或一回的大写字母 X
    X+ # 相称叁个或多少个字母 X
    () # 括号内的字符为风度翩翩组
    (ab|de)+ # 相称一而再再三再四串的(起码叁个卡塔尔 abc 或 def;abc 和 def 将特别
    [[:alpha:]] # 代表享有字母无论大小写
    [[:lower:]] # 表示小写字母
    [[:upper:]] # 表示大写字母
    [[:digit:]] # 表示数字字符
    [[:digit:][:lower:]] # 表示数字字符加小写字母

元字符{

d # 相配大肆一人数字
D # 相配大肆单个非数字字符
w # 相配任意单个字母数字下划线字符,同义词是 [:alnum:]
W # 相配非数字型的字符

}

字符类:空白字符{

s # 相称大肆的空白符
S # 匹配非空白字符
b # 相配单词的开始或甘休
n # 相称换行符
r # 相称回车符
t # 相称制表符
b # 相称退格符
# 相配空值字符

}

字符类:锚定字符{

b # 相配字边界(不在[]中时)
B # 相配非字边界
A # 相配字符串先导
Z # 相配字符串或行的尾声
z # 只相称字符串末尾
G # 相称前三遍m//g离开之处

}

捕获{

(exp) # 相称exp,并抓获文本到活动命名的组里
(?<name>exp) # 相称exp,并抓获文本到名称叫name的组里,也能够写成(?'name'exp)
(?:exp) # 相配exp,不抓获相配的文件,也不给此分组分配组号

}

零宽断言{

(?=exp) # 相配exp前边的位置
(?<=exp) # 相称exp后边的任务
(?!exp) # 相配后边跟的不是exp之处
(?<!exp) # 匹配前面不是exp的职责
(?#comment) # 注释不对正则表达式的拍卖发生任何影响,用于注释

}

特殊字符{


^H 10 b
^M 15 r
相称特殊字符: ctrl+V ctrl不放在按H或M 就可以输出^H,用于相称

}

}

流程结构{

if判断{

if [ $a == $b ]
then
echo "等于"
else
echo "不等于"
fi

}

case分支采用{

case $xs in
0) echo "0" ;;
1) echo "1" ;;
*) echo "其他" ;;
esac

}

while循环{

# while true 等同 while :
# 读文件为整行读入
num=1
while [ $num -lt 10 ]
do
echo $num
((num=$num+2))
done
###########################
grep a a.txt | while read a
do
echo $a
done
###########################
while read a
do
echo $a
done < a.txt

}

for循环{

# 读文件已空格分隔
w=`awk -F ":" '{print $1}' c`
for d in $w
do
$d
done
###########################
for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done

}

until循环{

# 当command不为0时循环
until command
do
body
done

}

流程序调控制{

break N # 跳出几层循环
continue N # 跳出几层循环,循环次数不改变
continue # 重新循环次数不改变

}

}

变量{

A="a b c def" # 将字符串复制给变量
A=`cmd` # 将下令结果赋给变量
A=$(cmd) # 将下令结果赋给变量
eval a=$$a # 间接调用
i=2&&echo $((i+3)) # 计算后打字与印刷新变量结果
i=2&&echo $[i+3] # 计算后打字与印刷新变量结果
a=$((2>6?5:8)) # 决断八个值满意条件的赋值给变量
$1 $2 $* # 地方参数 *表示全体
env # 查看蒙受变量
env | grep "name" # 查看定义的情状变量
set # 查看情形变量和地方变量
read name # 输入变量
readonly name # 把name那么些变量设置为只读变量,分歧意再一次设置
readonly # 查看系统设有的只读文件
export name # 变量name由本地升为情状
export name="RedHat"   # 直接定义name为碰到变量
export Stat$nu=2222 # 变量引用变量赋值
unset name # 变量消亡
export -n name # 去掉只读变量
shift # 用于移动地方变量,调治职分变量,使$3的值赋给$2.$2的值付与$1
name + 0 # 将字符串转变为数字
number " " # 将数字转变到字符串
a='ee';b='a';echo ${!b} # 直接援引name变量的值
: ${a="cc"} # 假使a有值则不更换,借使a无值则赋值a变量为cc

数组{

A=(a b c def) # 将变量定义为数組
${#A[*]} # 数组个数
${A[*]} # 数组全部因素,大字符串
${A[@]} # 数组全体因素,肖似列表可迭代
${A[2]} # 脚本的一个参数或数组第多少人

}

概念变量类型{

declare 或 typeset
-r 只读(readonly一样)
-i 整形
-a 数组
-f 函数
-x export
declare -i n=0

}

系统变量{

$0 # 脚本运行名(包涵路线)
$n # 第n个参数,n=1,2,…9
$* # 全部参数列表(不包涵脚本自己)
[email protected] # 全数参数列表(独立字符串)
$# # 参数个数(不满含脚本作者)
$$ # 当前途式的PID
$! # 试行上五个指令的PID
$? # 实施上多个限令的再次回到值

}

变量援用技术{

${name:+value} # 若是设置了name,就把value彰显,未设置则为空
${name:-value} # 要是设置了name,就显得它,未安装就显得value
${name:?value} # 未安装提醒顾客错误音信value 
${name:=value} # 如未安装就把value设置并呈现<写入本地中>
${#A} # 可得到变量中字节
${A:4:9} # 取变量中第1位到背后9位
${A:(-1)} # 倒叙取最终叁个字符
${A/www/http} # 取变量并且替换每行第叁个注重字
${A//www/http} # 取变量而且全部替换每行关键字

概念了一个变量: file=/dir1/dir2/dir3/my.file.txt
${file#*/} # 去掉第一条 / 及其左侧的字串:dir1/dir2/dir3/my.file.txt
${file##*/} # 去掉最终一条 / 及其右侧的字串:my.file.txt
${file#*.} # 去掉第一个 . 及其左边的字串:file.txt
${file##*.} # 去掉最终二个 . 及其左边的字串:txt
${file%/*} # 去掉最终条 / 及其右侧的字串:/dir1/dir2/dir3
${file%%/*} # 去掉第一条 / 及其左边的字串:(空值)
${file%.*} # 去掉最终一个 . 及其左侧的字串:/dir1/dir2/dir3/my.file
${file%%.*} # 去掉第多少个 . 及其左边的字串:/dir1/dir2/dir3/my
# # 是去掉侧边(在键盘上 # 在 $ 之左边)
# % 是去掉右边(在键盘上 % 在 $ 之侧面)
# 单风度翩翩符号是一丝一毫相称﹔八个标记是最大匹配

}

}

test条件推断{

# 符号 [ ] 等同 test命令

expression为字符串操作{

-n str # 字符串str是不是不为空
-z str # 字符串str是不是为空

}

expression为文件操作{

-a # 并且,两典型为真
-b # 是不是块文件
-p # 文件是还是不是为二个命名管道
-c # 是或不是字符文件
-r # 文件是不是可读
-d # 是或不是七个索引
-s # 文件的长度是还是不是不为零
-e # 文件是不是留存
-S # 是或不是为套接字文件
-f # 是还是不是普通文书
-x # 文件是或不是可执行,则为真
-g # 是还是不是设置了文本的 SGID 位
-u # 是或不是设置了文本的 SUID 位
-G # 文件是或不是存在且归该组全体
-w # 文件是不是可写,则为真
-k # 文件是或不是设置了的粘贴位
-t fd # fd 是或不是是个和终极相连的展开的文本叙述符(fd 默以为 1卡塔尔
-o # 或,一个原则为真
-O # 文件是不是留存且归该顾客具有
! # 取反

}

expression为整数操作{

expr1 -a expr2 # 假若 expr1 和 expr2 评估为真,则为真
expr1 -o expr2 # 假如 expr1 或 expr2 评估为真,则为真

}

两值相比{

整数 字符串
-lt < # 小于
-gt > # 大于
-le <= # 小于或等于
-ge >= # 大于或等于
-eq == # 等于
-ne != # 不等于

}

test 10 -lt 5 # 推断大小
echo $? # 查看上句test命令再次回到状态 # 结果0为真,1为假
test -n "hello" # 推断字符串长度是不是为0
[ $? -eq 0 ] && echo "success" || exit   # 剖断成功唤醒,失利则脱离

}

重定向{

# 典型输出 stdout 和 规范错误 stderr 规范输入stdin
cmd 1> fiel # 把 标准输出 重定向到 file 文件中
cmd > file 2>&1 # 把 标准输出 和 规范错误 一齐重定向到 file 文件中
cmd 2> file # 把 典型错误 重定向到 file 文件中
cmd 2>> file # 把 规范错误 重定向到 file 文件中(追加)
cmd >> file 2>&1 # 把 标准输出 和 标准错误 一同重定向到 file 文件中(追加)
cmd < file >file2 # cmd 命令以 file 文件作为 stdin(规范输入),以 file2 文件作为 标准输出
cat <>file # 以读写的章程展开 file
cmd < file cmd # 命令以 file 文件作为 stdin
cmd << delimiter
cmd; #从 stdin 中读入,直至遭受 delimiter 分界符
delimiter

>&n # 使用系统调用 dup (2) 复制文件陈述符 n 并把结果用作规范输出
<&n # 规范输入复制自文件陈说符 n
<&- # 关闭标准输入(键盘卡塔 尔(英语:State of Qatar)
>&- # 关闭规范输出
n<&- # 表示将 n 号输加入关贸总协定组织闭
n>&- # 表示将 n 号输出关闭

}

运算符{

$[]等同于$(()) # $[]意味着格局报告shell求中括号中的表明式的值
~var # 按位取反运算符,把var中具备的二进制为1的变为0,为0的形成1
var<<str # 左移运算符,把var中的二进制位向左移动str位,忽视最左端移出的诸位,最右端的各位上补上0值,每做一次按位左移就有var乘2
var>>str  # 右移运算符,把var中具有的二进制位向右移动str位,忽略最右移出的各位,最左的诸位上补0,每便做贰遍右移就有贯彻var除以2
var&str # 与比较运算符,var和str对应位,对于每一种二进制来讲,借使二都为1,结果为1.不然为0
var^str # 异或运算符,相比较var和str对应位,对于二进制来讲假若两者互补,结果为1,不然为0
var|str # 或运算符,相比较var和str的对应位,对于每一个二进制来讲,如二都该位有三个1或都以1,结果为1,不然为0

运算符优先级{
级别 运算符 说明
1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>= # 赋值运算符
2 || # 逻辑或 前边不成事实践
3 && # 逻辑与 前边成功后实行
4 | # 按位或
5 ^ # 按位异或
6 & # 按位与
7 ==,!= # 等于/不等于
8 <=,>=,<,> # 小于或等于/大于或等于/小于/大于
9 <<,>> # 按位左移/按位右移 (无转意符号)
10 +,- # 加减
11 *,/,% # 乘,除,取余
12 ! ,~ # 逻辑非,按位取反或补码
13 -,+ # 正负
}

}

数学生运动算{

$(( )) # 整数运算

    • * / ** # 分別为 "加、減、乘、除、密运算"
      & | ^ ! # 分別为 "AND、OR、XOR、NOT" 运算
      % # 余数运算

let{

let # 运算
let x=16/4
let x=5**5

}

expr{

expr 14 % 9 # 整数运算
SUM=`expr 2 * 3` # 乘后结果赋值给变量
LOOP=`expr $LOOP + 1` # 增量计数(加循环就能够) LOOP=0
expr length "bkeep zbb" # 总结字串长度
expr substr "bkeep zbb" 4 9 # 抓取字串
expr index "bkeep zbb" e # 抓取第四个字符数字串现身的岗位
expr 30 / 3 / 2 # 运算符号有空格
expr bkeep.doc : '.*' # 情势相配(能够使用expr通过点名冒号选项计算字符串中字符数)
expr bkeep.doc : '(.*).doc' # 在expr中能够动用字符串相配操作,这里运用形式抽出.doc文件从属名

数值测量试验{

#倘使思索计算非整数,则会回到错误
rr=3.4
expr $rr + 1
expr: non-numeric argument
rr=5
expr $rr + 1
6

}

}

bc{

echo "m^n"|bc # 次方总括
seq -s '+' 1000 |bc # 从1加到1000
seq 1 1000 |tr "n" "+"|sed 's/+$/n/'|bc # 从1加到1000
}

}

grep{

-c # 展现相称到得行的数码,不出示内容
-h # 不显示文件名
-i # 忽视大小写
-l # 只列出相称行所在文件的文本名
-n # 在每黄金年代行中丰硕相对行号
-s # 无声操作只展示报错,检查退出状态
-v # 反向搜索
-e # 使用正则表明式
-w # 精确相配
-wc # 正确相称次数
-o # 查询全部相称字段
-P # 使用perl正则表达式
-A3 # 打字与印刷相配行和下三行
-B3 # 打字与印刷相配行和上三行
-C3 # 打印相称行和内外三行

grep -v "a" txt # 过滤关键字符行
grep -w 'a>' txt # 无误相称字符串
grep -i "a" txt # 大小写敏感
grep "a[bB]" txt # 同一时间宽容大小写
grep '[0-9]{3}' txt # 查找0-9重复二回的所在行
grep -E "word1|word2|word3" file # 大肆条件万分
grep word1 file | grep word2 |grep word3 # 同期匹配四个
echo [email protected] |grep -Po '(?<[email protected]).*(?=.$)' # 零宽断言截取字符串 # 63.co
echo "I'm singing while you're dancing" |grep -Po 'bw+(?=ingb)' # 零宽断言相配
echo 'Rx Optical Power: -5.01dBm, Tx Optical Power: -2.41dBm' |grep -Po '(?<=:).*?(?=d)' # 收取d前边数字 # ?为最小相称
echo 'Rx Optical Power: -5.01dBm, Tx Optical Power: -2.41dBm' | grep -Po '[-0-9.]+' # 抽取d前边数字 # ?为最小相配
echo '["mem",ok],["hardware",false],["filesystem",false]' |grep -Po '[^"]+(?=",false)' # 收取false后边的字母
echo '["mem",ok],["hardware",false],["filesystem",false]' |grep -Po 'w+",false'|grep -Po '^w+' # 抽出false前边的字母

grep用于if判断{

if echo abc | grep "a" > /dev/null 2>&1
then
echo "abc"
else
echo "null"
fi

}

}

tr{

-c # 用字符串第11中学字符集的补集替换此字符集,要求字符集为ASCII
-d # 删除字符串1中有着输入字符
-s # 删除全体重复现身字符系列,只保留第三个:将在再度现身字符串压缩为二个字符串
[a-z] # a-z内的字符组成的字符串
[A-Z] # A-Z内的字符组成的字符串
[0-9] # 数字串
octal # 三个三个人的八进制数,对应有效的ASCII字符
[O*n] # 表示字符O重复现身钦赐次数n。因而[O*2]匹配OO的字符串

tr中一定调整字符表达方式{

a Ctrl-G 07 # 铃声
b Ctrl-H 10 # 退格符
f Ctrl-L 14 # 走行换页
n Ctrl-J 12 # 新行
r Ctrl-M 15 # 回车
t Ctrl-I 11 # tab键
v Ctrl-X 30

}

tr A-Z a-z # 将富有大写调换来小写字母
tr " " "n" # 将空格替换为换行
tr -s "[12]" < plan.txt # 删除空行
tr -s ["n"] < plan.txt # 删除空行
tr -s "[15]" "[n]" < file # 删除文件中的^M,并代之以换行
tr -s "[r]" "[n]" < file # 删除文件中的^M,并代之以换行
tr -s "[:]" "[11]" < /etc/passwd # 替换passwd文件中享有冒号,代之以tab键
tr -s "[:]" "[t]" < /etc/passwd # 替换passwd文件中具有冒号,代之以tab键
echo $PATH | tr ":" "n" # 扩充呈现路线可读性
1,$!tr -d 't' # tr在vi内使用,在tr前加管理行范围和感叹号('$'代表最终黄金时代行)
tr "r" "n"<macfile > unixfile # Mac -> UNIX
tr "n" "r"<unixfile > macfile # UNIX -> Mac
tr -d "r"<dosfile > unixfile # DOS -> UNIX Microsoft DOS/Windows 约定,文本的每行以回车字符(r)并后跟换行符(n)结束
awk '{ print $0"r" }'<unixfile > dosfile # UNIX -> DOS:在这里种场合下,须求用awk,因为tr不能够插入多少个字符来替换两个字符

}

seq{

# 不钦点起头数值,则默以为 1
-s # 选项首要改动输出的分格符, 预设是 n
-w # 等位补全,正是开间相等,不足的近日补 0
-f # 格式化输出,正是点名打字与印刷的格式

seq 10 100 # 列出10-100
seq 1 10 |tac # 倒叙列出
seq -s '+' 90 100 |bc # 从90加到100
seq -f 'dir%g' 1 10 | xargs mkdir # 创建dir1-10
seq -f 'dir%03g' 1 10 | xargs mkdir # 创建dir001-010

}

trap{

信号 说明
HUP(1) # 挂起,经常因极端掉线或客商退出而引发
INT(2) # 中断,日常因按下Ctrl+C组合键而吸引
QUIT(3) # 退出,平常因按下Ctrl+组合键而吸引
ABRT(6) # 中止,平常因某些严重的举办错误而吸引
ALRM(14) # 报告急方,日常用来拍卖超时
TERM(15) # 终止,通常在系统关机时发送

trap捕捉到功率信号之后,能够有三种反应措施:
1、奉行业作风流倜傥段程序来处理那风流罗曼蒂克能量信号
2、接纳频域信号的暗许操作
3、忽视那风流罗曼蒂克时限信号

率先种格局的trap命令在shell选拔到 signal list 项目清单中数值相近的实信号时,将实行双引号中的命令串:
trap 'commands' signal-list # 单引号,要在shell探测届期限信号来的时候才实施命令和变量的交替,时间一向变
trap "commands" signal-list # 双引号,shell第1回设置时域信号的时候就施行命令和变量的轮流,时间不改变

}

awk{

# 暗中同意是进行打字与印刷全部 print $0
# 1为真 打印$0
# 0为假 不打印

-F # 改变FS值(分隔符)
~ # 域匹配
== # 变量相称
!~ # 相称不含有
= # 赋值
!= # 不等于
+= # 叠加

b # 退格
f # 换页
n # 换行
r # 回车
t # 制表符Tab
c # 代表任生龙活虎其余字符

-F"[ ]+|[%]+" # 三个空格或几个%为分隔符
[a-z]+ # 多少个小写字母
[a-Z] # 代表全体大大小小写字母(aAbB...zZ)
[a-z] # 代表享有大大小小写字母(ab...z)
[:alnum:] # 字母数字字符
[:alpha:] # 字母字符
[:cntrl:] # 调节字符
[:digit:] # 数字字符
[:graph:] # 非空白字符(非空格、调整字符等)
[:lower:] # 小写字母
[:print:] # 与[:graph:]貌似,然则满含空格字符
[:punct:] # 标点字符
[:space:] # 全数的空白字符(换行符、空格、制表符)
[:upper:] # 大写字母
[:xdigit:] # 十一进制的数字(0-9a-fA-F)
[[:digit:][:lower:]] # 数字和小写字母(占二个字符)

内建变量{
$n # 当前记录的第 n 个字段,字段间由 FS 分隔
$0 # 完整的输入记录
ARGC # 命令行参数的数码
ARGIND # 命令行中当前文件的任务 ( 从 0 初步算 )
ARGV # 富含命令行参数的数组
CONVFMT # 数字转变格式 ( 暗中认可值为 %.6g)
ENVIRON # 境遇变量关联数组
ERRNO # 最终一个系统错误的叙说
FIELDWIDTHS # 字段宽度列表 ( 用空格键分隔 )
FILENAME # 当前文件名
FNR # 同 NOdyssey ,但针锋相投于当下文件
FS # 字段分隔符 ( 暗中同意是此外空格 )
IGNORECASE # 如果为真(即非 0 值卡塔尔国,则打开忽视大小写的相配
NF # 当前记录中的字段数(列)
NR # 当前进数
OFMT # 数字的输出格式 ( 暗中同意值是 %.6g)
OFS # 输出字段分隔符 ( 暗中同意值是三个空格 )
ORS # 输出记录分隔符 ( 暗中认可值是五个换行符 )
RLENGTH # 由 match 函数所相配的字符串的长度
RS # 记录分隔符 ( 暗中同意是贰个换行符 )
RSTART # 由 match 函数所相称的字符串的第贰个岗位
SUBSEP # 数组下标分隔符 ( 暗中认可值是 /034)
BEGIN # 先管理(可不Gavin件参数)
END # 甘休时管理
}

停放函数{
gsub(r,s) # 在整个$0中用s替代r 相当于 sed 's///g'
gsub(r,s,t) # 在整个t中用s替代r
index(s,t) # 重返s中字符串t的率先地方
length(s) # 返回s长度
match(s,r) # 测量试验s是还是不是包罗相配r的字符串
split(s,a,fs) # 在fs大校s分成类别a
sprint(fmt,exp) # 重返经fmt格式化后的exp
sub(r,s) # 用$0中最侧边最长的子串代替s 也就是 sed 's///'
substr(s,p) # 再次回到字符串s中从p开端的后缀部分
substr(s,p,n) # 重临字符串s中从p最早长度为n的后缀部分
}

awk判断{
awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' # 条件剖断括号表示if语句推断 "?"代表then ":"代表else
awk '{max=($1>$2)? $1 : $2; print max}' # 条件判断假诺$1大于$2,max值为为$1,否则为$2
awk '{if ( $6 > 50) print $1 " Too high" ;
else print "Range is OK"}' file
awk '{if ( $6 > 50) { count++;print $3 }
else { x+5; print $2 } }' file
}

awk循环{
awk '{i = 1; while ( i <= NF ) { print NF, $i ; i++ } }' file
awk '{ for ( i = 1; i <= NF; i++ ) print NF,$i }' file
}

awk '/Tom/' file # 打字与印刷匹配到得行
awk '/^Tom/{print $1}' # 相配汤姆带头的行 打字与印刷第一个字段
awk '$1 !~ /ly$/' # 展现全体第3个字段不是以ly结尾的行
awk '$3 <40' # 要是第五个字段值小于40才打字与印刷
awk '$4==90{print $5}' # 收取第四列等于90的第五列
awk '/^(no|so)/' test # 打字与印刷全体以情势no或so最早的行
awk '$3 * $4 > 500' # 算术运算(第八个字段和第多少个字段乘积大于500则显得)
awk '{print NR" "$0}' # 加行号
awk '/tom/,/suz/' # 打字与印刷tom到suz之间的行
awk '{a+=$1}END{print a}' # 列求和
awk 'sum+=$1{print sum}' # 将$1的值叠合后赋给sum
awk '{a+=$1}END{print a/NR}' # 列求平均值
awk '!s[$1 $3]++' file # 依据第一列和第三列过滤重复行
awk -F'[ :t]' '{print $1,$2}' # 以空格、:、制表符Tab为分隔符
awk '{print "'"$a"'","'"$b"'"}' # 引用外界变量
awk '{if(NR==52){print;exit}}' # 显示第52行
awk '/关键字/{a=NR+2}a==NR {print}' # 取关键字下第几行
awk 'gsub(/liu/,"aaaa",$1){print $0}' # 只打字与印刷相称替换后的行
ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}' # 提取时间,空格不牢固
awk '{$1="";$2="";$3="";print}' # 去掉前三列
echo aada:aba|awk '/d/||/b/{print}' # 相称两内容之风流洒脱
echo aada:abaa|awk -F: '$1~/d/||$2~/b/{print}' # 关键列相称两内容之风流倜傥
echo Ma asdas|awk '$1~/^[a-Z][a-Z]$/{print }' # 第二个域匹配正则
echo aada:aaba|awk '/d/&&/b/{print}' # 同时宽容两标准
awk 'length($1)=="4"{print $1}' # 字符串位数
awk '{if($2>3){system ("touch "$1)}}' # 施行系统命令
awk '{sub(/Mac/,"Macintosh",$0);print}' # 用Macintosh替换Mac
awk '{gsub(/Mac/,"MacIntosh",$1); print}' # 第二个域内用Macintosh替换Mac
awk -F '' '{ for(i=1;i<NF+1;i++)a+=$i ;print a}' # 多位数算出其每位数的总和.譬喻 1234, 获得 10
awk '{ i=$1%10;if ( i == 0 ) {print i}}' # 剖断$1是还是不是整除(awk中定义变量援引时不能带 $ )
awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}' # 列求最大值 设定贰个变量开头为0,碰着比该数大的值,就赋值给该变量,直到截止
awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}' # 求最小值
awk '{if(A)print;A=0}/regexp/{A=1}' # 查找字符串并将相称行的下少年老成行突显出来,但并不出示匹配行
awk '/regexp/{print A}{A=$0}' # 查找字符串并将相称行的上风流罗曼蒂克行展现出来,但并不展现相称行
awk '{if(!/mysql/)gsub(/1/,"a");print $0}' # 将1替换来a,况且只在行中未现身字串mysql的动静下替换
awk 'BEGIN{srand();fr=int(100*rand());print fr;}' # 获取随机数
awk '{if(NR==3)F=1}{if(F){i++;if(i%7==1)print}}' # 从第3行开头,每7行展现一次
awk '{if(NF<1){print i;i=0} else {i++;print $0}}' # 呈现空行分割各段的行数
echo +null:null |awk -F: '$1!~"^+"&&$2!="null"{print $0}' # 关键列同一时候合作
awk -v [email protected] 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' # 钦定记录分隔符
awk '{b[$1]=b[$1]$2}END{for(i in b){print i,b[i]}}' # 列叠加
awk '{ i=($1%100);if ( $i >= 0 ) {print $0,$i}}' # 求余数
awk '{b=a;a=$1; if(NR>1){print a-b}}' # 当前进减上大器晚成行
awk '{a[NR]=$1}END{for (i=1;i<=NR;i++){print a[i]-a[i-1]}}' # 当前进减上黄金年代行
awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' # END只打字与印刷最终的结果,END块里面管理数组内容
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' # $2的总额 $2总和除个数(平均值)
awk -v a=0 -F 'B' '{for (i=1;i<NF;i++){ a=a+length($i)+1;print a }}' # 打字与印刷所以B的所在地点
awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' file # 将date值赋给d,并将d设置为数组mon,打字与印刷mon数组中第4个要素
awk 'BEGIN{info="this is a test2010test!";print substr(info,4,10);}' # 截取字符串(substr使用)
awk 'BEGIN{info="this is a test2010test!";print index(info,"test")?"ok":"no found";}' # 相配字符串(index使用)
awk 'BEGIN{info="this is a test2010test!";print match(info,/[0-9]+/)?"ok":"no found";}' # 正则表明式相配查找(match使用)
awk '{for(i=1;i<=4;i++)printf $i""FS; for(y=10;y<=13;y++) printf $y""FS;print ""}' # 打印前4列和后4列
awk 'BEGIN{for(n=0;n++<9;){for(i=0;i++<n;)printf i"x"n"="i*n" ";print ""}}' # 乘法口诀
awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}' # 字符串分割(split使用)
awk '{if (system ("grep "$2" tmp/* > /dev/null 2>&1") == 0 ) {print $1,"Y"} else {print $1,"N"} }' a # 实施系统命令决断重回状态
awk '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' # 将多行转多列
netstat -an|awk -v A=$IP -v B=$PORT 'BEGIN{print "ClientstGuest_ip"}$4~A":"B{split($5,ip,":");a[ip[1]]++}END{for(i in a)print a[i]"t"i|"sort -nr"}' # 总结IP连接个数
cat 1.txt|awk -F" # " '{print "insert into user (user,password,email)values(""'''"$1"'','""'''"$2"'','""'''"$3"'');'"}' >>insert_1.txt # 处理sql语句
awk 'BEGIN{printf "what is your name?";getline name < "/dev/tty" } $1 ~name {print "FOUND" name " on line ", NR "."} END{print "see you," name "."}' file # 两文本相称

取本机IP{
/sbin/ifconfig |awk -v RS="Bcast:" '{print $NF}'|awk -F: '/addr/{print $2}'
/sbin/ifconfig |awk '/inet/&&$2!~"127.0.0.1"{split($2,a,":");print a[2]}'
/sbin/ifconfig |awk -v RS='inet addr:' '$1!="eth0"&&$1!="127.0.0.1"{print $1}'|awk '{printf"%s|",$0}'
/sbin/ifconfig |awk '{printf("line %d,%sn",NR,$0)}' # 钦定项目(%d数字,%s字符)
}

查阅磁盘空间{
df -h|awk -F"[ ]+|%" '$5>14{print $5}'
df -h|awk 'NR!=1{if ( NF == 6 ) {print $5} else if ( NF == 5) {print $4} }'
df -h|awk 'NR!=1 && /%/{sub(/%/,"");print $(NF-1)}'
df -h|sed '1d;/ /!N;s/n//;s/ +/ /;' #将磁盘分区收拾成后生可畏行 可一贯用 df -P
}

排列打字与印刷{
awk 'END{printf "%-10s%-10sn%-10s%-10sn%-10s%-10sn","server","name","123","12345","234","1234"}' txt
awk 'BEGIN{printf "|%-10s|%-10s|n|%-10s|%-10s|n|%-10s|%-10s|n","server","name","123","12345","234","1234"}'
awk 'BEGIN{
print " *** 开 始 *** ";
print "+-----------------+";
printf "|%-5s|%-5s|%-5s|n","id","name","ip";
}
$1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|n",$1,$2,$3" "$11}
END{
print "+-----------------+";
print " *** 结 束 *** "
}' txt
}

老男孩awk经典题{
分析图片服务日志,把日记(每种图片访谈次数*图片大小的总额卡塔 尔(英语:State of Qatar)排名,也正是估测计算每一种url的总访问大小
注脚:本题分娩处境应用:这一个意义能够用来IDC网址流量带宽极高,然后经过深入分析服务器日志哪些因素占用流量过大,进而开展优化或裁剪该图片,压缩js等方法。
大旨需求输出多个目标: 【被访谈次数】 【访谈次数*单个被访谈文件大小】 【文件名(带UKugaL卡塔 尔(英语:State of Qatar)】
测验数据
59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299

awk '{array_num[$7]++;array_size[$7]+=$10}END{for(i in array_num) {print array_num[i]" "array_size[i]" "i}}'
}

awk练习题{

wang 4
cui 3
zhao 4
liu 3
liu 3
chang 5
li 2

1 通过第四个域找寻字符长度为4的
2 当第二列值大于3时,创造空白文件,文件名称叫近日进第三个域$1 (touch $1)
3 将文书档案中 liu 字符串替换为 hong
4 求其次列的和
5 求其次列的平均值
6 求其次列中的最大值
7 将第一列过滤重复后,列出每生机勃勃项,每大器晚成项的面世次数,每大器晚成项的大大小小总和

1、字符串长度
awk 'length($1)=="4"{print $1}'
2、履行系统命令
awk '{if($2>3){system ("touch "$1)}}'
3、gsub(/r/,"s",域) 在内定域(暗中认可$0)中用s替代r (sed 's///g')
awk '{gsub(/liu/,"hong",$1);print $0}' a.txt
4、列求和
awk '{a+=$2}END{print a}'
5、列求平均值
awk '{a+=$2}END{print a/NR}'
awk '{a+=$2;b++}END{print a,a/b}'
6、列求最大值
awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
7、将首先列过滤重复列出每生龙活虎项,每生机勃勃项的产出次数,每意气风发项的大大小小总和
awk '{a[$1]++;b[$1]+=$2}END{for(i in a){print i,a[i],b[i]}}'
}

awk管理复杂日志{
6.19:
DHB_014_号百总机服务业务早报:广州 达到数非凡!
DHB_023_号百漏话提示早报:许昌 到达数分外!
6.20:
DHB_014_号百总机服务业务晚报:斯德哥尔摩 达到数万分!到

awk -F '[_ :]+' 'NF>2{print $4,$1"_"$2,b |"sort";next}{b=$1}'

# 当前行NF小于等于2 只针对{print $4,$1"_"$2,b |"sort";next} 有效 即 6.19:行跳过此操作, {b=$1} 如故试行
# 当前进NF大于2 举办到 next 强制跳过本行,即跳过前边的 {b=$1}

广州 DHB_014 6.19
}
}

sed{

# 先读取资料、存入方式空间、对其张开编写制定、再出口、再用下生龙活虎行替换形式空间内容
# 调试工具sedsed (参数 -d)

-n # 输出由编辑指令调整(撤除默许的输出,必需与编写制定指令一齐合作)
-i # 直接对文件操作
-e # 多种编排
-r # 正则可不改动特殊字符

b # 跳过相配的行
p # 打印
d # 删除
s # 替换
g # 同盟s全部更换
i # 行前插入
a # 行后插入
r # 读
y # 转换
q # 退出

& # 代表查找的串内容
* # 任性五个 前驱字符(前导符)
? # 0或1个 最小相称 没加-r参数需转义 ?
$ # 最毕生龙活虎行
.* # 匹配自便七个字符
(a) # 保存a作为标签1(1)

方式空间{

# 情势空间(两行两行管理) 情势相称的界定,平时来讲,形式空间是输入文本中某风流倜傥行,不过能够通过使用N函数把多于风度翩翩行读入格局空间
# 暂存空间里默认存款和储蓄一个空行
n # 读入下黄金时代行(覆盖上后生可畏行)
h # 把形式空间里的行拷贝到暂存空间
H # 把情势空间里的行追加到暂存空间
g # 用暂存空间的从头到尾的经过替换形式空间的行
G # 把暂存空间的剧情充实到形式空间的行后
x # 将暂存空间的剧情于格局空间里的一时行交换
! # 对其前边的要合营的限定取反
D # 删除当前情势空间中央行政单位到并蕴涵第多少个换行符的兼具字符(/.*/相配形式空间中具有剧情,相配到就实践D,没相配到就结束D)
N # 追加下三个输入行到情势空间后边并在第二者间嵌入三个换行符,改造近期行号码,情势相称能够延长跨域这些内嵌换行
p # 打印格局空间中的直到并富含第一个换行的保有字符

}

标签函数{

: lable # 建设构造命令标识,合营b,t函数使用跳转
b lable # 分支到脚本中包蕴标识的地点,如若分段不设有则分支到剧本的末梢。
t labe # 判定分支,从最后生龙活虎行发轫,条件后生可畏旦满意可能T,t命令,将变成分支到含有标号的授命出,只怕到脚本末尾。与b函数分歧在于t在实施跳转前会先检查其前一个轮流命令是或不是成功,如成功,则施行跳转。

sed -e '{:p1;/A/s/A/AA/;/B/s/B/BB/;/[AB]{10}/b;b p1;}' # 文件内容第生机勃勃行A第二行B:建设构造标签p1;八个替换函数(A替换到AA,B替换来BB)当A照旧B到达10个现在调用b,重返
echo 'sd f f [a b c cddd eee]' | sed ':n;s#([[^ ]*) *#1#;tn' # 标签函数t使用方式,替换[]里的空格
echo "198723124.03"|sed -r ':a;s/([0-9]+)([0-9]{3})/1,2/;ta' # 每多少个字符加二个逗号

}

援引外部变量{

sed -n ''$a',10p'
sed -n ""$a",10p"

}

sed 10q # 彰显文件中的前10行 (模拟"head")
sed -n '$=' # 总计行数(模拟 "wc -l")
sed -n '5,/^no/p' # 打字与印刷从第5行到以no起初行之间的持有行
sed -i "/^$f/d" a     # 删除相称行
sed -i '/aaa/,$d' # 删除相称行到最终
sed -i "s/=/:/" c # 直接对文件替换
sed -i "/^pearls/s/$/j/" # 找到pearls开首在行尾加j
sed '/1/,/3/p' file # 打字与印刷1和3里头的行
sed -n '1p' 文件 # 抽出钦赐行
sed '5iaaa' file # 在第5行以前插入行
sed '5aaaa' file # 在第5行以往抽入行
echo a|sed -e '/a/ib' # 在相称行前插入黄金年代行
echo a|sed -e '/a/ab' # 在相配行后插入风流倜傥行
echo a|sed 's/a/&nb/g' # 在相配行后插入生机勃勃行
seq 10| sed -e{1,3}'s/./a/' # 匹配1和3行替换
sed -n '/regexp/!p' # 只突显不相称正则表明式的行
sed '/regexp/d' # 只展现不相配正则表明式的行
sed '$!N;s/n//' # 将每两行连接成豆蔻梢头行
sed '/baz/s/foo/bar/g' # 只在行中出现字串"baz"的情景下将"foo"替换来"bar"
sed '/baz/!s/foo/bar/g' # 将"foo"替换到"bar",并且只在行中未出现字串"baz"的图景下替换
echo a|sed -e 's/a/#&/g' # 在a前面加#号
sed 's/foo/bar/4' # 只替换每意气风发行中的第五个字串
sed 's/(.*)foo/1bar/' # 替换每行最终三个字符串
sed 's/(.*)foo(.*foo)/1bar2/' # 替换尾数第二个字符串
sed 's/[0-9][0-9]$/&5' # 在以[0-9][0-9]最后的行后加5
sed -n ' /^eth|em[01][^:]/{n;p;}' # 匹配四个至关心珍视要字
sed -n -r ' /eth|em[01][^:]/{n;p;}' # 相配多少个主要字
echo -e "1n2"|xargs -i -t sed 's/^/1/' {} # 同临时间管理七个文本
sed '/west/,/east/s/$/*VACA*/' # 修改west和east之间的具有行,在结尾处加*VACA*
sed 's/[^1-9]*([0-9]+).*/1/' # 抽出第少年老成组数字,何况忽视掉领头的0
sed -n '/regexp/{g;1!p;};h' # 查找字符串并将相称行的上风姿洒脱行突显出来,但并不显得匹配行
sed -n ' /regexp/{n;p;}' # 查找字符串并将匹配行的下豆蔻梢头行呈现出来,但并不展现相称行
sed -n 's/(mar)got/1ianne/p' # 保存(mar)作为标签1
sed -n 's/([0-9]+).*(t)/21/p' # 保存几个标签
sed -i -e '1,3d' -e 's/1/2/' # 多种编排(先删除1-3行,在将1轮换成2)
sed -e 's/@.*//g' -e '/^$/d' # 删除掉@后边全数字符,和空行
sed -n -e "{s/文本(正则)/替换的内容/p}" # 替换并打字与印刷出替换行
sed -n -e "{s/^ *[0-9]*//p}" # 打印并删除正则表明式的那部分内容
echo abcd|sed 'y/bd/BE/' # 相配字符替换
sed '/^#/b;y/y/P/' 2 # 非#号伊始的行替换字符
sed '/suan/r 读入文件' # 找到含suan的行,在后头加上读入的文书内容
sed -n '/no/w 写入文件' # 找到含no的行,写入到钦点文件中
sed '/regex/G' # 在相称式样行之后插入大器晚成空行
sed '/regex/{x;p;x;G;}' # 在相称式样行早前和后来各插入风流倜傥空行
sed 'n;d' # 删除全体偶数行
sed 'G;G' # 在每大器晚成行前边扩展两空行
sed '/^$/d;G' # 在出口的公文中每生龙活虎行前边将有且唯有风流洒脱空行
sed 'n;n;n;n;G;' # 在每5行后扩大大器晚成空白行
sed -n '5~5p' # 只打字与印刷行号为5的翻番
seq 1 30|sed '5~5s/.*/a/' # 倍数行实施替换
sed -n '3,${p;n;n;n;n;n;n;}' # 从第3行初步,每7行呈现一遍
sed -n 'h;n;G;p' # 奇偶交换
seq 1 10|sed '1!G;h;$!d' # 倒叙排列
ls -l|sed -n '/^.rwx.*/p' # 查找属主权限为7的文件
sed = filename | sed 'N;s/n/t/' # 为文件中的每少年老成行进行编号(轻易的左对齐格局)
sed 's/^[ t]*//' # 将每后生可畏行前导的"空白字符"(空格,制表符)删除,使之左对齐
sed 's/^[ t]*//;s/[ t]*$//' # 将每意气风发行中的前导和拖尾的空白字符删除
sed '/{abc,def}/[111,222]/s/^/00000/' # 相称供给转行的字符: } / [
echo abcd\nabcde |sed 's/\n/@/g' |tr '@' 'n' # 将换行符转变为换行
cat tmp|awk '{print $1}'|sort -n|sed -n '$p' # 取一列最大值
sed -n '{s/^[^/]*//;s/:.*//;p}' /etc/passwd # 取客商家目录(匹配不为/的字符和协作:到最后的字符全体去除)
sed = filename | sed 'N;s/^/ /; s/ *(.{6,})n/1 /' # 对文件中的全部行编号(行号在左,文字右端对齐)
/sbin/ifconfig |sed 's/.*inet addr:(.*) Bca.*/1/g' |sed -n '/eth/{n;p}' # 取所有IP

改善keepalive配置剔除后端服务器{

sed -i '/real_server.*10.0.1.158.*8888/,+8 s/^/#/' keepalived.conf
sed -i '/real_server.*10.0.1.158.*8888/,+8 s/^#//' keepalived.conf

}

模仿rev功能{

echo 123 |sed '/n/!G;s/(.)(.*n)/&21/;//D;s/.//;'
/n/!G;       # 没有n换行符,要试行G,因为保留空间中为空,所以在情势空间追加风流倜傥空行
s/(.)(.*n)/&21/; # 标签替换 &n23n1$ (关键在于& ,可以让前边//相配到空行)
//D;       # D 命令会引起循环删除格局空间中的第后生可畏有些,倘诺除去后,方式空间中还应该有剩余行,则赶回 D 在此以前的指令,重新实施,假设 D 后,格局空间中并未有任何内容,则将退出。 //D 匹配空行实践D,如若上句s未有相配到,//也无能为力合营到空行, "//D;"命令结束
s/.//;       # D结束后,删除开始的 n

}

}

xargs{

# 命令替换
-t 先打字与印刷命令,然后再奉行
-i 用每项替换 {}
find / -perm +7000 | xargs ls -l # 将前边的原委,作为前面命令的参数
seq 1 10 |xargs -i date -d "{} days " +%Y-%m-%d # 列出10天日期

}

dialog菜单{

# 暗许将全体出口用 stderr 输出,不显示到显示屏 使用参数 --stdout 可将选拔赋给变量
# 退出状态 0精确 1不当

窗体类型{
--calendar # 日历
--checklist # 允许你来得二个增选列表,各种选项都能够被单独的选择(复选框)
--form # 表单,允许你建设构造三个带标签的文本字段,并必要填写
--fselect # 提供四个路线,让你筛选浏览的文本
--gauge # 突显多少个表,展现出达成的百分比,正是展现出进程条。
--infobox # 显示音讯后,(未有等待响应卡塔 尔(阿拉伯语:قطر‎对话框立刻回去,但不拔除荧屏(新闻框)
--inputbox # 让客户输入文本(输入框)
--inputmenu # 提供三个可供客商编辑的美食做法(可编写制定的菜谱框卡塔尔国
--menu # 彰显二个列表供客商选用(菜单框)
--msgbox(message) # 展现一条音信,并须要客商采纳七个鲜明开关(消息框)
--password # 密码框,展现三个输入框,它隐讳文本
--pause # 展现四个报表用来呈现三个钦赐的暂停期的情事
--radiolist # 提供三个菜谱体系组,但是唯有叁个项目,能够筛选(单选框)
--tailbox # 在一个滚动窗口文件中使用tail命令来展现文本
--tailboxbg # 跟tailbox相同,可是在background情势下操作
--textbox # 在包涵滚动条的文本框中展现文件的内容 (文本框)
--timebox # 提供三个窗口,选用小时,分钟,秒
--yesno(yes/no) # 提供八个带有yes和no按键的简要音信框
}

窗体参数{
--separate-output # 对于chicklist组件,输出结果二遍输出后生可畏行,拿到结果不加引号
--ok-label "提交" # 明确开关名称
--cancel-label "取消" # 废除按键名称
--title "标题" # 题目名称
--stdout # 将具备出口用 stdout 输出
--backtitle "上标" # 窗体上标
--no-shadow # 去掉窗体阴影
--menu "菜单名" 20 60 14 # 菜单及窗口大小
--clear # 完成后清屏操作
--no-cancel # 不出示撤废项
--insecure # 使用星号来表示各样字符
--begin <y> <x> # 钦赐对话框左上角在显示器的上的做坐标
--timeout <秒> # 超时,重回的错误代码255,假若客户在钦命的小运内并未有交给相应动作,就按超时管理
--defaultno # 使选用默认为no
--default-item <str> # 设置在黄金时代份清单,表格或菜单中的暗中认可项目。平日在框中的第生机勃勃项是私下认可
--sleep 5 # 在管理完叁个对话框后静止(延迟)的年月(秒)
--max-input size # 限定输入的字符串在给定的轻重之内。若无一点点名,暗许是2048
--keep-window # 退出时不清屏和重绘窗口。当多少个构件在同一个程序中运维时,对于保留窗口内容很有用的
}

dialog --title "Check me" --checklist "Pick Numbers" 15 25 3 1 "one" "off" 2 "two" "on" # 多选分界面[方括号]
dialog --title "title" --radiolist "checklist" 20 60 14 tag1 "item1" on tag2 "item2" off # 多选分界面(圆括号)
dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" # 单选分界面
dialog --title "Installation" --backtitle "Star Linux" --gauge "Linux Kernel" 10 60 50 # 进度条
dialog --title "标题" --backtitle "Dialog" --yesno "说明" 20 60 # 选择yes/no
dialog --title "公告标题" --backtitle "Dialog" --msgbox "内容" 20 60 # 公告
dialog --title "hey" --backtitle "Dialog" --infobox "Is everything okay?" 10 60 # 显示消息后任何时候离开
dialog --title "hey" --backtitle "Dialog" --inputbox "Is okay?" 10 60 "yes" # 输入对话框
dialog --title "Array 30" --backtitle "All " --textbox /root/txt 20 75 # 呈现文书档案内容
dialog --title "Add" --form "input" 12 40 4 "user" 1 1 "" 1 15 15 0 "name" 2 1 "" 2 15 15 0 # 多条输入对话框
dialog --title "Password" --insecure --passwordbox "请输入密码" 10 35 # 星号展现输入--insecure
dialog --stdout --title "日历" --calendar "请选择" 0 0 9 1 2010 # 选取日期
dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" 2>tmp # 取到结果放到文件中(以标准错误输出结果)
a=`dialog --title "title" --stdout --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2"` # 采纳操作赋给变量(使用专门的学业输出)

dialog菜单实例{
while :
do
clear
menu=`dialog --title "title" --stdout --menu "MENU" 20 60 14 1 system 2 custom`
[ $? -eq 0 ] && echo "$menu" || exit # 推断dialog实践,废除退出
while :
do
case $menu in
1)
list="1a "item1" 2a "item2"" # 定蒿子单列表变量
;;
2)
list="1b "item3" 2b "item4""
;;
esac
result=`dialog --title "title" --stdout --menu "MENU" 20 60 14 $list`
[ $? -eq 0 ] && echo "$result" || break # 判别dialog实施,撤除再次来到菜单,注意:协作上层菜单循环
read
done
done
}

}

select菜单{

# 输入项不在菜单自动会提醒重新输入
select menuitem in pick1 pick2 pick3 退出
do
echo $menuitem
case $menuitem in
退出)
exit
;;
*)
select area in area1 area2 area3 返回
do
echo $area
case $area in
返回)
break
;;
*)
echo "对$area操作"
;;
esac
done
;;
esac
done

}

shift{

./cs.sh 1 2 3
#!/bin/sh
until [ $# -eq 0 ]
do
echo "第三个参数为: $1 参数个数为: $#"
#shift 命令实施前变量 $1 的值在shift命令推行后不可用
shift
done

}

getopts给脚本加参数{

#!/bin/sh
while getopts :ab: name
do
case $name in
a)
aflag=1
;;
b)
bflag=1
bval=$OPTARG
;;
?)
echo "USAGE:`basename $0` [-a] [-b value]"
exit 1
;;
esac
done
if [ ! -z $aflag ] ; then
echo "option -a specified"
echo "$aflag"
echo "$OPTIND"
fi
if [ ! -z $bflag ] ; then
echo "option -b specified"
echo "$bflag"
echo "$bval"
echo "$OPTIND"
fi
echo "here $OPTIND"
shift $(($OPTIND -1))
echo "$OPTIND"
echo " `shift $(($OPTIND -1))` "

}

tclsh{

set foo "a bc" # 定义变量
set b {$a}; # 转义 b的值为" $a " ,并不是变量结果
set a 3; incr a 3; # 数字的自增. 将a加3,要是要减3,则为 incr a –3;
set c [expr 20/5]; # 计算 c的值为4
puts $foo; # 打字与印刷变量
set qian(123) f; # 定义数组
set qian(1,1,1) fs; # 多维数组
parray qian; # 打印数组的装有音讯
string length $qian; # 将重回变量qian的尺寸
string option string1 string2; # 字符相关串操作
# option 的操作选项:
# compare 依据字典的排序情势展开相比较。依照string1 <,=,>string2各自重返-1,0,1
# first 重回string第22中学首先次面世string1的地点,若无现身string1则赶回-1
# last 和first相反
# trim 从string第11中学除去从前和末段的面世在string第22中学的字符
# tolower 重回string1中的全部字符被调换为小写字符后的新字符串
# toupper 重返string第11中学的全体字符串调换为大写后的字符串
# length 返回string1的长度
set a 1;while {$a < 3} { set a [incr a 1;]; };puts $a # 判定变量a小于3既循环
for {initialization} {condition} {increment} {body} # 开端化变量,条件,增量,具体操作
for {set i 0} {$i < 10} {incr i} {puts $i;} # 将打字与印刷出0到9
if { 表达式 } {
#运算;
} else {
#其余运算;
}
switch $x {
字符串1 { 操作1 ;}
字符串2 { 操作2 ;}
}
foreach element {0 m n b v} {
# 将要后生可畏组变元中开展巡回,并且每一趟都将执行他的循环体
switch $element {
# 判断element的值
}
}

expect交互{

exp_continue # 多个spawn命令时并行
interact # 实施到位后维持相互影响状态,把调节权交给调控台
expect "password:" # 判断关键字符
send "passwdr" # 实践交互作用动作,与手工输入密码的动作相仿。字符串结尾加"r"

ssh后sudo{

#!/bin/bash
#sudo注释下行允许后台运营
#Defaults requiretty
#sudo去掉!允许远程
#Defaults !visiblepw

/usr/bin/expect -c '
set timeout 5
spawn ssh -o StrictHostKeyChecking=no [email protected] "sudo grep xuesong1 /etc/passwd"
expect {
"passphrase" {
send_user "sshkeyn"
send "xuesongr";
expect {
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "sudo eofn"
}
}
}
"password:" {
send_user "sshn"
send "xuesongr";
expect {
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "sudo eofn"
}
}
}
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "ssh eofn"
}
}
'

}

ssh实践命令操作{

/usr/bin/expect -c "
proc jiaohu {} {
send_user expect_start
expect {
password {
send ${RemotePasswd}r;
send_user expect_eof
expect {
"does not exist" {
send_user expect_failure
exit 10
}
password {
send_user expect_failure
exit 5
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
eof
}
}
passphrase {
send ${KeyPasswd}r;
send_user expect_eof
expect {
"does not exist" {
send_user expect_failure
exit 10
}
passphrase{
send_user expect_failure
exit 7
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
eof
}
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
"No route to host" {
send_user expect_failure
exit 4
}
"Invalid argument" {
send_user expect_failure
exit 8
}
"Connection refused" {
send_user expect_failure
exit 9
}
"does not exist" {
send_user expect_failure
exit 10
}

"Connection timed out" {
send_user expect_failure
exit 11
}
timeout {
send_user expect_failure
exit 3
}
eof
}
}
set timeout $TimeOut
switch $1 {
Ssh_Cmd {
spawn ssh -t -p $Port -o StrictHostKeyChecking=no [email protected]$Ip /bin/su - root -c \"$Cmd\"
jiaohu
}
Ssh_Script {
spawn scp -P $Port -o StrictHostKeyChecking=no $ScriptPath [email protected]$Ip:/tmp/${ScriptPath##*/};
jiaohu
spawn ssh -t -p $Port -o StrictHostKeyChecking=no [email protected]$Ip /bin/su - root -c \"/bin/sh /tmp/${ScriptPath##*/}\" ;
jiaohu
}
Scp_File {
spawn scp -P $Port -o StrictHostKeyChecking=no -r $ScpPath [email protected]$Ip:${ScpRemotePath};
jiaohu
}
}
"
state=`echo $?`

}

互相双引号引用较长变量{

#!/bin/bash
RemoteUser=xuesong12
Ip=192.168.1.2
RemotePasswd=xuesong
Cmd="/bin/echo "$PubKey" > "$RemoteKey"/authorized_keys"

/usr/bin/expect -c "
set timeout 10
spawn ssh -o StrictHostKeyChecking=no [email protected]$Ip {$Cmd};
expect {
password: {
send_user RemotePasswdn
send ${RemotePasswd}r;
interact;
}
eof {
send_user eofn
}
}
"

}

telnet交互{

#!/bin/bash
Ip="10.0.1.53"
a="{'method':'doLogin','params':{'uName':'bobbietest'}"
/usr/bin/expect -c"
set timeout 15
spawn telnet ${Ip} 8000
expect "Escape"
send "${a}\r"
expect {
-re ""err.*none"" {
exit 0
}
timeout {
exit 1
}
eof {
exit 2
}
}
"
echo $?

}

模拟ssh登录{
#好处:可加载情形变量

#!/bin/bash
Ip='192.168.1.6' # 循环就可以
RemoteUser='user' # 普通客商
RemotePasswd='userpasswd' # 普通客户的密码
RemoteRootPasswd='rootpasswd'
/usr/bin/expect -c "
set timeout -1
spawn ssh -t -p $Port -o StrictHostKeyChecking=no [email protected]$Ip
expect {
password {
send_user RemotePasswd
send ${RemotePasswd}r;
expect {
"does not exist" {
send_user "root user does not existn"
exit 10
}
password {
send_user "user passwd errorn"
exit 5
}
Last {
send "su - batchn"
expect {
Password {
send_user RemoteRootPasswd
send ${RemoteRootPasswd}r;
expect {
"]#" {
send "sh /tmp/update.sh updaten "
expect {
"]#" {
send_user ${Ip}_Update_Donen
}
eof
}
}
}
}
}
}
}
}
"No route to host" {
send_user "host not foundn"
exit 4
}
"Invalid argument" {
send_user "incorrect parametern"
exit 8
}
"Connection refused" {
send_user "invalid port parametersn"
exit 9
}
"does not exist" {
send_user "root user does not exist"
exit 10
}
timeout {
send_user "connection timeout n"
exit 3
}
eof
}
"
state=`echo $?`

}

}

}

}

9 实例{

从1叠加到100{

echo $[$(echo +{1..100})]
echo $[(100+1)*(100/2)]
seq -s '+' 100 |bc

}

看清参数是不是为空-空退出并打印null{

#!/bin/sh
echo $1
name=${1:?"null"}
echo $name

}

循环数组{

for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done

}

看清路线{

if [ -d /root/Desktop/text/123 ];then
echo "找到了123"
if [ -d /root/Desktop/text ]
then echo "找到了text"
else echo "没找到text"
fi
else echo "没找到123文件夹"
fi

}

寻觅现身次数最多{

awk '{print $1}' file|sort |uniq -c|sort -k1r

}

看清脚本参数是或不是科学{

./test.sh -p 123 -P 3306 -h 127.0.0.1 -u root
#!/bin/sh
if [ $# -ne 8 ];then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi

while getopts :u:p:P:h: name
do
case $name in
u)
mysql_user=$OPTARG
;;
p)
mysql_passwd=$OPTARG
;;
P)
mysql_port=$OPTARG
;;
h)
mysql_host=$OPTARG
;;
*)
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
;;
esac
done

if [ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]
then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi

echo $mysql_user $mysql_passwd $mysql_port $mysql_host
#结果 root 123 3306 127.0.0.1

}

正则相配邮箱{

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$

}

打字与印刷表格{

#!/bin/sh
clear
awk 'BEGIN{
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|n","Name","Number";
print "+--------------------+--------------------+";
}'
a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`
#cat a.txt |sort +1 -n |while read list
for list in $a
do
name=`echo $list |awk -F: '{print $1}'`
number=`echo $list |awk -F: '{print $2}'`
awk 'BEGIN{printf "|%-20s|%-20s|n","'"$name"'","'"$number"'";
print "+--------------------+--------------------+";
}'
done
awk 'BEGIN{
print " *** The End *** "
print " "
}'

}

推断日期是不是合法{

#!/bin/sh
while read a
do
if echo $a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1
then
if echo $a | grep -e '^[0-9]{4}-[01][0-9]-[0-3][0-9]$'
then
break
else
echo "您输入的日期违规,请从新输入!"
fi
else
echo "您输入的日子违规,请从新输入!"
fi
done
echo "日期为$a"

}

打字与印刷日期段全体日期{

#!/bin/bash
qsrq=20010101
jsrq=20010227
n=0
>tmp
while :;do
current=$(date +%Y%m%d -d"$n day $qsrq")
if [[ $current == $jsrq ]];then
echo $current >>tmp;break
else
echo $current >>tmp
((n++))
fi
done
rq=`awk 'NR==1{print}' tmp`

}

打字与印刷提醒{

cat <<EOF
#内容
EOF

}

登录远程实行命令{

# 特殊符号需求 转义
ssh [email protected] << EOF
#实行命令
EOF

}

数学计算的小算法{

#!/bin/sh
A=1
B=1
while [ $A -le 10 ]
do
SUM=`expr $A * $B`
echo "$SUM"
if [ $A = 10 ]
then
B=`expr $B + 1`
A=1
fi
A=`expr $A + 1`
done

}

多行统生龙活虎{

sed '{N;s/n//}' file # 将两行归并意气风发行(去掉换行符)
awk '{printf(NR%2!=0)?$0" ":$0" n"}' # 将两行归总大器晚成行
awk '{printf"%s ",$0}' # 将富有行统豆蔻梢头
awk '{if (NR%4==0){print $0} else {printf"%s ",$0}}' file # 将4行归拢为一行(可扩张)

}

反正调换{

cat a.txt | xargs # 列转行
cat a.txt | xargs -n1 # 行转列

}

竖行转横行{

cat file|tr 'n' ' '
echo $(cat file)

#!/bin/sh
for i in `cat file`
do
a=${a}" "${i}
done
echo $a

}

取客商的根目录{

#! /bin/bash
while read name pass uid gid gecos home shell
do
echo $home
done < /etc/passwd

}

远程打包{

ssh -n $ip 'find '$path' /data /opt -type f -name "*.sh" -or -name "*.py" -or -name "*.pl" |xargs tar zcvpf /tmp/data_backup.tar.gz'

}

把汉字转成encode格式{

echo 论坛 | tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n"
%c2%db%cc%b3
echo 论坛 | tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n" | tr "[a-f]" "[A-F]" # 大写的
%C2%DB%CC%B3

}

把目录带有大写字母的文本名改为任何大写{

#!/bin/bash
for f in *;do
mv $f `echo $f |tr "[A-Z]" "[a-z]"`
done

}

搜索三回九转多行,在不三番四次的行前计划{

#/bin/bash
lastrow=null
i=0
cat incl|while read line
do
i=`expr $i + 1`
if echo "$lastrow" | grep "#include <[A-Z].h>"
then
if echo "$line" | grep -v "#include <[A-Z].h>"
then
sed -i ''$i'i\//All header files are include' incl
i=`expr $i + 1`
fi
fi
lastrow="$line"
done

}

查询数据库此外引擎{

#/bin/bash
path1=/data/mysql/data/
dbpasswd=db123
#MyISAM或InnoDB
engine=InnoDB

if [ -d $path1 ];then

dir=`ls -p $path1 |awk '//$/'|awk -F'/' '{print $1}'`
for db in $dir
do
number=`mysql -uroot -p$dbpasswd -A -S "$path1"mysql.sock -e "use ${db};show table status;" |grep -c $engine`
if [ $number -ne 0 ];then
echo "${db}"
fi
done
fi

}

批量改良数据库引擎{

#/bin/bash
for db in test test1 test3
do
tables=`mysql -uroot -pdb123 -A -S /data/mysql/data/mysql.sock -e "use $db;show tables;" |awk 'NR != 1{print}'`

for table in $tables
do
mysql -uroot -pdb123 -A -S /data/mysql/data/mysql.sock -e "use $db;alter table $table engine=MyISAM;"
done
done

}

将shell取到的数目插入mysql数据库{

mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "
use $dbname;
insert into data values ('','$ip','$date','$time','$data')
"

}

两天之间距天数{

D1=`date -d '20070409' +"%s"`
D2=`date -d '20070304 ' +"%s"`
D3=$(($D1 - $D2))
echo $(($D3/60/60/24))

}

while试行ssh只循环二次{

cat - # 让cat读连接文件stdin的音信
seq 10 | while read line; do ssh localhost "cat -"; done # 显示的9次是被ssh吃掉的
seq 10 | while read line; do ssh -n localhost "cat -"; done # ssh加上-n参数可幸免只循环二次

}

ssh批量推行命令{

#版本1
#!/bin/bash
while read line
do
Ip=`echo $line|awk '{print $1}'`
Passwd=`echo $line|awk '{print $2}'`
ssh -n localhost "cat -"
sshpass -p "$Passwd" ssh -n -t -o StrictHostKeyChecking=no [email protected]$Ip "id"
done<iplist.txt

#版本2
#!/bin/bash
Iplist=`awk '{print $1}' iplist.txt`
for Ip in $Iplist
do
Passwd=`awk '/'$Ip'/{print $2}' iplist.txt`
sshpass -p "$Passwd" ssh -n -t -o StrictHostKeyChecking=no [email protected]$Ip "id"
done

}

在同一职分打字与印刷字符{

#!/bin/bash
echo -ne "t"
for i in `seq -w 100 -1 1`
do
echo -ne "$ibbb"; # 关键b退格
sleep 1;
done

}

多进度后台并发简易调控{

#!/bin/bash
test () {
echo $a
sleep 5
}
for a in `seq 1 30`
do
test &
echo $!
((num++))
if [ $num -eq 6 ];then
echo "wait..."
wait
num=0
fi
done
wait

}

shell并发{

#!/bin/bash
tmpfile=$$.fifo # 创制管道名称
mkfifo $tmpfile # 成立管道
exec 4<>$tmpfile # 成立文件标示4,以读写格局操作管道$tmpfile
rm $tmpfile # 将创制的管道文件消亡
thred=4 # 内定并发个数
seq=(1 2 3 4 5 6 7 8 9 21 22 23 24 25 31 32 33 34 35) # 创造职务列表

# 为并发线程创设相应个数的占位
{
for (( i = 1;i<=${thred};i++ ))
do
echo; # 因为read命令一回读取黄金时代行,二个echo暗中认可输出三个换行符,所感觉种种线程输出叁个占位换行
done
} >&4 # 将占位音讯写入管道

for id in ${seq} # 从职分列表 seq 中按顺序获取每一个职分
do
read # 读取生龙活虎行,即fd4中的叁个占位符
(./ur_command ${id};echo >&4 ) & # 在后台试行职务ur_command 并将职务 ${id} 赋给当前职分;任务执行完后在fd4种写入三个占位符
done <&4 # 钦定fd4为总体for的职业输入
wait # 等待全数在这shell脚本中运营的后台职务完成
exec 4>&- # 关闭管道

#!/bin/bash

FifoFile="$$.fifo"
mkfifo $FifoFile
exec 6<>$FifoFile
rm $FifoFile
for ((i=0;i<=20;i++));do echo;done >&6

for u in `seq 1 $1`
do
read -u6
{
curl -s >>/dev/null
[ $? -eq 0 ] && echo "${u} 次成功" || echo "${u} 次失败"
echo >&6
} &
done
wait
exec 6>&-

}

shell并发函数{

function ConCurrentCmd()
{
#进程数
Thread=30

#列表文件
CurFileName=iplist.txt

#定义fifo文件
FifoFile="$$.fifo"

#新建一个fifo类型的文书
mkfifo $FifoFile

#将fd6与此fifo类型文件以读写的不二等秘书技连接起来
exec 6<>$FifoFile
rm $FifoFile

#骨子里正是在文件陈述符6中放置了$Thread个回车符
for ((i=0;i<=$Thread;i++));do echo;done >&6

#之后正式输入未来自fd5
exec 5<$CurFileName

#起来循环读取文件列表中的行
Count=0
while read -u5 line
do
read -u6
let Count+=1
# 此处定义二个子经过放到后台实行
# 一个read -u6限令推行一回,就从fd6中减去一个回车符,然后向下实践
# fd6中并未有回车符的时候,就停在这里了,进而达成了经过数量调节
{
echo $Count

#这段代码框正是实践实际的操作了
function

echo >&6
#当进度截至将来,再向fd6中加进四个回车符,即补上了read -u6减去的百般
} &
done

#伺机全数后案子过程甘休
wait

#关闭fd6
exec 6>&-

#关闭fd5
exec 5>&-
}

现身例子{

#!/bin/bash

FifoFile="$$.fifo"
mkfifo $FifoFile
exec 6<>$FifoFile
rm $FifoFile
for ((i=0;i<=20;i++));do echo;done >&6

for u in `seq 1 $1`
do
read -u6
{
curl -s >>/dev/null
[ $? -eq 0 ] && echo "${u} 次成功" || echo "${u} 次失败"
echo >&6
} &
done
wait
exec 6>&-

}
}

函数{

ip(){
echo "a 1"|awk '$1=="'"$1"'"{print $2}'
}
web=a
ip $web

}

检测软件包是或不是留存{

rpm -q dialog >/dev/null
if [ "$?" -ge 1 ];then
echo "install dialog,Please wait..."
yum -y install dialog
rpm -q dialog >/dev/null
[ $? -ge 1 ] && echo "dialog installation failure,exit" && exit
echo "dialog done"
read
fi

}

玩耍维护菜单-更正配置文件{

#!/bin/bash

conf=serverlist.xml
AreaList=`awk -F '"' '/<s/{print $2}' $conf`

select area in $AreaList 全部 退出
do
echo ""
echo $area
case $area in
退出)
exit
;;
*)
select operate in "修正版本号" "增添入保证护中" "删除维护中" "再次回到菜单"
do
echo ""
echo $operate
case $operate in
更改版本号)
echo 请输入版本号
while read version
do
if echo $version | grep -w 10[12][0-9][0-9][0-9][0-9][0-9][0-9]
then
break
fi
echo 请从新输入正确的版本号
done
case $area in
全部)
case $version in
101*)
echo "请确认操作对 $area 体验区 $operate"
read
sed -i 's/101[0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
102*)
echo "请确认操作对 $area 正式区 $operate"
read
sed -i 's/102[0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
esac
;;
*)
type=`awk -F '"' '/'$area'/{print $14}' $conf |cut -c1-3`
readtype=`echo $version |cut -c1-3`
if [ $type != $readtype ]
then
echo "版本号不对应,请从新操作"
continue
fi

echo "请确认操作对 $area 区 $operate"
read

awk -F '"' '/'$area'/{print $12}' $conf |xargs -i sed -i '/'{}'/s/10[12][0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
esac
;;
累计维护中)
case $area in
全部)
echo "请确认操作对 $area 区 $operate"
read
awk -F '"' '/<s/{print $2}' $conf |xargs -i sed -i 's/'{}'/&维护中/' $conf
;;
*)
echo "请确认操作对 $area 区 $operate"
read
sed -i 's/'$area'/&维护中/' $conf
;;
esac
;;
删除维护中)
case $area in
全部)
echo "请确认操作对 $area 区 $operate"
read
sed -i 's/维护中//' $conf
;;
*)
echo "请确认操作对 $area 区 $operate"
read
sed -i '/'$area'/s/维护中//' $conf
;;
esac
;;
回来菜单)
break
;;
esac
done
;;
esac
echo "回车重新选取区"
done

}

keepalive剔除后端服务{

#!/bin/bash
#行数请自定义,默许8行
if [ X$2 == X ];then
echo "error: IP null"
read
exit
fi
case $1 in
del)
sed -i '/real_server.*'$2'.*8888/,+8 s/^/#/' /etc/keepalived/keepalived.conf
/etc/init.d/keepalived reload
;;
add)
sed -i '/real_server.*'$2'.*8888/,+8 s/^#//' /etc/keepalived/keepalived.conf
/etc/init.d/keepalived reload
;;
*)
echo "Parameter error"
;;
esac

}

申诉中中原人民共和国反垃圾邮件联盟黑名单{

#!/bin/bash

IpList=`awk '$1!~"^#"&&$1!=""{print $1}' host.list`

QueryAdd=''
ComplaintAdd=''

CONTENT='大家是一家专门的学业的XXX。xxxxxxx。恳请将大家的出殡服务器IP移出黑名单。感谢!
处理方式:
1.XXXX。
2.XXXX。'
CORP='abc.com'
WWW='www.abc.cm'
NAME='def'
MAIL='[email protected]'
TEL='010-50000000'
LEVEL='0'

for Ip in $IpList
do
Status=`curl -d "IP=$Ip" $QueryAdd |grep 'Getout/ShowForm?IP=' |grep -wc '申诉脱离'`
if [ $Status -ge 1 ];then
IpStatus="黑名单中"
results=`curl -d "IP=${Ip}&CONTENT=${CONTENT}&CORP=${CORP}&WWW=${WWW}&NAME=${NAME}&MAIL=${MAIL}&TEL=${TEL}&LEVEL=${LEVEL}" $ComplaintAdd |grep -E '您的黑名单脱离申请已交由|该IP的退出申请已被旁人付出|申请由于近年来内有被驳倒的记录'`
echo $results
if echo $results | grep '您的黑名单脱离申请已交付' > /dev/null 2>&1
then
complaint='申诉成功'
elif echo $results | grep '该IP的脱离申请已被外人付出' > /dev/null 2>&1
then
complaint='申诉重复'
elif echo $results | grep '申请由于前段时间内有被反驳回绝的笔录' > /dev/null 2>&1
then
complaint='申诉拒却'
else
complaint='异常'
fi
else
IpStatus='正常'
complaint='没有必要申诉'
fi
echo "$Ip $IpStatus $complaint" >> $(date +%Y%m%d_%H%M%S).log
done

}

Web Server in Awk{

#gawk -f file
BEGIN {
x = 1 # script exits if x < 1
port = 8080 # port number
host = "/inet/tcp/" port "/0/0" # host string
url = ":" port # server url
status = 200 # 200 == OK
reason = "OK" # server response
RS = ORS = "rn" # header line terminators
doc = Setup() # html document
len = length(doc) + length(ORS) # length of document
while (x) {
if ($1 == "GET") RunApp(substr($2, 2))
if (! x) break
print "HTTP/1.0", status, reason |& host
print "Connection: Close" |& host
print "Pragma: no-cache" |& host
print "Content-length:", len |& host
print ORS doc |& host
close(host) # close client connection
host |& getline # wait for new client request
}
# server terminated...
doc = Bye()
len = length(doc) + length(ORS)
print "HTTP/1.0", status, reason |& host
print "Connection: Close" |& host
print "Pragma: no-cache" |& host
print "Content-length:", len |& host
print ORS doc |& host
close(host)
}

function Setup() {
tmp = "<html>
<head><title>Simple gawk server</title></head>
<body>
<p><a href=" url "/xterm>xterm</a>
<p><a href=" url "/xcalc>xcalc</a>
<p><a href=" url "/xload>xload</a>
<p><a href=" url "/exit>terminate script</a>
</body>
</html>"
return tmp
}

function Bye() {
tmp = "<html>
<head><title>Simple gawk server</title></head>
<body><p>Script Terminated...</body>
</html>"
return tmp
}

function RunApp(app) {
if (app == "xterm") {system("xterm&"); return}
if (app == "xcalc" ) {system("xcalc&"); return}
if (app == "xload" ) {system("xload&"); return}
if (app == "exit") {x = 0}
}

}

}

 

 

转发,接待分享转发

不许时更新下载地址:

请勿删除音信, 植入广告, 抵制不道德行为

那是叁个二维码

  给个机缘,观众扫作者

 澳门新濠3559 1

1 文件 { ls -rtl # 按期间倒叙列出全数目录和文件 ll -rt...

sort排序{

1 文件管理2 软件管理3 系统管理
4 服务管理5 互连网管理6 磁盘管理

-t # 内定排序时所用的栏位分隔字符
-n # 依照数值的深浅排序
-r # 以相反的逐条来排序
-f # 排序时,将小写字母视为大写字母
-d # 排序时,处理瑞典语字母、数字及空格字符外,忽视别的的字符
-c # 检查文件是还是不是曾经根据顺序排序
-b # 忽视每行前边以前处的空格字符
-M # 前边3个字母依照月份的缩写进行排序
-k # 指定域
-m # 将多少个排序好的文本举行统风华正茂
-T # 钦点一时文件目录,默许在/tmp
+<初叶栏位>-<甘休栏位> # 以钦命的栏位来排序,范围由初叶栏位到告竣栏位的前豆蔻梢头栏位。
-o # 将排序后的结果存入钦定的文

7 客商管理8 剧本相关9 服务配置


sort -n # 按数字排序
sort -nr # 按数字倒叙
sort -u # 过滤重复行
sort -m a.txt c.txt # 将多少个公文内容结合到一齐
sort -n -t' ' -k 2 -k 3 a.txt # 第二域相通,将从第三域举行沉降处理
sort -n -t':' -k 3r a.txt # 以:为分割域的第三域进行倒叙排列
sort -k 1.3 a.txt # 从第五个假名起张开排序
sort -t" " -k 2n -u a.txt # 以第二域举行排序,如果遭遇重复的,就删除

1 文件管理

成立空白文件
touch
不提示删除非空目录
rm -rf 目录名
(-r:递归删除-f 强制)
##################################
回复rm 删除的公文(ext3)
查看磁盘分区格式
df -T
卸载挂载
umount /data/
ext3grep /dev/sdb1 --ls --inode 2
笔录新闻接轨搜寻目录下文件inode 音讯
ext3grep /dev/sdb1 --ls --inode 131081 # 此处是inode
记录下inode 消息起始回涨目录
ext3grep /dev/sdb1 --restore-inode 49153
##################################
windows 文本转linux 文本
dos2unix
linux 文本转windows 文本
unix2dos
调换编码
iconv -f gbk -t utf8 原.txt > 新.txt
查看md5 值
md5sum
硬链接
ln
标志连接
ln -s
翻开上下翻页且彰显行号
cat ? | nl |less
q 退出
停止状态
ctrl+z
翻开文件起头内容
head
查阅文件结尾内容
tail -f # 监视日志文件
自作者商酌文件类型
file
重命名
rename
rename source_pattern target_pattern source_files
改良默许权限
umask
按数字排序
sort -n
按数字倒叙
sort -nr
过滤重复行
sort -u
去除重复的行
uniq
重复的行出现次数
uniq -c
只显示不重复行
uniq -u
将八个文本归并用tab 键分隔断
paste a b
将七个文本归总钦命'+'符号隔开分离
paste -d'+' a b
将多行数据统后生可畏到大器晚成行用tab 键隔离
paste -s a
设置掩瞒属性
chattr [+-=] [ASacdistu] 文件或目录
向下分面器
more
搜索
locate 字符串
翻开发银行数
wc -l
实时有个别目录下查看最新退换过的文书
watch -d -n 1 'df; ls -FlAt /path'
高速备份一个文书
cp filename{,.bak}
##################################
配置编辑器
gconf-editor
vi 配置文件
vi /etc/vimrc
编纂文件
vim
打开发银行号
:set nu
注销行号
:set nonu
跳转到200
200G
收回高亮
:nohl
安装自动缩进
:set autoindent
查阅文本格式
set ff
改为unix 格式
set binary
迈进翻页
ctrl+ U
向后翻页
ctrl+ D
整整替换
g/字符1/s//字符2/g
%s/字符1/字符2/g
# 普通客商展开文书档案不能保留
# tee 是贰个把stdin 保存到文件的小工具,而%,是vim 个中三个只读存放器的名字,总保存着当
前编辑文件的文本路线
:w !sudo tee %
##################################
按文件名查找
find /etc -name http
探求某后生可畏品种文件
find . -type f
安份守己文件权限查找
find / -perm
遵照文件属主查找
find / -user
固守文件所属的组来查找文件
find / -group
文件使用时间在N 天之内
find / -atime -n
文本使用时间在N 天从前
find / -atime +n
文本内容改动时间在N 天以内
find / -mtime -n
文件内容改换时间在N 天早前
find / -mtime +n
文本状态纠正时间在N 天前
find / -ctime +n
文本状态退换时间在N 天内
find / -ctime -n
# linux 文件无创造时间
# Access 使用时间
# Modify 内容更改时间
# Change 状态改换时间(权限、属主)
查找文件长度超过1M 字节的文本
find / -size +1000000c -print
按名字查找文件传递给-exec 后命令
find /etc -name "passwd*" -exec grep "xuesong" {} ;
查找文件名,不取路线
find . -name 't*' -exec basename {} ;

}

##################################


find查找{

2 软件处理

解包tar
tar xvf 1.tar -C 目录
打包tar
tar -cvf 1.tar *
查看tar
tar tvf 1.tar
给tar 追Gavin件
tar -rvf 1.tar 文件名
解包gz
tar zxvpf gz.tar.gz
打包gz
tar zcvpf gz.tar.gz
查看gz
tar ztvpf gz.tar.gz
解压bzip2
bzip2 -dv 1.tar.bz2
解压gzip 到tar
gzip -dv 1.tar.gz
压缩tar 到gz
gzip -v 1.tar
bzip2 压缩
bzip2 -v 1.tar
查看bzip2
bzcat
rpm 安装
rpm -ivh
卸载
rpm -e lynx
强制卸载
rpm -e lynx --nodeps
测试
rpm --test lynx
翻开全部安装的rpm 包
rpm -qa
查找包是还是不是安装
rpm -qa | grep http
解压zip
unzip zip.zip
压缩zip
zip zip.zip *
rar3.6 下载地址

压缩文件为rar 包
rar a rar.rar *.jpg
解压rar 包
unrar x rar.rar
7z 压缩
7z a 7z.7z *
7z 解压
7z e 7z.7z
查看字符行
zgrep 字符1.gz
打包/home, /etc ,但排除/home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
在/home 在那之中,比二零零七/06/01 新的文件才备份
tar -N "2005/06/01" -zcvf home.tar.gz /home
下载
wgetrc
文件上网
lynx
制作镜像
cp -v /dev/dvd /software/rhel4.6.iso9660
废除编写翻译结果
make clean
源码安装
./configure --help |less
./configure --prefix=/usr/local/
make
make install
perl 程序编写翻译
perl Makefile.PL
make
make test
make install
perl 程序编写翻译
python file.py
编译c 程序

# linux文件无成立时间
# Access 使用时间
# Modify 内容退换时间
# Change 状态退换时间(权限、属主)
# 时间暗中同意以24时辰为单位,当前时间到向前24钟头为0天,向前48-72钟头为2天
# -and 且 相配四个标准 参数能够规按期限 -mtime +2 -and -mtime -4
# -or 或 相配自便一个标准

gcc -g hello.c -o hello


find /etc -name "*http*" # 按文件名查找
find . -type f # 查找某风流洒脱档期的顺序文件
find / -perm # 遵照文件权限查找
find / -user # 依照文件属主查找
find / -group # 依照文件所属的组来查找文件
find / -atime -n # 文件使用时间在N天以内
find / -atime +n # 文件使用时间在N天在此以前
find / -mtime +n # 文件内容改变时间在N天从前
find / -ctime +n # 文件状态改造时间在N天前
find / -mmin +30 # 按分钟查找内容改换
find / -size +1000000c -print # 查找文件长度超越1M字节的文件
find /etc -name "*passwd*" -exec grep "xuesong" {} ; # 按名字查找文件传递给-exec后命令
find . -name 't*' -exec basename {} ; # 查找文件名,不取路线
find . -type f -name "err*" -exec rename err ERR {} ; # 批量改名(查找err 替换为 EENVISION猎豹CS6 {}文件
find 路径 -name *name1* -or -name *name2* # 查找任意两个最主要字

3 系统管理

终点锁屏Ctrl+S
解锁屏Ctrl+Q
PS1 情状变量调节提醒突显
PS1='[u@ H w A @#]$'
开机运转格局
vi /etc/inittab
寻觅命令的目录
whereis
查阅当前要实践的指令所在的路线
which
让部命令后台运作
命令&
将前台放入后台(暂停)
ctrl+z
翻看后台运路程序
jobs
起步后台暂停进程
bg 2
调回后台进度
fg 2
后台运维不受shell 退出影响
nohup cmd &
清空整个显示器
clear
再也开首化显示屏
reset
询问用过的一声令下暗中认可1000 条
history
精通记录命令
history -c
cat /root/.bash_history
翻看登录过的客商音信
last
last -n user
who /var/log/wtmp
列出登陆连串失利的客户相关新闻
lastb -a
/var/log/btmp
防火墙日志
tail -f /var/log/messages
ssh 日志
tail -f /var/log/secure
自由生成密码
mkpasswd
-l 位数-C 大小-c 小写-d 数字-s 特殊字符
mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0
眼下在线客商
who
w
查阅当前客户名
whoami
翻开登录客商名
logname
来得月历
cal
查看服务器运转时间
uptime
设日期
date -s 20091112
设时间
date -s 18:30:50
联手时间
/usr/sbin/ntpdate stdtime.gov.hk
7 天前几天期
`date -d "7 days ago" +%Y%m%d`
日子格式调换
`date +%Y-%m-%d -d '20110902'`
日子和岁月
date +%Y-%m-%d_%X
翻开时间
hwclock
账户影子文件
/etc/shadow
列出富有语系
locale -a
校勘语言
LANG=en
改进编码
vi /etc/sysconfig/i18n
utf-8 <---> GBK
强制字符集
export LC_ALL=C
询问静态主机名
vi /etc/hosts
最洛桑接
/etc/security/limits.conf
grub 开机运营项增加
/etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1
别名
alias
监测命令
watch
查阅Linux 版本音讯
uname -a
cat /proc/version
cat /etc/issue
lsb_release -a
查看cpu 信息
more /proc/cpuinfo
查看cpu 型号和逻辑焦点数
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
cpu 运营的位数
getconf LONG_BIT
物理cpu 个数
cat /proc/cpuinfo | grep physical | uniq -c
结果出乎0 扶植64 位
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
查阅cpu 是不是匡助虚构化
cat /proc/cpuinfo|grep flags
pae 扶植半虚构化英特尔 VT 帮忙全设想化
查看内部存款和储蓄器音信
more /proc/meminfo
翻看周全硬件音讯
dmidecode
查看服务器型号
dmidecode | grep "Product Name"
查看软raid 信息
cat /proc/mdstat
查看硬raid 信息
cat /proc/scsi/scsi
翻开硬件音讯
lspci
查阅是或不是帮忙raid
lspci|grep RAID
呈现开机消息
dmesg
进程树
pstree
每间距风度翩翩秒报告虚构内部存款和储蓄器总括消息9 次
vmstat 1 9
把180 号经过的事先级加1
renice +1 180
停下有个别PID 进度
kill -9 PID
点名八日后清晨5:00 执行/bin/ls
at 5pm + 3 days /bin/ls
编排周期任务
crontab -e
分钟小时天月星期命令或脚本
01 1-3/2 * * * 命令或脚本
一贯将指令写入周期职务
echo "40 7 * * 2 /root/sh">>/var/spool/cron/root
翻看自动周期性职分
crontab -l
删除自动周期性职分
crontab -r
禁止或允许客商使用周期职责
cron.deny 和cron.allow
开发银行自动周期性服务
service crond 启动|停止|重启|状态>
是或不是展开了某些端口
netstat -anlp | grep 端口号
翻开监听
netstat -anlp
sudo 命令权限增加
visudo
客商别称(可用all)=NOPASSWD:命令1,命令2
wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restart
UserName ALL=(ALL) ALL
创建补丁
diff suzu.c suzu2.c > sz.patch
安装补丁
patch suzu.c < sz.patch
显示展开钦赐文件的保有进度
lsof 文件
翻看端口的经过
lsof -i :32768
展现消耗内存最多的10 个运维中的进程,以内部存款和储蓄器使用量排序.cpu +3
ps aux |grep -v USER | sort -nk +4 | tail
查看内核模块
lsmod
yum 扩展源

wget
rpm -Uvh epel-release-5-4.noarch.rpm
进级具有包版本,信任关系,系统版本内核都进步
yum -y update
进级钦赐的软件包
yum -y update 软件包名
不转移软件设置更新软件,系统版本进级,内核不退换
yum -y upgrade
yum 寻觅相关包
yum search mail
会变动配置文件,改动旧的看重性关系,退换系统版本
dist-upgrade
编写运转项
/boot/grub/grub.conf
开机运维脚本顺序
/etc/profile
/etc/profile.d/*.sb
~/bash_profile
~/.bashrc

}

/etc/bashrc

top
前五行是系统完全的总计新闻。
先是行是职分队列新闻,同uptime 命令的实践结果。其内容如下:
01:06:48 当前光阴
up 1:22 系统运营时刻,格式为时:分
1 user 当前报到客商数
load average: 0.06, 0.60, 0.48 系统负荷,即便命队列的平分长度。
五个数值分别为1 分钟、5 分钟、15 分钟前到最近的平均值。
其次、三行为经过和CPU 的音讯。当有三个CPU 时,那几个剧情只怕会当先两行。内容如下:
Tasks: 29 total 进程总量
1 running 正在周转的经过数
28 sleeping 睡眠的长河数
0 stopped 停止的进程数
0 zombie 丧尸进程数
Cpu(s): 0.3% us 顾客空间吞并CPU 百分比
1.0% sy 内核空间吞没CPU 百分比
0.0% ni 顾客进度空间内部管理体制改革变过优先级的经过占用CPU 百分比
98.7% id 空闲CPU 百分比
0.0% wa 等待输入输出的CPU 时间百分比
0.0% hi
0.0% si
末段两行为内部存款和储蓄器音讯。内容如下:
Mem: 191472k total 物理内存总的数量
173656k used 使用的大意内部存款和储蓄器总的数量
17616k free 空闲内部存款和储蓄器总的数量
澳门新濠3559,22052k buffers 用作内核缓存的内部存款和储蓄器量
Swap: 192672k total 调换区总数
0k used 使用的调换区总数
一九二九72k free 空闲交流区总的数量
123988k cached 缓冲的调换区总的数量。
内部存款和储蓄器中的故事情节被换出到交流区,而后又被换入到内部存款和储蓄器,但运用过的交流区还未有被遮住,
该数值即为那个内容已存在于内部存款和储蓄器中的调换区的轻重。
相应的内存再度被换出时可不用再对调换区写入。
进程消息区
总结音信区域的尘寰展现了逐后生可畏进度的详细消息。首先来认识一下各列的意思。
序号列名含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进度全体者的顾客id
e USE瑞鹰 进度全体者的顾客名
f GROUP 进度全部者的组名
g TTY 运行进程的尖峰名。不是从终端运维的历程则彰显为?
h PR 优先级
i NI nice 值。负值表示高优先级,正值表示低优先级
j P 最后动用的CPU,仅在多CPU 景况下有意义
k %CPU 上次创新到今天的CPU 时间侵吞百分比
l TIME 进程使用的CPU 时间累积,单位秒
m TIME+ 进度使用的CPU 时间累加,单位1/100 秒
n %MEM 进度使用的大意内部存款和储蓄器百分比
o VIRT 进度使用的设想内存总的数量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的假造内部存款和储蓄器中,被换出的轻重,单位kb。
q RES 进度使用的、未被换出的情理内部存款和储蓄器大小,单位kb。RES=CODE+DATA
r CODE 可施行代码占用的物理内部存款和储蓄器大小,单位kb
s DATA 可实践代码以外的黄金年代部分(数据段+栈)占用的大意内部存款和储蓄器大小,单位kb
t SH奥迪Q3 分享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最终一遍写入到后天,被更改过的页面数。
w S 进度情况。
D=不可中断的暂息情况
R=运行
S=睡眠
T=跟踪/停止
Z=丧尸进度
x COMMAND 命令名/命令行
y WCHAN 若该进程在上床,则显得睡眠中的系统函数名
z Flags 任务标记,参谋sched.h
##################################
iptables
内建八个表:nat mangle 和filter
filter 预设法规表,有INPUT、FOGL450WAENCORED 和OUTPUT 四个准绳链
INPUT 进入
FORWARD 转发
OUTPUT 出去
ACCEPT 将封包放行
REJECT 拦阻该封包
DROP 放任封包不予管理
-A 在所选择的链(INPUT 等)末增添一条或越多准则
-D 删除一条
-E 修改
-p tcp、udp、icmp 0 相当于全体all !取反
-P 设置缺省攻略(与全数链都不匹配强制行使此政策)
-s IP/掩码(IP/24) 主机名、互联网名和精通的IP 地址!取反
-j 指标跳转,登时决定包的运气的专项使用内建目的
-i 进入的(网络)接口[名称] eth0
-o 输出接口[名称]
-m 模块
--sport 源端口
--dport 目的端口
#安排文件
vi /etc/sysconfig/iptables
#将防火墙中的准则条约扫除掉
iptables -F
#注意:iptables -P INPUT ACCEPT
#导入防火墙法规
iptables-restore <法则文件
#封存防火墙设置
/etc/init.d/iptables save
#重启防火墙服务
/etc/init.d/iptables restart
#查阅准则
iptables -L -n
iptables -L -n --line-numbers
#从某些准则链中删除一条准绳
iptables -D INPUT --dport 80 -j DROP
iptables -D INPUT 8
#取代现行反革命法规
iptables -R INPUT 8 -s 192.168.0.1 -j DROP
#插入一条准绳
iptables -I INPUT 8 --dport 80 -j ACCEPT
#查阅转载
iptables -t nat -nL
#在底蕴里打开ip 转载作用
echo 1 > /proc/sys/net/ipv4/ip_forward
##################################
#允许地点回环
iptables -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
#允许已创设的或相关连的畅通
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#盛开对外访谈
iptables -P OUTPUT ACCEPT
#点名某端口针对IP 开放
iptables -A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#允许的IP 或IP 段访问
iptables -A INPUT -s 192.168.10.37 -p tcp -j ACCEPT
#开放门户开放端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#关闭入口
iptables -P INPUT DROP
#闭馆转向
iptables -P FORWARD DROP
##################################
iptables 准则文件
# Generated by iptables-save v1.2.11 on Fri Feb 9 12:10:37 2007
*filter
:INPUT DROP [637:58967]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533]
#允许的IP 或IP 段访问
-A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
#盛放门户开放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
#钦命某端口针对IP 开放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
#谢绝全体合同(INPUT 允许的意况)
#-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
# 允许已成立的或有关连的畅通
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#拒绝ping
-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Feb 9 12:10:37 2007
##################################
常用实例
#同意在IP 访问钦定端口
iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT
#取缔利用某端口
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p tcp --dport 31 -j REJECT
#禁止QQ 端口
iptables -D FORWARD -p udp --dport 8000 -j REJECT
#禁止icmp 端口
#除192.168.62.1 外,制止其它人ping 笔者的主机
iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
#此外境况不容许
iptables -A INPUT -i eth0 -j DROP
#明确命令禁止钦命IP 访谈
iptables -A INPUT -p tcp -s IP -j DROP
#取缔钦赐IP 访问端口
iptables -A INPUT -p tcp -s IP --dport port -j DROP
#阻止全体没有通过你系统授权的TCP 连接
iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP
#丰富网段转载
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
#IP 包流量限定
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
iptables -A INPUT -i eth0 -p icmp -j DROP
#端口映射
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports
3128
#列出某法规链中的有着准则
iptables -L INPUT
#删去有些法规链,不加法规链,消逝全部非内建的
iptables -X allowed
#将封包计数器归零
iptables -Z INPUT
#定义新的准则链
iptables -N allowed
#概念过滤政策
iptables -P INPUT DROP
#修正某自订法规链的名号
iptables -E allowed disallowed
#比对通讯公约项目是还是不是相符
#-p ! tcp 肃清tcp 以外的udp、icmp。-p all 全数项目
iptables -A INPUT -p tcp
#比对封包的来源IP
#192.168.0.0/24 ! 反向相比较
iptables -A INPUT -s 192.168.1.1
#比对封包的指标地IP
iptables -A INPUT -d 192.168.1.1
#比对封包是从哪片网卡步向
#eth+代表全数的网卡
iptables -A INPUT -i eth0
#比对封包要从哪片网卡送出
iptables -A FORWARD -o eth0
#比对某段时间内封包的平分流量
#事例是用来比对:每时辰平均流量是否超过一回3 个封包。除了每时辰平均次外,也得以每
分钟、每分钟或每一天平均叁次,暗中认可值为每小时平均一回,参数如后: /second、/minute、/day。
除了开展封数量的比对外,设定这些参数也会在口径达到规定的标依期,暂停封包的比对动作,以制止因
黑客使用内涝攻击法,引致服务被堵嘴。
iptables -A INPUT -m limit --limit 3/hour
#比对须臾间大气封包的数目
#事例是用来比对叁遍同一时间涌入的封包是不是超过5 个(那是默许值),超过此上限的封包将被直
接废弃。使用效果同上。
iptables -A INPUT -m limit --limit-burst 5
#比对来自本机的封包
#是或不是为某一定使用者所发生的,那样能够幸免服务器使用root 或任何身分将相机行事数据传送出,
能够下落系统被骇的损失。缺憾这么些效应不能比对出来自其它主机的封包。
iptables -A OUTPUT -m owner --uid-owner 500
#比对来自本机的封包
iptables -A OUTPUT -m owner --gid-owner 0
iptables -A OUTPUT -m owner --pid-owner 78
iptables -A OUTPUT -m owner --sid-owner 100
#用来比对联机状态
iptables -A INPUT -m state --state RELATED,ESTABLISHED
联手状态共有种种:INVALID、ESTABLISHED、NEW 和RELATED。
#-j 参数内定实行的拍卖动作,处理动作满含: ACCEPT、REJECT、DROP、REDIRECT、
MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,说明:
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-reset
#能够传递的封包有多少个选拔:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset
REDIRECT 将封包重新导向到另一个端口(PNAT)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
MASQUERADE 改写封包来源IP 为防火墙NIC IP
iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
LOG 将封包相关音讯纪录在/var/log 中
iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"
SNAT 改写封包来源IP 为某一定IP 或IP 范围
iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT --to-source
194.236.50.155-194.236.50.160:1024-32000
DNAT 改写封包目标地IP 为某一定IP 或IP 范围
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination
192.168.1.1-192.168.1.10:80-100
MIXC60ROEvoque 镜射封包
QUEUE 中断过滤程序
RETUENVISIONN 甘休在当前准绳炼中的过滤程序
MATiguanK 将封包标上有个别代号
##################################
iptables 配置实例
允许某段IP 访谈任何端口
iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
设定预设法则(谢绝全数的数据包,再允许必要的,如只做WEB 服务器.仍然推荐五个链都是
DROP)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
(注:意直接设置这三条完已经掉线了)
开启22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
若是OUTPUT 设置成DROP 的,要写上下边一条
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(注:,不写引致力所不及SSH.其余的端口同样,OUTPUT 设置成DROP 的话,也要加多一条链)
借使翻开了web 服务器,OUTPUT 设置成DROP 的话,同样也要增加一条链
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
做WEB 服务器,开启80 端口,别的同理
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
做邮件服务器,开启25,110 端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
允许icmp 包通过,允许ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT 设置成DROP 的话)
iptables -A INPUT -p icmp -j ACCEPT (INPUT 设置成DROP 的话)
允许loopback!(不然会以致DNS 不可能不荒谬关闭等难题)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)

vim编辑器{

IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)


gconf-editor # 配置编辑器
/etc/vimrc # 配置文件路线
vim +24 file # 展开文件定位到内定行
vim file1 file2 # 展开多少个文件
vim -O2 file1 file2 # 垂直分屏
vim -on file1 file2 # 水平分屏
sp filename # 上下分割展开新文件
vsp filename # 左右细分展开新文件
Ctrl+W [操作] # 七个文件间操作 大写W # 操作: 关闭当前窗口c 显示屏中度生机勃勃致= 扩展中度+ 移动光标所在屏 右l 左h 上k 下j 中h 下叁个w
:n # 编辑下一个文件
:2n # 编辑下三个公文
:N # 编辑前二个文书
:rew # 回到首文本
:set nu # 展开发银行号
:set nonu # 撤除行号
200G # 跳转到200
:nohl # 打消高亮
:set autoindent # 设置自动缩进
:set ff # 查看文本格式
:set binary # 改为unix格式
ctrl+ U # 向前翻页
ctrl+ D # 向后翻页
%s/字符1/字符2/g # 全体沟通
X # 文书档案加密

4 服务管理

启动sendmail 服务
./sendmail start
/etc/init.d/sendmail start
关闭sendmail 服务
./sendmail stop
查阅sendmail 服务当前地方
./sendmail status
出殡邮件
echo 内容| /bin/mail -s "标题" 收件箱
开垦服务列表需求打*
ntsysv
让有个别服务不自动运维35 指的是运作等级
httpd:chkconfig --level 35 httpd off
让有个别服务活动运营
httpd:chkconfig --level 35 httpd on
翻看全数服务的启航状态
chkconfig --list
查看某些服务的运营状态
chkconfig --list |grep httpd
查阅服务的事态
chkconfig –-list [劳务名称]
设置非独立服务启状态
chkconfig 服务名on|off|set
拉开mysql 后台运营
/usr/local/mysql/bin/mysqld_safe --user=mysql &
开机运维推行
vi /etc/rc.d/rc.local
开机运营和关机关闭服务连接
/etc/rc.d/rc3.d/S55sshd
# S 开机start K 关机stop 55 品级后跟服务名

}

ln -s -f /usr/local/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd


归档解压缩{

5 互联网管理

##################################
本机互连网铺排文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
HWADDR=00:0C:29:3F:E1:EA
IPADDR=192.168.1.55
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1
##################################
扩充逻辑IP 地址
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0
翻开路由表
route
加多路由表
route add default gw 192.168.1.1 dev eth0
设置DNS
vi /etc/resolv.conf
剥夺网卡
ifconfig eth0 down
启用网卡
ifconfig eth0 up
ifup eth0:0 up
测量检验跳数
traceroute www.baidu.com (linux)
tracert www.baidu.com (windows)
依附IP 和主机最大数总计掩码
ipcalc -m "$ip" -p "$num"
用wget 的递归方式下载整个网站
wget --random-wait -r -p -e robots=off -U Mozilla www.example.com
通过DNS 来读取Wikipedia 的hacker 词条
dig +short txt hacker.wp.dg.cx
host -t txt hacker.wp.dg.cx
rz ssh 小文件上传
sz ssh 小文件下载
从linux ssh 登入另风华正茂台linux
ssh -p 22 wang@192.168.1.209
使用ssh 操作远程主机
ssh -p 22 root@192.168.1.209 遭遇变量中脚本
把当羊眼半夏件拷贝到远程主机
scp -P 22 文件root@ip:/目录
ssh 连接不提醒yes
ssh -o StrictHostKeyChecking=no 192.168.70.130
把远程钦命文件拷贝到本地
scp root@192.168.1.209:远程目录本地目录
透过SSH 挂载远程主机上的文本夹
sshfs name@server:/path/to/folder /path/to/mount/point
卸载的话使用fusermount 命令
fusermount -u /path/to/mount/point
用DIFF 比较远程文件跟地面文件
ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
用SSH 创立端口转发通道
ssh -N -L2001:remotehost:80 user@somemachine
嵌套使用SSH
ssh -t host_A ssh host_B
密钥信赖
ssh-keygen –t rsa
vi 用户/.ssh/authorized_keys
长途关掉黄金年代台WINDOWS 机器
net rpc shutdown -I IP_ADDRESS -U username%password
禁ping
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
##################################
先ping 在扫描主机开放端口
nmap -PT 192.168.1.1-111
扫描出种类基本版本
nmap -O 192.168.1.1
环视端口的软件版本
nmap -sV 192.168.1.1-111
半开扫描(平日不会记录日志卡塔 尔(英语:State of Qatar)
nmap -sS 192.168.1.1-111
不辅助windows 的扫描(判别是还是不是是windows卡塔 尔(英语:State of Qatar)
nmap -sF 192.168.1.1-111
nmap -sX 192.168.1.1-111
nmap -sN 192.168.1.1-111
不ping 直接扫描
nmap -P0 192.168.1.1-111
详细新闻
nmap -d 192.168.1.1-111
没辙找寻真正扫描主机(隐蔽IP卡塔 尔(英语:State of Qatar)
nmap -D 192.168.1.1-111
端口范围
nmap -p 20-30,139,60000-
表示:扫描20 到30 号端口,139 号端口以至拥有大于60000 的端口
重新整合扫描(不ping、软件版本、内核版本、详细新闻卡塔 尔(英语:State of Qatar)
nmap -P0 -sV -O -v 192.168.30.251

tar zxvpf gz.tar.gz -C 放到钦命目录 包中的目录 # 解包tar.gz 不钦点目录则全解压
tar zcvpf /$path/gz.tar.gz * # 打包gz 注意*最棒用相对路线
tar zcf /$path/gz.tar.gz * # 打包准确不晋升
tar ztvpf gz.tar.gz # 查看gz
tar xvf 1.tar -C 目录 # 解包tar
tar -cvf 1.tar * # 打包tar
tar tvf 1.tar # 查看tar
tar -rvf 1.tar 文件名 # 给tar追Gavin件
tar --exclude=/home/dmtsai --exclude=*.tar -zcvf myfile.tar.gz /home /etc # 打包/home, /etc ,但排除 /home/dmtsai
tar -N "2015/06/01" -zcvf home.tar.gz /home # 在 /home 当中,比 二〇一六/06/01 新的文件才备份
tar -zcvfh home.tar.gz /home # 打包目录中包含一而再再而三目录
tar zcf - ./ | ssh root@IP "tar zxf - -C /xxxx" # 大器晚成边压缩风流洒脱边解压
zgrep 字符 1.gz # 查看压缩包汉语件字符行
bzip2 -dv 1.tar.bz2 # 解压bzip2
bzip2 -v 1.tar # bzip2压缩
bzcat # 查看bzip2
gzip A # 直接压缩文件 # 压缩后源文件未有
gunzip A.gz # 直接解压文件 # 解压后源文件未有
gzip -dv 1.tar.gz # 解压gzip到tar
gzip -v 1.tar # 压缩tar到gz
unzip zip.zip # 解压zip
zip zip.zip * # 压缩zip
# rar3.6下载:
rar a rar.rar *.jpg # 压缩文件为rar包
unrar x rar.rar # 解压rar包
7z a 7z.7z * # 7z压缩
7z e 7z.7z # 7z解压

##################################


}

6 磁盘管理

查阅硬盘体量
df -h
查看磁盘分区格式
df -T
纠正只读文件系统为读写
mount -o remount,rw /
查看卷标
e2label /dev/sda5
始建卷标
e2label /dev/sda5 new-label
NTFS 增加卷标
ntfslabel -v /dev/sda8 new-label
ext2 分区转ext3 分区
tune2fs -j /dev/sda
格式化分区
mkfs -t ext3 /dev/hda3
钦赐索引块大小
mke2fs -b 2048 /dev/sda5
对文件系统修复
fsck -y /dev/sda6
翻看一级块的消息
dumpe2fs -h /dev/sda5
查看当前系统接济文件系统
cat /proc/filesystems
检验硬盘状态
smartctl -H /dev/sda
检查评定硬盘新闻
smartctl -i /dev/sda
检查测试全部音讯
smartctl -a /dev/sda
检验目录下全体文件大小
du -h 目录
显示当前目录中子目录的轻重
du -h --max-depth=1
挂载光驱
mount -t iso9660 /dev/dvd /mnt
挂载镜像文件
mount -o loop /software/rhel4.6.iso /mnt/
##################################
磁盘grub 开机指引项增多
/etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1
##################################
建立软RAID1
两块硬盘分区雷同,分别新建分区文件类型为software RAID
创设几个就点击raid 合并为RAID1,这里的挂载点为常常linux 目录
查看raid 工作处境
cat /proc/mdstat
多个盘都加grub 引导
查看
cat /boot/grub/grub.conf
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
修正grub 运行项配置文件
vi /boot/grub/grub.conf
复制title CentOS 到终极的四行
在上边粘贴改过为刚刚新加的指点(hd1,0)。
查看分区
sfdisk -d /dev/hda
导出A 盘分区列表
sfdisk -d /dev/hda > fq.hda
将分区列表导入到新加的硬盘
sfdisk /dev/hdb < fq.hda
回复新挂载的硬盘分区
mdadm /dev/md1 -a /dev/hdb5
# raid5 可利用lvm 扩容
##################################
新硬盘挂载
fdisk /dev/sdc
p # 打字与印刷分区
d # 删除分区
n # 创造分区,(一块硬盘最多4 个主分区,扩张占二个主分区地点。p 主分区e 扩张卡塔尔
w # 保存退出
mkfs -t ext3 -L 卷标/dev/sdc1 # 格式化相应分区
mount /dev/sdc1 /mnt # 挂载
增添开机挂载分区
vi /etc/fstab
用卷标挂载
LABEL=/data /data ext3 defaults 1 2
用真实分区挂载
/dev/sdb1 /data4 ext3 defaults 1 2
率先个数字"1"该选择被"dump"命令使用来检查多个文件系统应该以多快频率实行转储,若不需
要转储就安装该字段为0
其次个数字"2"该字段被fsck 命令用来支配在运行时须要被围观的文件系统的相继,根文件系统
"/"对应当字段的值应为1,其余文件系统应为2。若该文件系统没有要求在运维时扫描则设置该
字段为0

文件ACL权限调节{

##################################


getfacl 1.test # 查看文件ACL权限
setfacl -R -m u:xuesong:rw- 1.test # 对文本扩张顾客的读写权限 -RAV4 递归

7 顾客管理

确立客户
useradd xuesong
改良密码
passwd 用户
echo "xuesong" | passwd xuesong --stdin
找寻顾客突显消息
finger
添加组
groupadd
改进文件具有者(Evoque 递归)
chown -R
改革全部者客商中蕴藏点"."
chown y.li:mysql
校订顾客组
chgrp
改过客户名
usermod -l 新顾客名老客商名
校正客户所属组
usermod -g user group
更改客商家目录
usermod -d 目录-m 用户
将顾客拉长到附加组
usermod -G user group
除去帐号及家目录
userdel -r
内定组并不相同意登入的顾客
useradd -g www -M -s /sbin/nologin www
切换顾客推行
su - user -c "
#命令1

}

"


svn更新代码{

8 剧本相关

##################################
正则表达式
^ 行首定位
$ 行为一定
. 相称除换行符以外的任意字符
* 相配0 或四个再一次字符

  • 双重二回或更频仍
    ? 重复零次或三遍
    [] 匹配后生可畏组中私下一个字符
    [^] 匹配不在钦点组内的字符
    用来转义元字符
    < 词首定位符(支持vi 和grep)
    <love
    > 词尾定位符(扶助vi 和grep)
    love>
    x{m} 重复现身m 次
    x{m,} 重复出现起码m 次
    x{m,n} 重复现身最少m 次不超过n 次
    X? 匹配现身零次或三回的大写字母X
    X+ 相称三个或三个字母X
    (abc|def)+ 匹配三翻五次串的(起码贰个卡塔尔 abc 或def;abc 和def 将同盟
    d 相配任性一人数字
    D 相称任性单个非数字字符
    w 相配恣意单个假名数字字符,同义词是[:alnum:]
    s 相配任性的空白符
    b 相配单词的始发或甘休
    [:alpha:] 代表享有字母不论高低写
    [:lower:] 表示小写字母
    [:upper:] 表示大写字母
    [:digit:] 表示数字字符
    () 括号内的字符为风流潇洒组
    ##################################
    基本流程结构
    if [ $a == $b ]
    then
    echo "等于"
    else
    echo "不等于"
    fi
    ##################################
    case $xs in
    0) echo "0" ;;
    1) echo "1" ;;
    *) echo "其他" ;;
    esac
    ##################################
    num=1
    # while true 等同while :
    while [ $num -lt 10 ]
    do
    echo $num
    ((num=$num+2))
    done
    ##################################
    grep a a.txt | while read a
    do
    echo $a
    done
    ##################################
    w=`awk -F ":" '{print $1}' c`
    for d in $w
    do
    $d
    done
    ##################################
    for ((i=0;i<${#o[*]};i++))
    do
    echo ${o[$i]}
    done
    ##################################
    until 循环# 当command 不为0 时
    until command
    do
    body
    done
    ##################################
    流程序调节制
    break N # 跳出几层循环
    continue N # 跳出几层循环,循环次数不变
    continue # 重新循环次数不改变
    ##################################
    变量
    将变量A 赋值为字串
    A="a b c def"
    A=`命令`
    直接调用
    eval a=$$a
    将变量A 定义为組数
    A=(a b c def)
    set a1 a2 a3 a4
    $1 $2 $*
    在子shell 中运行
    (a=bbk)
    概念变量类型
    declare 或者typeset
    -r 只读(readonly 一样)
    -i 整形
    -a 数组
    -f 函数
    -x export
    declare -i n=0
    env # 查看意况变量
    env | grep "name" # 查看定义的情况变量
    set # 查看蒙受变量和地点变量
    read name # 输入变量
    readonly name # 把name 那个变量设置为只读变量,不允许再一次设置
    readonly # 查看系统设有的只读文件
    export name # 变量name 由地方升为碰着
    export name="RedHat" # 直接定义name 为情状变量
    export Stat$nu=2222 # 变量引用变量赋值
    unset name # 变量消释
    export -n name # 去掉只读变量
    shift # 用于移动地点变量,调节岗位变量,使$3 的值赋给$2.$2 的值付与$1
    name + 0 # 将字符串调换为数字
    number " " # 将数字转变到字符串
    常用系统变量
    $0 # 脚本运营名(满含路线)
    basename $0 # 只取脚本名
    $n # 当前途式的第n 个参数,n=1,2,…9
    $* # 当前途式的有所参数(不包蕴脚本笔者)
    $# # 当前途式的参数个数(不包罗脚本本身)
    $$ # 当前途式的PID
    $! # 执行上一个限令的PID
    $? # 实践上四个命令的重临值
    变量援用手艺${}
    ${name:+value} # 如若设置了name,就把value 展现,未安装则为空
    ${name:-value} # 即使设置了name,就突显它,未安装就显得value
    ${name:?value} # 未安装提醒客商错误消息value
    ${name:=value} # 如未设置就把value 设置并展现<写入本地中>,
    ${#A} # 可获取变量中字节
    ${#A[*]} # 数组个数
    ${A[2]} # 脚本的二个参数
    ${A:4:9} # 取变量中第4 位到后边9 位
    ${A/www/http} # 取变量并且替换每行第三个举足轻重字
    ${A//www/http} # 取变量並且全体沟通每行关键字
    概念了叁个变量为:
    file=/dir1/dir2/dir3/my.file.txt
    ${file#*/} # 去掉第一条/ 及其侧边的字串:dir1/dir2/dir3/my.file.txt
    ${file##*/} # 去掉最后一条/ 及其左侧的字串:my.file.txt
    ${file#*.} # 去掉第四个. 及其右侧的字串:file.txt
    ${file##*.} # 去掉最终一个. 及其右边的字串:txt
    ${file%/*} # 去掉最后条/ 及其侧面的字串:/dir1/dir2/dir3
    ${file%%/*} # 去掉第一条/ 及其侧面的字串:(空值)
    ${file%.*} # 去掉最终三个. 及其侧边的字串:/dir1/dir2/dir3/my.file
    ${file%%.*} # 去掉第三个. 及其侧边的字串:/dir1/dir2/dir3/my
    # # 是去掉左侧(在键盘上# 在$ 之左边)
    # % 是去掉左边(在键盘上% 在$ 之侧面)
    # 单生龙活虎符号是一丝一毫相称﹔三个标记是最大相称
    ##################################
    test 条件判定
    # 符号[ ] 等同test
    expression 为字符串操作
    -n str # 字符串str 是或不是不为空
    -z str # 字符串str 是还是不是为空
    expression 为文件操作
    -b # 是不是块文件
    -p # 文件是不是为叁个命名管道
    -c # 是或不是字符文件
    -r # 文件是不是可读
    -d # 是还是不是一个索引
    -s # 文件的长度是不是不为零
    -e # 文件是还是不是留存
    -S # 是或不是为套接字文件
    -f # 是不是普通文书
    -x # 文件是或不是可实行,则为真
    -g # 是或不是设置了文本的SGID 位
    -u # 是否设置了文本的SUID 位
    -G # 文件是不是存在且归该组全体
    -w # 文件是还是不是可写,则为真
    -k # 文件是还是不是设置了的粘贴位
    -t fd # fd 是或不是是个和终极相连的开垦的文本陈说符(fd 默以为1卡塔 尔(英语:State of Qatar)
    -O # 文件是或不是留存且归该顾客全数
    ! # 取反
    expression 为整数操作
    expr1 -a expr2 # 假设expr1 和expr2 评估为真,则为真
    expr1 -o expr2 # 假诺expr1 或expr2 评估为真,则为真
    两值相比
    整数字符串
    -lt <: # 小于
    -gt >: # 大于
    -le <=: # 小于或等于
    -ge >=: # 大于或等于
    -eq ==: # 等不等
    -ne !=: # 不等于
    认清大小,0 为真,1 为假
    test 10 -lt 5
    echo $?
    1
    推断字符串长度是或不是为0
    test -n "hello"
    0
    ##################################
    重定向
    # 标准输出stdout 和正式错误stderr 标准输入stdin
    cmd 1> fiel # 把标准输出重定向到file 文件中
    cmd > file 2>&1 # 把规范输出和正式错误一同重定向到file 文件中
    cmd 2> file # 把规范错误重定向到file 文件中
    cmd 2>> file # 把标准错误重定向到file 文件中(追加)
    cmd >> file 2>&1 # 把标准输出和专门的学问错误一同重定向到file 文件中(追加)
    cmd < file >file2 # cmd 命令以file 文件作为stdin(标准输入),以file2 文件作为标
    准输出
    cat <>file # 以读写的不二等秘书技展开file
    cmd < file cmd # 命令以file 文件作为stdin
    cmd << delimiter
    cmd; #从stdin 中读入,直至境遇delimiter 分界符。
    delimiter
    >&n # 使用系统调用dup (2) 复制文件陈述符n 并把结果用作标准输出
    <&n # 标准输入复制自文件陈说符n
    <&- # 关闭标准输入(键盘卡塔尔
    >&- # 关闭规范输出
    n<&- # 表示将n 号输加入关贸总协定协会闭
    n>&- # 表示将n 号输出关闭
    ##################################
    运算符
    $[]等同于$(()) # $[]表示格局报告shell 求中括号中的表明式的值
    ~var # 按位取反运算符,把var 中有着的二进制为1 的变为0,为0 的成为1
    var<<str # 左移运算符,把var 中的二进制位向左移动str 位,忽视最左端移出的诸位,最
    右端的各位上补上0 值,每做贰回按位左移就有var 乘2
    var>>str # 右移运算符,把var 中持有的二进制位向右移动str 位,忽略最右移出的诸位,
    最左的各位上补0,每一次做叁回右移就有落实var 除以2
    var&str # 与比较运算符,var 和str 对应位,对于每一种二进制来说,若是二都为1,结果为1.
    否则为0
    var^str # 异或运算符,相比var 和str 对应位,对于二进制来讲借使双方互补,结果为1,
    否则为0
    var|str # 或运算符,相比较var 和str 的对应位,对于每一种二进制来讲,如二都该位有贰个1
    或都是1,结果为1,否则为0
    运算符的优先级
    等级运算符表达
    1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>== # 赋值运算符
    2 || # 逻辑或后边不成事施行
    3 && # 逻辑与前边成功后进行
    4 | # 按位或
    5 ^ # 按异位与
    6 & # 按位与
    7 ==,!= # 等于/不等于
    8 <=,>=,<,> # 大于或等于/小于或等于/大于/小于
    9 <<,>> # 按位左移/按位右移(无转意符号)
    10 +,- # 加减
    11 *,/,% # 乘,除,取余
    12 ! ,~ # 逻辑非,按位取反或补码
    13 -,+ # 正负
    ##################################
    数学生运动算
    $(( )) 整数运算符号大概有这几个:
    • * / **:分別为"加、減、乘、除、密运算"
      & | ^ !:分別为"AND、OR、XOR、NOT" 运算
      % :余数运算
      运算
      let
      let x=16/4
      let x=5**5
      手工业命令行流速計
      expr
      SUM=`expr 2 * 3`
      总计字串长度
      expr length "bkeep zbb"
      抓取字串
      expr substr "bkeep zbb" 4 9
      抓取第二个字符数字串现身的职位
      expr index "bkeep zbb" e
      偏分头运算
      expr 14 % 9
      expr 30 / 3 / 2 # 运算符号有空格
      增量计数(加循环就能够)
      LOOP=0
      LOOP=`expr $LOOP + 1`
      数值测量检验(假设希图计算非整数,则会回来错误。)
      rr=3.4
      expr $rr + 1
      expr: non-numeric argument
      rr=5
      expr $rr + 1
      6
      模式相配(能够使用expr 通过点名冒号选项计算字符串中字符数)
      .* 意即任何字符重复0 次或频繁
      expr bkeep.doc : '.*'
      在expr 中得以动用字符串相称操作,这里运用格局抽出.doc 文件从属名。
      expr bkeep.doc : '(.*).doc'
      次方总括
      echo "m^n"|bc
      ##################################
      grep 用法
      -c 彰显匹配到得行的数据,不出示内容
      -h 不展现文件名
      -i 忽视大小写
      -l 只列出相配行所在文件的文本名
      -n 在每一行中丰硕相对行号
      -s 无声操作只体现报错,检查退出状态
      -v 反向寻找
      -e 使用正则表明式
      -A1 打印相称行和下大器晚成行
      -wc 相称现身次数
      grep 可用于if 判断,找到$?为then
      过滤关键字符行
      grep -v "a" txt
      标准相配字符串
      grep 'a>' txt
      大小写敏感
      grep -i "a" txt
      还要相配大小写
      grep "a[bB]" txt
      查找0-9 重复一次的所在行
      grep '[0-9]{3}' txt
      随意条件十三分
      grep -E "word1 | word2 | word3" file
      再就是相配多个
      grep word1 file | grep word2 |grep word3
      ##################################
      tr 用法
      -c 用字符串1 中字符集的补集替换此字符集,要求字符集为ASCII。
      -d 删除字符串1 中颇负输入字符。
      -s 删除全数重复现身字符系列,只保留第一个;将要再次现身字符串压缩为二个字符串。
      [a-z] a-z 内的字符组成的字符串。
      [A-Z] A-Z 内的字符组成的字符串。
      [0-9] 数字串。
      octal 三个二个人的八进制数,对应有效的ASCII 字符。
      [O*n] 表示字符O 重复现身钦点次数n。因而[O*2]相称OO 的字符串。
      tr 中一定调控字符的例外表明情势
      速记符含义八进制情势
      a Ctrl-G 铃声07
      b Ctrl-H 退格符10
      f Ctrl-L 走行换页14
      n Ctrl-J 新行12
      r Ctrl-M 回车15
      t Ctrl-I tab 键11
      v Ctrl-X 30
      将享有大写转变到小写字母
      tr A-Z a-z
      将空格替换为换行
      tr " " "n"
      除去空行
      tr -s "[12]" < plan.txt
      tr -s ["n"] < plan.txt
      删除文件中的^M,并代之以换行
      tr -s "[15]" "[n]" < file
      tr -s "[r]" "[n]" < file
      交替passwd 文件中具备冒号,代之以tab 键
      tr -s "[:]" "[11]" < /etc/passwd
      tr -s "[:]" "[t]" < /etc/passwd
      日增展现路线可读性
      echo $PATH | tr ":" "n"
      tr 在vi 内使用,在tr 前加管理行范围和感叹号('$'代表最终生龙活虎行)
      1,$!tr -d 't'
      Mac -> UNIX
      tr "r" "n"<macfile > unixfile
      UNIX -> Mac
      tr "n" "r"<unixfile > macfile
      DOS -> UNIX
      Microsoft DOS/Windows 约定,文本的每行以回车字符(r)并后跟换行符(n)结束
      tr -d "r"<dosfile > unixfile
      UNIX -> DOS:在这里种情景下,要求用awk,因为tr 不能够插入八个字符来替换四个字符
      awk '{ print $0"r" }'<unixfile > dosfile
      ##################################
      awk 用法
      b 退格
      f 换页
      n 换行
      r 回车
      t 制表符Tab
      c 代表任后生可畏其余字符
      -F 改变FS 值(分隔符)
      ~ 匹配
      = 赋值
      == 匹配
      += 叠加
      [:alnum:] 字母数字字符
      [:alpha:] 字母字符
      [:cntrl:] 调节字符
      [:digit:] 数字字符
      [:graph:] 非空白字符(非空格、调控字符等)
      [:lower:] 小写字母
      [:print:] 与[:graph:]诚如,不过富含空格字符
      [:punct:] 标点字符
      [:space:] 全数的空白字符(换行符、空格、制表符)
      [:upper:] 大写字母
      [:xdigit:] 十四进制的数字(0-9a-fA-F)
      内建变量
      $n 当前记下的第n 个字段,字段间由FS 分隔
      $0 完整的输入记录
      A福睿斯GC 命令行参数的数目
      A奥迪Q7GIND 命令行中当前文件的职分( 从0 开端算)
      A昂CoraGV 包蕴命令行参数的数组
      CONVFMT 数字转换格式( 暗中认可值为%.6g)
      ENVIRON 遇到变量关联数组
      E大切诺基卡宴NO 最终四个系统错误的叙说
      FIELDWIDTHS 字段宽度列表( 用空格键分隔)
      FILENAME 当前文件名
      FN奥德赛 同NRAV4 ,但针锋相投于当下文件
      FS 字段分隔符( 私下认可是别的空格)
      IGNORECASE 借使为真(即非0 值卡塔 尔(英语:State of Qatar),则开展忽视大小写的同盟
      NF 当前记录中的字段数(列)
      N凯雷德 当前进数
      OFMT 数字的输出格式( 暗中认可值是%.6g)
      OFS 输出字段分隔符( 暗中同意值是贰个空格)
      OCR-VS 输出记录分隔符( 私下认可值是三个换行符)
      讴歌MDXLENGTH 由match 函数所相称的字符串的长短
      福特ExplorerS 记录分隔符( 暗许是三个换行符)
      奥迪Q3START 由match 函数所相配的字符串的率先个岗位
      SUBSEP 数组下标分隔符( 暗中认可值是/034) 。
      BEGIN 先管理(可不Gavin件参数)
      END 结束时管理
      [[:digit:][:lower:]] 数字和小写字母(占三个字符)
      -F"[ ]+|[%]+" 已四个空格或七个%为分隔符
      [a-z]+ 四个小写字母
      [a-Z] 代表享有大大小小写字母(aAbB...zZ)
      [a-z] 代表全数大小写字母(ab...z)
      打字与印刷相称到得行
      awk '/Tom/' 文件
      假若第八个字段值小于4000 才打字与印刷
      awk '$3 <4000' 文件
      相配汤姆 起头的行打字与印刷第一个字段
      awk '/^Tom/{print $1}'
      呈现全数第二个字段不是以ly 结尾的行
      awk '$1 !~ /ly$/' 文件
      原则推断(假若$1 大于$2,max 值为为$1,不然为$2)
      awk '{max=($1 > $2) ? $1 : $2; print max}' 文件
      awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' e.txt
      (括号代表if 语句判别"?"代表then ":"代表else)
      算术运算(第多少个字段和第七个字段乘积大于500 则展现)
      awk '$3 * $4 > 500' 文件
      打字与印刷tom 到suz 之间的行
      awk '/tom/,/suz/' 文件
      去掉前三行
      awk '{$1="";$2="";$3="";print}' a.sh
      将date 值赋给d,并将d 设置为数组mon,打字与印刷mon 数组中第2 个要素
      awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' 文件
      以空格、:、制表符Tab 为分隔符
      awk -F'[ :t]' '{print $1,$2}'
      取关键字下第几行
      awk '/关键字/{a=NR+2}a==NR {print}'
      awk 中援用变量
      a=22aa &&echo 88:99:44|awk -F":" '{print $1,"'"$a"'",$2,$3}'
      点名项目(%d 数字,%s 字符)
      /sbin/ifconfig |awk '{printf("line %d,%sn",NR,$0)}'
      awk -v RS=# 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' 文件
      awk 加if 判断
      awk '{if ( $6 > 50) print $1 " Too high" ;
      else print "Range is OK"}' file
      awk '{if ( $6 > 50) { count++;print $3 }
      else { x+5; print $2 } }' file
      awk 加循环
      awk '{i = 1; while ( i <= NF ) { print NF, $i ; i++ } }' file
      awk '{ for ( i = 1; i <= NF; i++ ) print NF,$i }' file
      领取时间,空格不牢固
      ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}'
      翻开磁盘空间
      df|awk -F"[ ]+|%" '$5>14{print $5}'
      抽取第四列等于90 的第五列
      awk '$4==90{print $5}'
      打字与印刷全体以格局no 或so 起初的行
      awk '/^(no|so)/' test
      排列打字与印刷
      awk 'END{printf
      "%-10s%-10sn%-10s%-10sn%-10s%-10sn","server","name","123","12345","234","1234"}' txt
      awk 'BEGIN{printf
      "|%-10s|%-10s|n|%-10s|%-10s|n|%-10s|%-10s|n","server","name","123","12345","234","1234"}'
      awk 'BEGIN{
      print " *** 开始*** ";
      print "+-----------------+";
      printf "|%-5s|%-5s|%-5s|n","id","name","ip";
      }
      $1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|n",$1,$2,$3" "$11}
      END{
      print "+-----------------+";
      print " *** 结束*** "
      }' txt
      awk 中计算(求余数)
      echo list|awk '{ i=($1%100);if ( $i >= 0 ) {print $0,$i}}'
      sub 相配第一遍出现的相符情势的字符串,相当于sed 's//'
      awk '{sub(/Mac/,"Macintosh");print}' urfile
      #用Macintosh 替换Mac
      gsub 相称全部的合乎形式的字符串,相当于sed 's//g'
      awk '{sub(/Mac/,"MacIntosh",$1); print}' file
      #第贰个域内用Macintosh 替换Mac
      处理sql 语句
      cat 1.txt|awk -F" # " '{print "insert into user
      (user,password,email)values(""'''"$1"'','""'''"$2"'','""'''"$3"'');'"}' >>insert_1.txt
      引用外界变量
      awk '{print "'"$a"'","'"$b"'"}'
      在END 块里面把数组内容写到文件
      awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' data >tmp
      将$1 的值叠加后赋给sum
      awk 'sum+=$1{print sum}' <<EOF
      1 11 111
      2 22 222
      8 33 333
      10 44 444
      EOF
      插手END 只打字与印刷最终的结果
      awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
      1324236000: 4.8726625090e+06 1.4806911317e+07
      1324236300: 3.1952608823e+05 1.3144868085e+07
      1324236600: 5.0792587262e+05 1.4931600767e+07
      EOF
      #结果中首先个值是$2 的总额第三个值是$3 的总和首个值是$2 总和除个数(平均值卡塔 尔(英语:State of Qatar) 第
      四个值是$3 总和除个数(平均值卡塔尔国
      #e+06 是科学计数法,表示乘以10 的6 次方
      awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' <<EOF
      1: 3 30
      2: 6 60
      3: 9 90
      EOF
      列求和
      cat txt |awk '{a+=$1}END{print a}'
      列求平均值
      cat txt |awk '{a+=$1}END{print a/NR}'
      列求最大值
      cat txt |awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}'
      #设定三个变量开头为0,蒙受比该数大的值,就赋值给该变量,直到甘休
      求最小值
      cat txt |awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}'
      看清$1 是或不是整除(awk 中定义变量引用时不可能带$ )
      cat txt |awk '{ i=$1%10;if ( i == 0 ) {print i}}'
      ##################################
      sed 用法
      -n 输出由编辑指令调控(打消私下认可的输出,必需与编辑指令一齐同盟)
      -i 直接对文本操作
      -e 多种编排
      p 打印
      d 删除
      s 替换
      g 协作s 全体沟通
      i 行前插入
      a 行后插入
      r 读
      y 转换
      q 退出
      (..) 保存..作为标签1(1)
      & 代表查找的串内容
      * 前导符
      .* 相称跋扈多少个字符
      情势空间(两行两行管理)
      N 将第二行追加到第大器晚成行将换行符n 替换空极为后生可畏行
      n 将第二行覆盖到第大器晚成行
      h 把方式空间里的行拷贝到暂存空间
      H 把方式空间里的行追加到暂存空间
      g 用暂存空间的内容替换情势空间的行
      G 把暂存空间的内容充实到格局空间的行后
      x 将暂存空间的内容于形式空间里的如今进沟通
      ! 对所选行以外的具备行使用命令。
      潜心:暂存空间里暗许存款和储蓄叁个空行。
      sed 命令替换并打字与印刷出替换行( -i 更动文本)
      sed -n -e "{s/文本(正则表明式)/替换的文本/p}"
      打字与印刷并剔除正则表明式的那有些剧情
      sed -n -e "{s/^ *[0-9]*//p}"
      剔除含首要的一站式
      sed -i "/^$f/d" a
      一贯对文本替换
      sed -i "s/=/:/" c
      找到pearls 起先在行尾加jcui
      sed -i "/^pearls/s/$/jcui/" ab.txt
      标签(保存(mar)作为标签1)
      sed -n 's/(mar)got/1ianne/p' 文件
      echo "margot"|sed -n 's/(mar).*(t)/12/p'
      sed -e 's/^([a-zA-Z]+) ([a-zA-Z]+)(.*)/2 13/g' file
      在以[0-9][0-9]末段的行后加5
      sed 's/[0-9][0-9]$/&5' 文件
      打字与印刷从第5 行到以no 起始行之间的享有行
      sed -n '5,/^no/p' 文件
      改过west 和east 之间的持有行,在终极处加*VACA*
      sed '/west/,/east/s/$/*VACA*/' 文件
      多种编排(先删除1-3 行,在将1 改变成2)
      sed -e '1,3d' -e 's/1/2/' 文件
      找到含suan 的行,在前边加上读入的文本内容
      sed '/suan/r 读入文件' 文件
      找到含no 的行,写入到内定文件中
      sed -n '/no/w 写入文件' 文件
      收取第后生可畏组数字,並且忽视掉最早的0
      sed 's/[^1-9]*([0-9]+).*/1/'
      打字与印刷1 和3 之间的行
      sed '/1/,/3/p' file
      收取钦定行
      sed -n '1p' 文件
      在第5 行以前插入行
      sed '5iaaa' file
      在第5 行之后抽入行
      sed '5aaaa' file
      在相配行前插入生龙活虎行
      echo a|sed -e '/a/ib'
      在相配行后插入意气风发行
      echo a|sed -e '/a/ab'
      echo a|sed 's/a/&nb/g'
      援用外界变量
      sed -n ''$a',10p'
      sed -n ""$a",10p"
      取客商家目录(相称不为/的字符和合营:到最终的字符全体刨除)
      sed -n '{s/^[^/]*//;s/:.*//;p}' /etc/passwd
      将换行符调换为换行
      echo abcd\nabcde |sed 's/\n/@/g' |tr '@' 'n'
      删去掉@后边全数字符,和空行
      sed -e 's/@.*//g' -e '/^$/d'
      将几行统10%意气风发行
      echo $(cat file)|sed 's/ //g'
      取一列最大值
      cat tmp|awk '{print $1}'|sort -n|sed -n '$p'
      寻觅属主权限为7 的文书
      ls -l|sed -n '/^.rwx.*/p'
      在a 前面加#号
      echo a|sed -e 's/a/#&/g'
      ##################################
      图形dialog
      多选分界面[方括号]
      dialog --title "Check me" --checklist "Pick Numbers" 15 25 3 1 "one" "off" 2 "two" "on" 3 "three"
      "off" 2>tmp
      多选分界面(圆括号)
      dialog --title "title" --radiolist "checklist" 20 60 14 tag1 "item1" on tag2 "item2" off 2>tmp
      单选分界面
      dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" 2>tmp
      进度条
      dialog --title "Installation" --backtitle "Star Linux" --gauge "Linux Kernel" 10 60 50
      选择yes/no
      dialog --title "标题" --backtitle "Dialog" --yesno "说明" 20 60
      公告
      dialog --title "文告标题" --backtitle "Dialog" --msgbox "内容" 20 60
      来得音讯后登时离开
      dialog --title "hey" --backtitle "Dialog" --infobox "Is everything okay?" 10 60
      输入对话框
      dialog --title "hey" --backtitle "Dialog" --inputbox "Is okay?" 10 60 "yes"
      展现文书档案内容
      dialog --title "Array 30" --backtitle "All " --textbox /root/txt 20 75
      多条输入对话框
      dialog --title "Add a user" --form "Add a user" 12 40 4 "Username:" 1 1 "" 1 15 15 0 "Full
      name:" 2 1 "" 2 15 15 0 2>tmp
      星号显示输入--insecure
      dialog --title "Password" --insecure --passwordbox "请输入密码" 10 35
      选料日期
      dialog --stdout --title "日历" --calendar "请选择" 0 0 9 1 2010
      ##################################
      脚本头# sh 为当下系统暗中同意shell,可钦定为bash 等
      #!/bin/sh
      一时文件定义
      errtmp=/tmp/$$`date +%s%N`.errtmp
      outtmp=/tmp/$$`date +%s%N`.outtmp
      true > $outtmp
      随机数
      $RANDOM
      进程号
      $$
      纳秒
      date +%N
      在脚下bash 情形下读取并进行FileName 中的命令
      source file-name # 等同. FileName
      区间睡眠5 秒
      sleep 5
      在抽取到数字信号后就要选拔的步履
      trap
      当前目录
      $PWD
      事先三个索引的路径
      $OLDPWD
      回去上多少个索引路线
      cd -
      再一次打字与印刷
      yes
      机关回复y 恐怕此外
      yes |rm -i *
      查看目录全体文件夹
      ls -p /home
      翻占星称完整路线
      ls -d /home/
      命令替换xargs
      #将最近的源委,作为前面命令的参数
      find / -perm +7000 | xargs ls -l
      不换行实施下一句话
      echo -n aa;echo bb
      使转义生效
      echo -e "stssnnn"
      取字符串中字元
      echo $a | cut -c2-6
      排列组合(括号内八个元素分别和其他括号内成分组合)
      echo {a,b,c}{a,b,c}{a,b,c}
      回来目录名
      pwd | awk -F/ '{ print "目录名:" ,$2 }'
      交替上一条命令中的(foo)一个短语(bar)
      ^foo^bar^
      !!:s/foo/bar/
      !!:gs/foo/bar
      ##################################
      shell 例子
      推断参数是否为空-空退出并打字与印刷null
      #!/bin/sh
      echo $1
      name=${1:?"null"}
      echo $name
      ##################################
      循环数组
      for ((i=0;i<${#o[*]};i++))
      do
      echo ${o[$i]}
      done
      ##################################
      判定路线
      if [ -d /root/Desktop/text/123 ];then
      echo "找到了123"
      if [ -d /root/Desktop/text ]
      then echo "找到了text"
      else echo "没找到text"
      fi
      else echo "没找到123 文件夹"
      fi
      ##################################
      合营替换密码
      #!/bin/sh
      cat mailpassword > temp.txt
      sed -i "s/:/ = /" temp.txt
      w=`awk -F " = " '{print $1}' temp.txt`
      for d in $w
      do
      grep -w $d svnpassword >/dev/null
      if [ $? -eq 0 ]
      then
      sed -i "/^$d/d" svnpassword
      grep "^$d" temp.txt >> svnpassword
      #更动成转义就出标题
      #sed -i "/^$d/c $(grep "^$d" temp.txt)" svnpassword
      fi
      done
      rm temp.txt
      ##################################
      多行统生机勃勃
      将两行并为大器晚成行(去掉换行符)
      sed '{N;s/n//}' file
      将4 行合併为大器晚成行(可扩大)
      awk '{if (NR%4==0){print $0} else {printf"%s ",$0}}' file
      将装有行统风华正茂
      awk '{printf"%s ",$0}'
      ##################################
      shift 用法
      ./cs.sh 1 2 3
      #!/bin/sh
      until [ $# -eq 0 ]
      do
      echo "第三个参数为: $1 参数个数为: $#"
      #shift 命令实践前变量$1 的值在shift 命令实行后不可用
      shift
      done
      ##################################
      给脚本加参数getopts
      #!/bin/sh
      while getopts :ab: name
      do
      case $name in
      a) aflag=1
      ;;
      b) bflag=1
      bval=$OPTARG
      ;;
      ?) echo "USAGE:`basename $0` [-a] [-b value]"
      exit 1
      ;;
      esac
      done
      if [ ! -z $aflag ] ; then
      echo "option -a specified"
      echo "$aflag"
      echo "$OPTIND"
      fi
      if [ ! -z $bflag ] ; then
      echo "option -b specified"
      echo "$bflag"
      echo "$bval"
      echo "$OPTIND"
      fi
      echo "here $OPTIND"
      shift $(($OPTIND -1))
      echo "$OPTIND"
      echo " `shift $(($OPTIND -1))` "
      ##################################
      决断脚本参数是或不是准确
      ./test.sh -p 123 -P 3306 -h 127.0.0.1 -u root
      #!/bin/sh
      if [ $# -ne 8 ];then
      echo "USAGE: $0 -u user -p passwd -P port -h host"
      exit 1
      fi
      while getopts :u:p:P:h: name
      do
      case $name in
      u)
      mysql_user=$OPTARG
      ;;
      p)
      mysql_passwd=$OPTARG
      ;; P)
      mysql_port=$OPTARG
      ;;
      h)
      mysql_host=$OPTARG
      ;;
      *)
      echo "USAGE: $0 -u user -p passwd -P port -h host"
      exit 1
      ;;
      esac
      done
      if [ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]
      then
      echo "USAGE: $0 -u user -p passwd -P port -h host"
      exit 1
      fi
      echo $mysql_user $mysql_passwd $mysql_port $mysql_host
      #结果root 123 3306 127.0.0.1
      ##################################
      dialog 取值接值退出
      outtmp=/tmp/outtmp
      dialog --no-shadow --backtitle "雪松制作" --title "请采纳" --ok-label "提交" --cancel-label "裁撤"
      --menu "请选择" 10 60 0
      1 "[目录]"
      q "[退出]"
      2> $outtmp
      #判定提交撤废
      if [ $? == "1" ]
      then
      break
      #continue
      fi
      #只看清理并免职出
      pt=`awk '{print}' $outtmp`
      if [ $pt == q ]
      then
      break
      fi
      #看清操作
      case $pt in
      1)
      #操作
      ;;
      q)
      exit #break
      ;;
      esac
      ##################################
      dialog 输入对话框加决断
      while :
      do
      outtmp=/tmp/outtmp
      dialog --title "雪松制作" --form "请输入" 20 60 10 "客户:" 1 2 "" 1 15 35 0 "ID:" 2 2 "" 2
      15 35 0 "" 6 2 "" 6 0 0 0 "输入格式如下" 7 2 "" 7 0 0 0 "表明" 8 2 "" 8 0 0
      0 2> $outtmp
      yh=`sed -n '1p' $outtmp`
      id=`sed -n '2p' $outtmp`
      if echo $yh | grep -e '^[1-9][0-9]{0,2}' > /dev/null 2>&1
      then
      if echo $id | grep -e '^[1-9][0-9]{0,12}' > /dev/null 2>&1
      then
      break
      else
      echo "您输入的不合规,请从新输入!"
      fi
      else
      echo "您输入的不合规,请从新输入!"
      fi
      done
      ##################################
      打字与印刷表格
      #!/bin/sh
      clear
      awk 'BEGIN{
      print "+--------------------+--------------------+";
      printf "|%-20s|%-20s|n","Name","Number";
      print "+--------------------+--------------------+";
      }'
      a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`
      #cat a.txt |sort +1 -n |while read list
      for list in $a
      do
      name=`echo $list |awk -F: '{print $1}'`
      number=`echo $list |awk -F: '{print $2}'`
      awk 'BEGIN{printf "|%-20s|%-20s|n","'"$name"'","'"$number"'";
      print "+--------------------+--------------------+";
      }'
      done
      awk 'BEGIN{
      print " *** The End *** "
      print " "
      }'
      ##################################
      认清日期是或不是合法
      #!/bin/sh
      while read a
      do
      if echo $a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1
      then if echo $a | grep -e '^[0-9]{4}-[01][0-9]-[0-3][0-9]$'
      then
      break
      else
      echo "您输入的日子违法,请从新输入!"
      fi
      else
      echo "您输入的日子违规,请从新输入!"
      fi
      done
      echo "日期为$a"
      ##################################
      打印日期段全体日期
      #!/bin/bash
      qsrq=20010101
      jsrq=20010227
      n=0
      >tmp
      while :;do
      current=$(date +%Y%m%d -d"$n day $qsrq")
      if [[ $current == $jsrq ]];then
      echo $current >>tmp;break
      else
      echo $current >>tmp
      ((n++))
      fi
      done
      rq=`awk 'NR==1{print}' tmp`
      ##################################
      打字与印刷提醒
      cat <<EOF
      #内容
      EOF
      登入远程施行命令(特殊符号供给转义)
      ssh root@ip << EOF
      #执行命令
      EOF
      登录mysql 试行命令
      mysql -uroot -ppasswd -S mysql.sock --default-character-set=gbk -A<<EOF>outtmp
      #mysql 命令
      EOF
      ##################################
      数学总结的小算法
      #!/bin/sh
      A=1
      B=1
      while [ $A -le 10 ]
      do
      SUM=`expr $A * $B`
      echo "$SUM"
      if [ $A = 10 ]
      then
      B=`expr $B + 1`
      A=1
      fiA
      =`expr $A + 1`
      done
      ##################################
      竖行转横行(三种)
      cat file|tr 'n' ' '
      echo $(cat file)
      #!/bin/sh
      for i in `cat file`
      do
      a=${a}" "${i}
      done
      echo $a
      ##################################
      取客户的根目录
      #! /bin/bash
      #showhome.sh
      IFS=:
      while read name pass uid gid gecos home shell
      do
      echo $home
      done
      执行./showhome.sh < /etc/passwd
      ##################################
      把汉字转成encode 格式:
      echo 论坛| tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n"
      %c2%db%cc%b3
      大写的:
      echo 论坛| tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n" | tr "[a-f]" "[A-F]"
      %C2%DB%CC%B3
      ##################################
      把带有大写字母的文件名改为总体大写
      #!/bin/bash
      for f in *;do
      mv $f `echo $f |tr "[A-Z]" "[a-z]"`
      done
      ##################################
      找寻三番五次多行,在不三回九转的行前安排
      #/bin/bash
      lastrow=null
      i=0
      cat incl|while read line
      do
      i=`expr $i + 1`
      if echo "$lastrow" | grep "#include <[A-Z].h>"
      then
      if echo "$line" | grep -v "#include <[A-Z].h>"
      then
      sed -i ''$i'i\//All header files are include' incl
      i=`expr $i + 1`
      fi
      fi
      lastrow="$line"
      done

      ##################################


--force # 强制覆盖
/usr/bin/svn --username user --password passwd co $Code ${SvnPath}src/ # 检出成套项目
/usr/bin/svn --username user --password passwd up $Code ${SvnPath}src/ # 更新项目
/usr/bin/svn --username user --password passwd export $Code$File ${SvnPath}src/$File # 导出个别文件
/usr/bin/svn --username user --password passwd export -r 版本号 svn路线本地路线 --force # 导出钦定版本

9 劳务配置

samba
改过配置文
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = sambaserver
security=share
hosts allow=互联网主机
[file]
comment=home directories
path=/etc/samba/xuesong
public=yes
writable=yes
browseable=yes
重启
service smb restart
linux 访问windows 共享
smbclient -L //ip 地址或计算机名
##################################
DNS 服务器
DNS 主配置文件,moon.com 域名,zone.moon.com 域的配备文件
vi /etc/named.conf
zone "moon.com" IN {
type master;
file "zone.moon.com";
allow-update { none; };
};
测量检验主配置文件
named-checkconf
新建域的布署文件zone.moon.com
vi /var/named/chroot/var/named/zone.moon.com
$TTL 86400
@ IN SOA xs. quanzhou722.163.com. (
20102014
3H
15M
1W
1D
)
IN NS xs.
IN MX 5 mail.
www IN A 192.168.1.209
ftp IN A 192.168.1.209
mail IN A 192.168.1.209
测验moon.com 域配置文件
named-checkzone moon.com /var/named/chroot/var/named/zone.moon.com
建构域配置文件的软连接
ln -s /var/named/chroot/var/named/zone.moon.com /var/named/zone.moon.com
重启named 服务
service named restart
设置DNS
vi /etc/resolv.conf
测量检验深入分析是不是成功
host www.moon.com
nslookup www.moon.com
##################################
ftp 配置
翻开vsftp 是或不是安装
rpm -qa | grep vsftp
主配置文件
vi /etc/vsftpd/vsftpd.conf
启动VSFTPD 服务
service vsftpd restart
查看21 端口是或不是开放
netstat -atln |grep 21
1、无名氏顾客是或不是允许访谈
anonymous_enable=YES
anon_mkdir_write_enable=YES
2、本地客户处理
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
将客户增加到vsftpd.chroot_list 文件中允许访谈
cat /etc/passwd |grep ":5[0-9][0-9]:" | awk -F : '{print $1}' > /etc/vsftpd.chroot_list
3、设想客商管理
(1卡塔 尔(英语:State of Qatar)要用到文件数据库db4
rpm -qa |grep db4
(2卡塔尔将帐户放入文本:(奇数行卡塔 尔(阿拉伯语:قطر‎客商名(偶数行卡塔 尔(英语:State of Qatar)密码
vi zhanghu.dat
(3卡塔尔国生成帐户的文件数据库
db_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db
(4卡塔尔国改良文件数据库访谈权限
chmod 600 /etc/vsftpd/vsftpd_zhanghu.db
(5卡塔尔手工业营造虚构顾客所需的PAM 配置文件
vi /etc/pam.d/vsftpd.zhanghu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_zhanghu
(6卡塔尔国增加二个伪造顾客的入口帐户
useradd -d /var/ZhanDian -s /sbin/nologin XuNiRuKou
(7卡塔 尔(阿拉伯语:قطر‎在主配置文件中增添设想客商的陈设内容
捏造客户的新添长配置
chroot_local_user=YES
guest_enable=YES
guest_username=XuNiRuKou
pam_service_name=vsftpd.zhanghu
(8卡塔 尔(阿拉伯语:قطر‎在vsftpd.conf 配置文件中钦点客户配置文件的目录
user_config_dir=/etc/vsftpd/vsftpd_zhandian
(9卡塔尔创建布局文件中钦点顾客配置文件的目录
mkdir /etc/vsftpd/vsftpd_zhandian
(10卡塔 尔(英语:State of Qatar)因为入口帐户是二个地面帐户,所以要内定虚构客商全数本地帐户的权限,技能读写自
己空间中的文件
虚构客户就能够就颇负写权限
virtual_use_local_privs=YES
(11)
touch /etc/vsftpd/vsftpd_zhandian/xuesong
echo "local_root=/var/ZhanDian/xuesong" >> /etc/vsftpd/vsftpd_zhandian/xuesong
(12)
mkdir /var/ZhanDian/xuesong
(13)
chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/
(14卡塔 尔(英语:State of Qatar)重启服务
/etc/init.d/vsftpd restart
(15卡塔 尔(阿拉伯语:قطر‎客商端设想账号测量试验
创制顾客脚本。最棒在抬高判定客户名是或不是留存
#!/bin/sh
echo 请输入客商名
read y
echo $y >> zhanghu.dat
echo 请输入密码
read m
echo $m >> zhanghu.dat
db_load -T -t hash -f zhanghu.dat /etc/vsftpd/vsftpd_zhanghu.db
chmod 600 /etc/vsftpd/vsftpd_zhanghu.db
touch /etc/vsftpd/vsftpd_zhandian/$y
echo "local_root=/var/ZhanDian/$y" >> /etc/vsftpd/vsftpd_zhandian/$y
mkdir /var/ZhanDian/$y
chown -R XuNiRuKou:XuNiRuKou /var/ZhanDian/$y
/etc/init.d/vsftpd restart
##################################
httpd 安装
tar zxvf httpd-2.2.12.tar.gz
cd httpd-2.2.12
./configure --prefix=/usr/local/httpd
--enable-rewrite
make && make install
ls /usr/local/
groupadd www
useradd -g www -M -s /sbin/nologin www
cd /usr/local/httpd/
vi conf/httpd.conf
服务器开启在软件设置目录的bin 中
./apachectl start
网页放在的htdocs 中
开机运行
vi /etc/rc.d/rc.local
/usr/local/httpd/bin/apachectl start
借使开发银行唤醒
httpd: Could not reliably determine the server fully qualified domain name, using 127.0.0.1 for
ServerName
修正/etc/hosts Computer名
在httpd.conf 中开启
ServerName 127.0.0.1:80
编码设置
AddDefaultCharset UTF-8
AddDefaultCharset GB2312
##################################
mysql 源码安装
groupadd mysql
useradd mysql -g mysql -M -s /bin/false
tar zxvf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
--with-mysqld-user=mysql
--with-extra-charsets=all
--with-unix-socket-path=/var/tmp/mysql.sock
make && make install
生成mysql 客商数据库和表文件,在安装包中输入。
scripts/mysql_install_db --user=mysql
vi ~/.bashrc
export PATH="$PATH: /usr/local/mysql/bin"
配备文件,有large,medium,small 多个,依据机器质量选取
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
cd /usr/local
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
cp /usr/local/mysql/libexec/mysqld mysqld.old
ln -s /usr/local/mysql/bin/mysql /sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/S15mysql5
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/K15mysql5
##################################
mysql rpm 安装
到 下载mysql RPM(service 和client),
MySQL-server-community-5.1.51-1.rhel5.i386.rpm 装置服务端
MySQL-client-community-5.1.51-1.rhel5.i386.rpm 安装客商端
MySQL-devel-community-5.1.51-1.rhel5.i386.rpm 用于php 的mysql 安装
rpm –ivh MySQL-server-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-client-community-5.1.51-1.rhel5.i386.rpm
rpm –ivh MySQL-devel-community-5.1.51-1.rhel5.i386.rpm
/etc/init.d/mysqld start
mysqladmin -u root password 'xuesong'
mysql -u root -S /var/lib/mysql/mysql.sock -p
多少目录/var/lib/mysql
chkconfig --list |grep mysqld
chkconfig --level 3 mysqld on
安排文件(日志pid)
/etc/my.cnf
ll /usr/bin/mysql*
##################################
mysql 常用命令
启动mysql 服务
./mysql/bin/mysqld_safe --user=mysql &
登录mysql 的命令
格式: mysql -h 主机地址-u 客商名-p 客户密码
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK
刷新
flush privileges;
体现全部数据库
show databases;
开采数据库
use dbname;
突显选中数据库中全部的表
show tables;
查看表结构
desc tables;
剔除数据库
drop database name;
删除表
drop table name;
创建数据库
create database name;
mysqladmin -h myhost -u root -p create dbname
创建表
create table ka(ka_id varchar(6),qianshu int);
插入字段
alter table name add column accountid(列名) int(11) NOT NULL(字段不为空);
不登入mysql 插入字段
mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int(11) NOT
NULL;flush privileges;"
查询
select 列名称from 表名称;
select host,user,password from user;
备份数据库
mysqldump -h host -u root -p dbname >dbname_backup.sql
mysqlhotcopy 只可以备份MyISAM 引擎
/bin/mysqlhotcopy -u root -p
回复数据库
mysql -h host -u root -p dbname < dbname_backup.sql
登陆mysql 后还原sql 文件
source 路径.sql
付与查询权限(未有客商,直接创立)
grant select on db.* to log@"%" Identified by "123456";
加之具备权力(未有顾客,直接开立)
grant all privileges on db.* to log@"IP" identified by '123456' with grant option;
变动密码
update user set password=password('新密码') where user='root'
mysqladmin -u root password 'xuesong'
mysql 查看全部顾客的言辞
select user();
剔除客商
delete from user where user='sss' and host='localhost' ;
查看主从
show slave statusG;
翻开主从复制进程
show processlist;
增加索引化解停mysql 速度慢
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction);
创办主从复制客户
grant replication slave on *.* to '用户'@'%' identified by '密码';
备份表
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 --hex-blob db table1 table1 >
/data/db.sql
查阅系统的字符集和排序情势的设定
SHOW VARIABLES LIKE 'character_set_%';
翻看mysql 全部参数
show variables;
删除空客商
delete from user where user='';
创建表钦点期存款款和储蓄引擎的品种:
CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB
CREATE TABLE myisam (id int, title char(20)) ENGINE = MyISAM
改进现存的表使用的存放引擎:
ALTER TABLE mytable ENGINE = MyISAM
查询表引擎
SHOW TABLE STATUS from 数据库库名where Name='表名';
SHOW TABLE STATUS from db where Name='innodb';
查看mysql 变量
SHOW VARIABLES;
查询客户权限
select host,user,password from user;
查看表的内燃机状态
show table status
##################################
gd 安装
分别安装组件libxml、zlib、freetype、libpng、jpegsrc、gd
libxml2-2.6.24.tar.bz2
zlib-1.2.3.tar.gz
freetype-2.2.1.tar.gz
libpng-1.2.10.tar.gz
jpegsrc.v6b.tar.gz
gd-2.0.33.tar.gz
libxml 安装
tar xzvf libxml2-2.6.24.tar.bz2
tar xvf libxml2-2.6.24.tar
cd libxml2-2.6.24
./configure
make
make install
zlib 安装
tar xzvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure
make
make install
freetype 安装
tar xzvf freetype-2.2.1.tar.gz
cd freetype-2.2.1
./configure --prefix=/usr/local/php/modules/freetype
make
make install
libpng 安装
tar xzvf libpng-1.2.10.tar.gz
cd libpng-1.2.10
./configure --prefix=/usr/local/php/modules/libpng
jpeg 安装
mkdir /usr/local/php/modules/jpeg6
mkdir /usr/local/php/modules/jpeg6/bin
mkdir /usr/local/php/modules/jpeg6/lib
mkdir /usr/local/php/modules/jpeg6/include
mkdir /usr/local/php/modules/jpeg6/man
mkdir /usr/local/php/modules/jpeg6/man/man1
一句成立
mkdir -pv /usr/local/jpeg/{,bin,lib,include,man/man1,man1}
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b/
./configure --prefix=/usr/local/php/modules/jpeg6
--enable-shared
--enable-static
make
make install
gd 安装
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/gd2
--with-jpeg=/usr/local/php/modules/jpeg6
--with-png=/usr/local/php/modules/libpng
--with-zlib
--with-freetype=/usr/local/php/modules/freetype
更正Makefile 文件231 行,重复的第2个freetype 改为libpng
make
make install
php 安装
tar xvf php-5.1.6.tar
cd php-5.1.bz2.6
./configure --prefix=/usr/local/php
--sysconfdir=/etc
--with-apxs2=/usr/local/httpd/bin/apxs
--with-config-file-path=/usr/local/php/lib
--with-libxml-dir=/usr/local/libxml2
--with-zlib
--with-jpeg-dir=/usr/local/php/modules/jpeg6
--with-freetype-dir=/usr/local/php/modules/freetype
--with-gd=/usr/local/gd2
--with-openssl
--with-regex=php
--with-gnu-ld
--with-tsrm-pthreads
--with-bz2
--with-gettext
--with-db4=/usr
--enable-ftp
--enable-bcmath
--enable-dba
--enable-sockets
--enable-soap
--enable-zend-multibyte
--enable-mbstring
--with-curlwrappers
--with-curl=/usr/local/curl
--with-pdo-mysql=/usr/local/mysql
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
make
make install
cp php.ini-recommended /usr/local/php/lib/php.ini
vi /usr/local/php/lib/php.ini
在PHP.IN 添加
[eaccelerator]
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so
eaccelerator.shm_size="32"
eaccelerator.cache_dir="/usr/local/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
姣好后在/usr/local/httpd/conf/httpd.conf 文件上增添如下意气风发行:
AddType application/x-httpd-php .php .php5
ln -s /usr/local/php/bin/php /sbin/php
vi index.php
<? php
phpinfo();
?>
重启httpd
/usr/local/httpd/bin/apachectl restart
最终一步重新起动apache 报如下错误:
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load
/usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore
segment prot after reloc: Permission denied
不关闭SELINUX 的方法:
# setenforce 0
# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
# service httpd restart
# setenforce 1
##################################
LINUX 集群
LVS-- ipvsadm 命令仿照效法
ipvsadm 的用法和格式如下: ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C ipvsadm -R ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight] ipvsadm -d -t|u|f
service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] ipvsadm
--stop-daemon
ipvsadm -h
指令选项解释:有三种命令选项格式,长的和短的,具备同等的意趣。在实质上接收时,三种都
可以。
-A --add-service 在基本的设想服务器表中增多一条新的诬捏服务器记录。也正是充实黄金年代台新的
虚构服务器。
-E --edit-service 编辑内核设想服务器表中的一条设想服务器记录。
-D --delete-service 删除内核设想服务器表中的一条虚构服务器记录。
-C --clear 排除根本设想服务器表中的全数记录。
-Rubicon --restore 复苏虚拟服务器法则
-S --save 保存设想服务器准绳,输出为-Wrangler 选项可读的格式
-a --add-server 在底子虚构服务器表的一条记下里增添一条新的切实地工作服务器记录。约等于在四个
编造服务器中扩充意气风发台新的真实服务器
-e --edit-server 编辑一条虚构服务器记录中的某条真实服务器记录
-d --delete-server 删除一条虚构服务器记录中的某条真实服务器记录
-L|-l --list 展现内核设想服务器表
任何的选项:-t --tcp-service service-address 表明设想服务器提供的是tcp 的劳动[vip:port] or
[real-server-ip:port]
-u --udp-service service-address 表达虚构服务器提供的是udp 的劳动[vip:port] or
[real-server-ip:port]
-f --fwmark-service fwmark 表达是透过iptables 标志过的服务类型。
-s --scheduler scheduler 使用的调整算法,有那般多少个筛选rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,-p
--persistent [timeout] 长久稳定的劳动。那几个选项的意味是源于同二个顾客的往往伸手,将被同
大器晚成台真正的服务器管理。timeout 的暗中同意值为300 秒。
-M --netmask netmask persistent granularity mask
-r --real-server server-address 真实的服务器[Real-Server:port]
-g --gatewaying 内定LVS 的做事方式为直接路由情势(也是LVS 暗中同意的格局卡塔 尔(阿拉伯语:قطر‎
-i --ipip 钦赐LVS 的干活形式为隧道方式
-m --masquerading 钦点LVS 的做事方式为NAT 情势
-w --weight weight 真实服务器的权值
--mcast-interface interface 钦定组播的联合接口
-c --connection 展现LVS 近期的总是如:ipvsadm -L -c
##################################
VS-NAT 模式
故事情节服务器的体积10~20
行使保留地址的LAN
双向重写
安装ipvsadm 软件
根本做个连续
ln -s /usr/src/kernels/2.6.18-53.e15-i686/ /usr/src/linux
安装软件
查看ipvsadm 版本
ipvsadm --version
建构脚本/etc/rc.d/lvs
echo "1" > /proc/sys/net/ipv4/ip_forward
#免除ipvsadm 一文山会海法则
ipvsadm -C
ipvsadm -A -t 外网IP:端口-s rr
ipvsadm -a -t 外网IP:端口-r 内网1 服务器IP:端口-m -w 1
ipvsadm -a -t 外网IP:端口-r 内网2 服务器IP:端口-m -w 1
修正内网服务器ip 和网关,开启httpd,建设构造分歧页面测验
劣势无法去掉宕机的web 服务器,可应用LVS+Keepalived 组合
##################################
heartbeat 心跳检查实验(双机热备卡塔 尔(英语:State of Qatar)
安装heartbeat 的rpm 包
需求先装heartbeat-pils 和heartbeat-stonith 五个包
主节点的布置
设置完解压配置文件
rpm -q heartbeat -d
cd /etc/ha.d
cp /usr/share/doc/heartbeat-2.1.3/ha.cf .
cp /usr/share/doc/heartbeat-2.1.3/authkeys .
cp /usr/share/doc/heartbeat-2.1.3/haresources .
翻看Computer名,记录下来
uname -n
vi ha.cf
张开日志记录文件
logfile /var/log/ha-log
开垦心跳检查评定
keepalive 2
谢世时间
deadtime 30
warntime 10
initdead 120
用什么样公约端口(udp卡塔尔国
udpport 694
应用哪个网卡作为心跳检查评定
bcast eth1
备用的IP
ucast eth1 192.168.1.20
主节点服务器
node 主节点Computer名
node 另一个划算机名
ping 外网测量检验
ping 贰个外网的IP
布置验证格局
vi authkeys
打开
auth1
1 crc
布置设想服务
vi haresources
丰裕一条名称和IP
微计算机名IP httpd
sev1.example.com 222.90.88.88 httpd
hosts 文件要安插上七个机械的机器名和IP
vi /etc/hosts
222.90.88.10 sev1.example.com sev2
192.168.1.10 sev1
222.90.88.20 sev1.example.com sev2
192.168.1.20 sev1
chmod 600 authkeys
service heartbeat start
在布署备用节点
一向拷贝主节点的文书修正
设置完步向安装目录
cd /etc/ha.d
用sftp 登入主机
sftp 222.90.88.10
cd /etc/ha.d
get ha.cf
get authkeys
get hare*
bye
只须求修正ha.cf 文件
vi ha.cf
ucast eth1 192.168.1.10
运营备用节点
service heartbeat start
测试
主节点和负节点建构不一致index 页面
主节点虚构出外网ip eth0:0
停掉主节点任务
再也访问
运维后在探问
##################################
D大切诺基 直接路由情势
同一网段的LAN
内容服务器的容积20 以上
降低LVF 的负载
VIP 服务器的配置脚本
vi /etc/init.d/vip.sh
ifconfig eth0:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev eth0:0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.10 -g
ipvsadm -a -t 222.90.88.88:80 -r 222.90.88.20 -g
ipvsadm
chmod 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
服务器配置脚本
vi /etc/init.d/lvs.sh
ifconfig lo:0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
其次台服务器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
测量检验七个服务器测验页面写入差异内容
分级运营httpd
正是IP 能够分级拜见区别服务器,访问设想IP88,则互相伦叫
##################################
IP 隧道形式
WAN(或LAN 也可)
剧情服务器的容积能到100
vip-server
vi /etc/init.d/vip.sh
ifconfig tunl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev tunl0
ipvsadm -C
ipvsadm -A -t 222.90.88.88:80 -s rr
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.10 -i
ipvsadm -a -t 222.90.88.88 :80 -r 222.90.88.20 -i
ipvsadm
chmod -R 777 /etc/init.d/vip.sh
/etc/init.d/vip.sh
1web 服务器
ifconfig runl0 222.90.88.88 broadcast 222.90.88.88 netmask 255.255.255.255 up
route add -host 222.90.88.88 dev tunl0
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_annaunce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_annaunce
sysctl -p
chmod 777 /etc/init.d/lvs.sh
/etc/init.d/lvs.sh
2web 服务器
sftp 222.90.88.10
get /etc/init.d/lvs.sh
bye
mv lvs.sh /etc/init.d/
/etc/init.d/lvs.sh
测量检验五个服务器测验页面写入分裂内容
各自运维httpd
当成IP 能够分别访谈不相同服务器,访谈虚构IP88,则互相伦叫
##################################
sendmail 邮件服务器
布置DNS 服务器为mail 服务器IP 拆解解析
在布置文件中加多
IN MX 5 mail.
mail IN A 192.168.1.209
重启服务service named restart
测试
ping mail.xuesong.com
nslookup mail.xuesong.com
mail 服务器上设置DNS 服务器
vi /etc/resolv.conf
设置软件
sendmail-8.13.8-8.el5.i386.rpm
sendmail-cf-8.13.8-8.el5.i386.rpm
sendmail-doc-8.13.8-8.el5.i386.rpm
yum install dovecot
m4
sendmail 配置文件目录:/etc/mail
vi local-host-names
添加xuesong.com
vi sendmai.mc
破除后面七个dnl
dnl TRUST_AUTH_MECH('EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl
修改IP
DAEMON_OPTIONS('Port=smtp,Addr=192.168.1.209, Name=MTA')dnl
生成sendmail 配置文件sendmail.cf
m4 sendmail.mc > sendmail.cf
查阅运维等级
chkconfig --list |grep sas
翻开运营品级3
chkconfig --level 3 saslauthd on
makemap hash access.db < access
vi /etc/dovecot.conf
开垦下边一句话
protocols = imap imaps pop3 pop3s
service sendmail restart
service dovecot restart
group mail
useradd -g mail -M -s /sbin/nologin 用户名
##################################
JDK 安装
rpm -qa|grep jdk
承认gcj 的版本号
rpm -qa | grep gcj
卸载gcj
yum -y remove java-1.4.2-gcj-compat
从SUN 下载jdk-1_5_0_14-linux-i586-rpm.bin 或jdk-1_5_0_14-linux-i586.bin
mkdir /usr/java
cd /usr/java

  1. jdk-1_5_0_14-linux-i586-rpm.bin 文件安装
    chmod 777 jdk-1_5_0_14-linux-i586-rpm.bin
    rpm -ivh jdk-1_5_0_14-linux-i586.rpm
  2. jdk-1_5_0_14-linux-i586.bin 文书安装
    chmod u+x jdk-1_5_0_14-linux-i586.bin
    ./jdk-1_5_0_14-linux-i586.bin
    累计景况变量
    vi /etc/profile
    export JAVA_HOME=/usr/local/java/jdk1.6.0_23
    export
    CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    reboot 重启生效
    ##################################
    xen 管理
    翻看虚拟主机列表
    xm list
    应用文本情势连接虚构系统
    xm console test
    起步设想主机
    xm create test
    虚构机和主机切换
    ctrl+]
    闭馆设想主机
    xm shutdown 主机名
    设想机克隆(关闭后克隆)
    virt-clone -o test -n test1 -f /data/xen/test1.img
    设想机增添硬盘
    dd if=/dev/zero of=/data/xen/test.img bs=1M count=8
    编辑原本配置文件,增添新磁盘文件
    vi /etc/xen/vm11
    name = "vm11"
    uuid = "91b0200b-eb41-46d3-1e11-ee2a87035f24"
    maxmem = 128
    memory = 128
    vcpus = 1
    bootloader = "/usr/bin/pygrub"
    on_poweroff = "destroy"
    on_reboot = "restart"
    on_crash = "restart"
    vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
    disk = [ "tap:aio:/data/vm11.img,xvda,w", "tap:aio:/data/vm11b.img,xvdb,w" ]
    vif = [ "mac=00:16:36:75:8a:ea,bridge=virbr0,script=vif-bridge" ]
    起头XEN 虚构机并登入测量检验新加的磁盘
    追加设想机网卡
    cat /etc/xen/vm11
    name = "vm11"
    uuid = "91b0200b-eb41-46d3-1e11-ee2a87035f24"
    maxmem = 512
    memory = 128
    vcpus = 1
    bootloader = "/usr/bin/pygrub"
    on_poweroff = "destroy"
    on_reboot = "restart"
    on_crash = "restart"
    vfb = [ "type=vnc,vncunused=1,keymap=en-us" ]
    disk = [ "tap:aio:/data/vm11.img,xvda,w" ]
    vif = [ "mac=00:16:36:75:8a:ea,bridge=xenbr0,script=vif-bridge",
    "mac=00:16:36:75:8a:eb,bridge=xenbr0,script=vif-bridge" ]

如上所述是笔者给大家介绍的linux运营常用命令,希望对大家持有利于,若是大家有其余疑问请给自家留言,小编会及时还原大家的。在这里也非常谢谢大家对剧本之家网址的扶持!

}

您恐怕感兴趣的篇章:

  • Linux常用命令全集(超周到)
  • 图解linux安装tomcat(附常用命令卡塔 尔(英语:State of Qatar)
  • Linux 中 CULacrosseL常用命令精解
  • Linux系统音讯查阅常用命令
  • linux系统安装git及git常用命令
  • Linux 常用命令大全(优良)
  • 基于Linux调节和测量试验工具strace与gdb的常用命令计算
  • linux 凌犯常用命令汇编
  • LINUX入门级常用命令20条收拾
  • 详细解释Linux 常用命令 pwd cd的采纳

git{

# 编写翻译安装git-1.8.4.4
./configure --with-curl --with-expat
make
make install

git clone git@10.10.10.10:gittest.git ./gittest/ # 克隆项目到钦命目录
git pull # 更新项目 须求cd到花色目录中
git add . # 更新具备文件
git commit -m "gittest up" # 提交操作并加上备注
git push # 正式提交到长途git服务器
git reset --hard # 当地恢复生机整个项目
git rm -r -n --cached ./img # -n实行命令时,不会删除任何文件,而是体现此命令要去除的公文列表预览
git rm -r --cached ./img # 实践删除命令 须求commit和push让长途生效
git init --bare smc-content-check.git # 最初化新git项目 要求手动创制此目录并给git客商权限 chown -奥迪Q5 git:git smc-content-check.git
git config --global credential.helper store # 记住密码

}

恢复生机rm删除的公文{

# debugfs针对 ext2 #ext3   grep针对 ext3    #extundelete针对 ext4
df -T # 首先查看磁盘分区格式
umount /data/ # 卸载挂载,数据错过请首先卸载挂载,或再一次挂载只读
ext3grep /dev/sdb1 --ls --inode 2 # 记录消息接轨查找目录下文件inode消息
ext3grep /dev/sdb1 --ls --inode 131081 # 此处是inode
ext3grep /dev/sdb1 --restore-inode 49153 # 记录下inode消息初叶重理旧业目录

}

openssl{

openssl rand 15 -base64 # 口令生成
openssl sha1 filename # 哈希算法校验文件
openssl md5 filename # MD5校验文件
openssl base64 filename.txt # base64编码/解码文件(发送邮件附件之类作用会能够动用)
openssl base64 -d filename.bin # base64编码/解码二进制文件
openssl enc -aes-128-cbc filename.aes-128-cbc # 加密文档
# 推荐应用的加密算法是bf(Blowfish)和-aes-128-cbc(运维在CBC形式的126位密匙AES加密算法),加密强度有保持
openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename # 解密文书档案

}

}

2 软件{

rpm{

rpm -ivh lynx # rpm安装
rpm -e lynx # 卸载包
rpm -e lynx --nodeps # 强制卸载
rpm -qa # 查看全部安装的rpm包
rpm -qa | grep lynx # 查找包是还是不是安装
rpm -ql # 软件包路线
rpm -Uvh # 升级包
rpm --test lynx # 测试
rpm -qc # 软件包配置文书档案
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 # 导入rpm的具名消息
rpm --initdb # 初始化rpm 数据库
rpm --rebuilddb # 重新建设构造rpm数据库 在rpm和yum无响应的状态使用 先 rm -f /var/lib/rpm/__db.00* 在重建

}

yum{

yum list # 全部软件列表
yum install 包名 # 安装包和重视性包
yum -y update # 晋级全部包版本,注重关系,系统版本内核都升高
yum -y update 软件包名 # 晋级钦定的软件包
yum -y upgrade # 不改进软件设置更新软件,系统版本进级,内核不更改
yum search mail # yum搜索相关包
yum grouplist # 软件包组
yum -y groupinstall "Virtualization" # 安装软件包组
repoquery -ql gstreamer # 不安装软件查看包罗文件
yum clean all # 清除var下缓存

}

yum使用epel源{

# 包下载地址: # 选用版本567
rpm -Uvh

}

自定义yum源{

find /etc/yum.repos.d -name "*.repo" -exec mv {} {}.bak ;

vim /etc/yum.repos.d/yum.repo
[yum]
#http
baseurl=
#挂载iso
#mount -o loop CentOS-5.8-x86_64-bin-DVD-1of2.iso /data/iso/
#本地
#baseurl=file:///data/iso/
enable=1

#导入key
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

}

编译{

源码安装{

./configure --help # 查看全体编写翻译参数
./configure --prefix=/usr/local/ # 配置参数
make # 编译
# make -j 8 # 二十四线程编写翻译,速度很快,但有一些软件不协助
make install # 安装包
make clean # 消亡编写翻译结果

}

perl程序编写翻译{

perl Makefile.PL
make
make test
make install

}

python程序编写翻译{

python file.py

# 源码包编写翻译安装
python setup.py build
python setup.py install

}

编译c程序{

gcc -g hello.c -o hello

}

}

}

3 系统{

wall     # 给任何顾客发音讯 (全屏 全终端卡塔尔国
whereis ls # 查找命令的目录
which # 查看当前要履行的指令所在的门道
clear # 清空整个荧屏
reset # 重新初步化显示屏
cal # 突显月历
echo -n 123456 | md5sum # md5加密
mkpasswd # 随机生成密码 -l位数 -C大小 -c小写 -d数字 -s特殊字符
netstat -anlp | grep port # 是或不是张开了有些端口
ntpdate stdtime.gov.hk # 同步时间
tzselect # 采取时区 #+8=(5 9 1 1) # (TZ='Asia/Shanghai'; export TZ)括号内写入 /etc/profile
/sbin/hwclock -w # 时间保存到硬件
/etc/shadow # 账户影子文件
LANG=en # 校订语言
vim /etc/sysconfig/i18n # 修改编码 LANG="en_US.UTF-8"
export LC_ALL=C # 强制字符集
vi /etc/hosts # 查询静态主机名
alias # 别名
watch uptime # 监测命令动态刷新
ipcs -a # 查看Linux系统当前单个共享内存段的最大值
ldconfig # 动态链接库管理命令
ldd `which cmd` # 查看命令的注重库
dist-upgrade # 会改换配置文件,改造旧的信赖关系,改动系统版本
/boot/grub/grub.conf # grub运转项配置
ps -mfL <PID> # 查看钦定进度运营的线程 线程数受 max user processes 节制
ps uxm |wc -l # 查看当前顾客占用的进度数 [包罗线程] max user processes
top -p PID -H # 查看钦点PID进程及线程
lsof |wc -l # 查看当前文件句柄数使用数据 open files
lsof |grep /lib # 查看加载库文件
sysctl -a # 查看当前全数系统基本参数
sysctl -p # 更改内核参数/etc/sysctl.conf,让/etc/rc.d/rc.sysinit读取生效
strace -p pid # 追踪系统调用
ps -eo "%p %C %z %a"|sort -k3 -n # 把经过按内部存款和储蓄器使用大小排序
strace uptime 2>&1|grep open # 查看命令打开的连带文书
grep Hugepagesize /proc/meminfo # 内部存款和储蓄器分页大小
mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0 # 随机生成钦定项目密码
echo 1 > /proc/sys/net/ipv4/tcp_syncookies # 使TCP SYN Cookie 珍贵生效 # "SYN Attack"是黄金时代种谢绝服务的攻击情势
grep Swap /proc/25151/smaps |awk '{a+=$2}END{print a}' # 查询某pid使用的swap大小

开机运维脚本顺序{

/etc/profile
/etc/profile.d/*.sh
~/bash_profile
~/.bashrc
/etc/bashrc

}

进程管理{

ps -eaf # 查看全体进度
kill -9 PID # 强制甘休有个别PID进度
kill -15 PID # 安全退出 需程序内处时域信号
cmd &    # 命令后台运转
nohup cmd & # 后台运营不受shell退出影响
ctrl+z # 将前台放入后台(暂停)
jobs # 查看后台运路程序
bg 2 # 运营后台暂停进度
fg 2 # 调回后台进程
pstree # 进程树
vmstat 1 9 # 每间距黄金时代秒报告种类天性音信9次
sar # 查看cpu等状态
lsof file # 展现张开钦点文件的享有进度
lsof -i:32768 # 查看端口的历程
renice +1 180 # 把180号经过的预先级加1

ps{

ps aux |grep -v USER | sort -nk +4 | tail  #体现消耗内部存款和储蓄器最多的12个运维中的进度,以内部存款和储蓄器使用量排序.cpu +3
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
%CPU # 进程的cpu占用率
%MEM # 进度的内部存款和储蓄器占用率
VSZ # 进程设想大小,单位K(即总占用内部存储器大小,包罗实际内部存款和储蓄器和虚构内部存储器)
RSS # 进度使用的驻留集大小即事实上物理内部存款和储蓄器大小
START # 进度运维时间和日期
占用的伪造内部存储器大小 = VSZ - 讴歌ZDXSS

ps -eo pid,lstart,etime,args # 查看进程运营时间

}

top{

前五行是系统总体的计算新闻。
先是行: 职务队列消息,同 uptime 命令的执行结果。内容如下:
01:06:48 当前光阴
up 1:22 系统运作时刻,格式为时:分
1 user 当前报到客户数
load average: 0.06, 0.60, 0.48 系统负荷,即任务队列的平分长度。
四个数值分别为 1分钟、5分钟、15分钟前到前日的平均值。

其次、三行:为经过和CPU的消息。当有七个CPU时,那些剧情可能会当先两行。内容如下:
Tasks: 29 total 进度总的数量
1 running 正在周转的长河数
28 sleeping 睡眠的进度数
0 stopped 结束的过程数
0 zombie 活死人进度数
Cpu(s): 0.3% us 客户空间攻下CPU百分比
1.0% sy 内核空间攻下CPU百分比
0.0% ni 客商进程空间内转移过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si

第四、五行:为内部存款和储蓄器消息。内容如下:
Mem: 191172k total 物理内部存款和储蓄器总的数量
173656k used 使用的物理内部存储器总数
17616k free 空闲内部存储器总的数量
22052k buffers 用作内核缓存的内部存款和储蓄器量
Swap: 一九二七72k total 交流区总的数量
0k used 使用的沟通区总的数量
192772k free 空闲调换区总数
123988k cached 缓冲的调换区总的数量。
内部存款和储蓄器中的剧情被换出到调换区,而后又被换入到内部存款和储蓄器,但使用过的调换区尚未被隐瞒,
该数值即为这一个剧情已存在于内部存款和储蓄器中的沟通区的高低。
相应的内部存款和储蓄器再一次被换出时可不用再对交流区写入。

进程音信区,各列的意思如下: # 显示各类进度的详细音讯

序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进度全数者的客户id
e USECRUISER 进度全体者的客商名
f GROUP 进度全部者的组名
g TTY 运转进程的终点名。不是从终端运行的进度则显得为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最终动用的CPU,仅在多CPU景况下有意义
k %CPU 上次翻新到将来的CPU时间占领百分比
l TIME 进程使用的CPU时间累加,单位秒
m TIME+ 进度使用的CPU时间一同,单位1/100秒
n %MEM 进度使用的物理内存百分比
o VIRT 进程使用的设想内部存款和储蓄器总的数量,单位kb。VIRT=SWAP+RES
p SWAP 进度使用的设想内部存款和储蓄器中,被换出的大大小小,单位kb。
q RES 过程使用的、未被换出的情理内部存款和储蓄器大小,单位kb。RES=CODE+DATA
r CODE 可实行代码占用的情理内部存储器大小,单位kb
s DATA 可奉行代码以外的有的(数据段+栈)占用的物理内部存款和储蓄器大小,单位kb
t SHEnclave 分享内部存款和储蓄器大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一遍写入到今后,被改正过的页面数。
w S 进程景况。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=尸鬼进度 父进程在但并不等待子进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 职务标记,仿照效法 sched.h

}

列出正在占用swap的进度{

#!/bin/bash
echo -e "PIDttSwapttProc_Name"
# 拿出/proc目录下全体以数字为名的目录(进度名是数字才是经过,别的如sys,net等贮存的是其他信息卡塔尔国
for pid in `ls -l /proc | grep ^d | awk '{ print $9 }'| grep -v [^0-9]`
do
# 让进程释放swap的点子唯有八个:正是重启该进度。也许等其机动释放。放
# 要是经过会自动释放,那么大家就不会写脚本来找她了,找她都以因为她并未有机关释放。
# 所以大家要列出占用swap并须求重启的经过,可是init那些进程是系统里拥有进度的古人进度
# 重启init进度表示重启系统,那是相对不得以的,所以就不要检查评定她了,以防对系统形成影响。
if [ $pid -eq 1 ];then continue;fi
grep -q "Swap" /proc/$pid/smaps 2>/dev/null
if [ $? -eq 0 ];then
swap=$(grep Swap /proc/$pid/smaps
| gawk '{ sum+=$2;} END{ print sum }')
proc_name=$(ps aux | grep -w "$pid" | grep -v grep
| awk '{ for(i=11;i<=NF;i++){ printf("%s ",$i); }}')
if [ $swap -gt 0 ];then
echo -e "${pid}t${swap}t${proc_name}"
fi
fi
done | sort -k2 -n | awk -F't' '{
pid[NR]=$1;
size[NR]=$2;
name[NR]=$3;
}
END{
for(id=1;id<=length(pid);id++)
{
if(size[id]<1024)
printf("%-10st%15sKBt%sn",pid[id],size[id],name[id]);
else if(size[id]<1048576)
printf("%-10st%15.2fMBt%sn",pid[id],size[id]/1024,name[id]);
else
printf("%-10st%15.2fGBt%sn",pid[id],size[id]/1048576,name[id]);
}
}'

}

linux操作系统提供的时域信号{

kill -l # 查看linux提供的非确定性信号
trap "echo aaa" 2 3 15 # shell使用 trap 捕捉退出时域信号

# 发送实信号日常常有三种原因:
# 1(被动式) 内核检查实验到叁个连串事件.比如子进度退出会像父进度发送SIGCHLD复信号.键盘按下control+c会发送SIGINT能量信号
# 2(主动式) 通过系统调用kill来向内定进度发送实信号
# 进度甘休复信号 SIGTERM 和 SIGKILL 的差异: SIGTERM 相比友好,进度能捕捉那些复信号,依据你的须求来关闭程序。在关闭程序在此之前,您能够了结张开的记录文件和产生正在做的任务。在一些景况下,假设进度正在开展学业何况不可能暂停,那么进度能够忽略这些SIGTERM复信号。
# 如若多个进程收到二个SIGUS途达1时域信号,然后施行实信号绑定函数,第三个SIGUSOdyssey2时域信号又来了,第叁个时限信号未有被管理完结的话,第四个数字信号就能够舍弃。

SIGHUP 1 A # 终端挂起恐怕决定进度终止
SIGINT 2 A # 键盘终端进程(如control+c)
SIGQUIT 3 C # 键盘的退出键被按下
SIGILL 4 C # 违规命令
SIGABRT 6 C # 由abort(3)发出的脱离指令
SIGFPE 8 C # 浮点至极
SIGKILL 9 AEF # Kill非信号 立时结束
SIGSEGV 11 C # 无效的内部存款和储蓄器引用
SIGPIPE 13 A # 管道打碎: 写一个不曾读端口的管道
SIGALRM 14 A # 机械钟非实信号 由alarm(2)发出的功率信号
SIGTERM 15 A # 终止复信号,可让程序安全退出 kill -15
SIGUSR1 30,10,16 A # 顾客自定义时域信号1
SIGUSR2 31,12,17 A # 客商自定义信号2
SIGCHLD 20,17,18 B # 子进度结束自动向父进度发送SIGCHLD功率信号
SIGCONT 19,18,25 # 进程继续(曾被甘休的进程卡塔 尔(阿拉伯语:قطر‎
SIGSTOP 17,19,23 DEF # 终止进程
SIGTSTP 18,20,24 D # 调节终端(tty卡塔 尔(英语:State of Qatar)上按下甘休键
SIGTTIN 21,21,26 D # 后台进度思考从调整终端读
SIGTTOU 22,22,27 D # 后台进度盘算从调控终端写

缺省管理动作大器晚成项中的字母含义如下:
A 缺省的动作是终止进度
B 缺省的动作是忽略此数字信号,将该随机信号丢掉,不做管理
C 缺省的动作是终止进度并扩充内核印象转储(dump core),内核印象转储是指将经过数据在内部存款和储蓄器的印象和经过在底蕴结构中的部分内容以自然格式转储到文件系统,并且经过退出实践,这样做的功利是为技术员提供了便民,使得他们能够收获进程那个时候实施时的数据值,允许他们规定转储的来由,並且可以调整他们的次第。
D 缺省的动作是终止进度,步向停止处境之后还是能重复打开下去,常常是在调度的长河中(比方ptrace系统调用卡塔 尔(英语:State of Qatar)
E 实信号无法被抓获
F 频域信号无法被忽视
}

系统个性状态{

vmstat 1 9

r # 等待履行的天职位数量。当以此值超越了cpu线程数,就能够冒出cpu瓶颈。
b # 等待IO的历程数量,表示堵塞的历程。
swpd # 虚构内部存款和储蓄器已利用的深浅,如大于0,表示机装备理内存不足,如不是前后相继内部存款和储蓄器走漏,那么该晋级内部存款和储蓄器。
free # 空闲的物理内部存款和储蓄器的大大小小
buff # 已用的buff大小,对块设备的读写举行缓冲
cache # cache直接用来纪念大家开垦的公文,给文件做缓冲,(把空闲的物理内部存储器的后生可畏都部队分拿来做文件和目录的缓存,是为了抓好程序试行的性子,当程序行使内部存款和储蓄器时,buffer/cached会超级快地被使用。)
inact # 非活跃内部存款和储蓄器大小,即被标记可回笼的内存,区别于free和active -a选项时展现
active # 活跃的内部存款和储蓄器大小 -a选项时展现
si # 每秒从磁盘读入设想内存的大大小小,若是这一个值大于0,表示物理内部存款和储蓄器远远不足用也许内部存款和储蓄器败露,要寻觅耗内存进度解决掉。
so # 每秒虚构内部存款和储蓄器写入磁盘的大小,假如这么些值大于0,同上。
bi # 块设备每秒选拔的块数量,这里的块设备是指系统上具有的磁盘和其他块设备,默许块大小是1024byte
bo # 块设备每秒发送的块数量,比方读取文件,bo就要大于0。bi和bo平日都要临近0,不然正是IO过于频仍,须要调治。
in # 每秒CPU的间歇次数,满含时间暂停。in和cs这八个值越大,会看出由底蕴消耗的cpu时间会越多
cs # 每秒上下文切换次数,比如我们调用系统函数,就要开展上下文切换,线程的切换,也要经过上下文切换,那几个值要越小越好,太大了,要酌量调低线程也许经过的数据,比方在apache和nginx这种web服务器中,我们平时做品质测量试验时会进行几千并发依旧几万冒出的测量检验,选取web服务器的经过能够由进度可能线程的峰值一直下调,压测,直到cs到一个相当的小的值,这些进度和线程数正是比较方便的值了。系统调用也是,每一回调用系统函数,我们的代码就能够进来幼功空间,招致上下文切换,这一个是很功耗源,也要尽量防止频仍调用系统函数。上下文切换次数过多表示你的CPU大多数浪费在上下文切换,引致CPU干正经事的时日少了,CPU未有充足利用。
us # 客户进度实践消耗cpu时间(user time) us的值相比较高时,表明顾客进度消耗的cpu时间多,不过倘若长期超过四分之二的运用,那么大家就该思考优化程序算法或任何情势
sy # 系统CPU时间,如若太高,表示系统调用时间长,比如是IO操作频仍。
id # 空闲 CPU时间,平常的话,id + us + sy = 100,日常感到id是悠闲CPU使用率,us是客商CPU使用率,sy是系统CPU使用率。
wt # 等待IOCPU时间。Wa过高时,表达io等待相比严重,那可能是由于磁盘大批量随机拜候变成的,也可以有超大大概是磁盘的带宽现身瓶颈。

假定 r 日常超过4,且id常常少于40,表示cpu的载重相当的重。
举例 pi po 长时间不等于0,表示内部存款和储蓄器不足。
只要 b 队奇瓦瓦常当先3,表示io质量不佳。

}

}

日志管理{

history # 历时命令暗中同意1000条
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 让history命令突显具体时间
history -c # 消逝记录命令
cat $HOME/.bash_history # 历史命令记录文件
lastb -a # 列出登陆系统败北的客商相关新闻 清空二进制日志记录文件 echo > /var/log/btmp
last # 查看登录过的客户消息 清空二进制日志记录文件 echo > /var/log/wtmp 暗中认可展开乱码
who /var/log/wtmp # 查看登入过的客户新闻
lastlog # 客商最终登陆的小时
tail -f /var/log/messages # 系统日志
tail -f /var/log/secure # ssh日志

}

selinux{

sestatus -v # 查看selinux状态
getenforce # 查看selinux模式
setenforce 0 # 设置selinux为超计划生育情势(可防止阻止一些操作)
semanage port -l # 查看selinux端口节制法规
semanage port -a -t http_port_t -p tcp 8000 # 在selinux中登记端口类型
vi /etc/selinux/config # selinux配置文件
SELINUX=enfoceing # 关闭selinux 把其修正为 SELINUX=disabled

}

翻开剩余内部存款和储蓄器{

free -m
#-/+ buffers/cache: 6458 1649
#6458M为实际使用内部存款和储蓄器 1649M为实际剩余内部存储器(剩余内部存储器+缓存+缓冲器)
#linux会利用具备的结余内存作为缓存,所以要确定保障linux运维速度,就须求确定保障内部存款和储蓄器的缓存大小

}

系统新闻{

uname -a # 查看Linux内核版本信息
cat /proc/version # 查看内核版本
cat /etc/issue # 查看系统版本
lsb_release -a # 查看系统版本 需安装 centos-release
locale -a # 列出装有语系
locale # 当前境况变量中享有编码
hwclock # 查看时间
who # 当前在线客户
w # 当前在线顾客
whoami # 查看当前客商名
logname # 查看最首先登场录客户名
uptime # 查看服务器运行时间
sar -n DEV 1 10 # 查看网卡网速流量
dmesg # 显示开机音信
lsmod # 查看内核模块

}

硬件消息{

more /proc/cpuinfo # 查看cpu信息
lscpu # 查看cpu信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看cpu型号和逻辑主旨数
getconf LONG_BIT # cpu运转的位数
cat /proc/cpuinfo | grep 'physical id' |sort| uniq -c # 物理cpu个数
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l # 结果大于0援救六10位
cat /proc/cpuinfo|grep flags # 查看cpu是否扶植虚构化 pae扶植半设想化 英特尔VT 辅助全虚拟化
more /proc/meminfo # 查看内部存款和储蓄器音讯
dmidecode # 查看周详硬件音讯
dmidecode | grep "Product Name" # 查看服务器型号
dmidecode | grep -P -A5 "Memorys+Device" | grep Size | grep -v Range # 查看内部存款和储蓄器插槽
cat /proc/mdstat # 查看软raid信息
cat /proc/scsi/scsi # 查看Dell硬raid音信(IBM、HP要求合法检查评定工具)
lspci # 查看硬件音信
lspci|grep RAID # 查看是或不是扶助raid
lspci -vvv |grep Ethernet # 查看网卡型号
lspci -vvv |grep Kernel|grep driver # 查看驱动模块
modinfo tg2 # 查看驱动版本(驱动模块)
ethtool -i em1 # 查看网卡驱动版本
ethtool em1 # 查看网卡式磁带宽

}

极限神速键{

Ctrl+A   # 行前
Ctrl+E   # 行尾
Ctrl+S   # 终端锁屏
Ctrl+Q  # 解锁屏
Ctrl+D    # 退出

}

开机运行方式{

vi /etc/inittab
id:3:initdefault: # 3为多顾客命令
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now # 注释此行 制止 ctrl+alt+del 关闭Computer

}

终端提醒展现{

echo $PS1 # 情形变量调整提醒呈现
PS1='[u@ H w A @#]$'
PS1='[u@h W]$'

}

定时义务{

at 5pm + 3 days /bin/ls # 单次定期职分 钦点八日后早上5:00试行/bin/ls

crontab -e # 编辑周期义务
#分钟 时辰 天 月 星期 命令或脚本
1,30 1-3/2 * * * 命令或脚本 >> file.log 2>&1
echo "40 7 * * 2 /root/sh">>/var/spool/cron/root # 直接将下令写入周期任务
crontab -l # 查看自动周期性任务
crontab -r # 删除自动周期性职务
cron.deny和cron.allow # 禁绝或同意客户选择周期任务
service crond start|stop|restart # 运营自动周期性服务

}

date{

星期日[SUN] 星期一[MON] 星期二[TUE] 星期三[WED] 星期四[THU] 星期五[FRI] 星期六[SAT]
一月[JAN] 二月[FEB] 三月[MAR] 四月[APR] 五月[MAY] 六月[JUN] 七月[JUL] 八月[AUG] 九月[SEP] 十月[OCT] 十一月[NOV] 十二月[DEC]

date -s 20091112 # 设日期
date -s 18:30:50 # 设时间
date -d "7 days ago" +%Y%m%d # 7天前天期
date -d "5 minute ago" +%H:%M # 5分钟前时间
date -d "1 month ago" +%Y%m%d # 一个月前
date -d '1 days' +%Y-%m-%d # 一天后
date -d '1 hours' +%H:%M:%S # 大器晚成钟头后
date +%Y-%m-%d -d '20110902' # 日期格式调换
date +%Y-%m-%d_%X # 日期和岁月
date +%N # 纳秒
date -d "2012-08-13 14:00:23" +%s # 换算成秒总结(一九七〇年现今的秒数)
date -d "@1363867952" +%Y-%m-%d-%T # 将时间戳换算成日期
date -d "1970-01-01 UTC 1363867952 seconds" +%Y-%m-%d-%T # 将时间戳换算成日期
date -d "`awk -F. '{print $1}' /proc/uptime` second ago" +"%Y-%m-%d %H:%M:%S" # 格式化系统运维时间(多少秒前)

}

limits.conf{

ulimit -SHn 65535 # 有的时候设置文件陈说符大小 进度最大张开文件柄数 还可能有socket最洛桑接数, 等同安插 nofile
ulimit -SHu 65535 # 偶尔设置顾客最大进程数
ulimit -a # 查看

/etc/security/limits.conf

# 文件陈诉符大小 open files
# lsof |wc -l 查看当前文件句柄数使用数据
* soft nofile 16384 # 设置太大,进度使用过多会把机器拖死
* hard nofile 32768

# 顾客最大进度数 max user processes
# echo $((`ps uxm |wc -l`-`ps ux |wc -l`)) 查看当前顾客占用的长河数 [包罗线程]
user soft nproc 16384
user hard nproc 32768

# 假设/etc/security/limits.d/有配备文件,将会覆盖/etc/security/limits.conf里的布置
# 即/etc/security/limits.d/的配置文件里就毫无有同等的参量设置
/etc/security/limits.d/90-nproc.conf # centos6.3的默许那个文件会覆盖 limits.conf
user soft nproc 16384
user hard nproc 32768

sysctl -p # 校勘配置文件后让系统生效

}

百万长链接设置{

# 内部存款和储蓄器消耗供给超级大
vim /root/.bash_profile
# 增添如下2行,退出bash重新登录
echo 20000500 > /proc/sys/fs/nr_open
ulimit -n 10000000

}

libc.so故障修复{

# 由于进级glibc引致libc.so不稳固,陡然报错,幸好还会有未脱离的尖峰
grep: error while loading shared libraries: /lib64/libc.so.6: ELF file OS ABI invalid

# 看看当前系统有个别许版本 libc.so
ls /lib64/libc-[tab]

# 修正意况变量指向别的 libc.so 文件测量试验
export LD_PRELOAD=/lib64/libc-2.7.so # 若是不修改LD_PRELOAD变量,ln无法用,须求接纳 /sbin/sln 命令做链接

# 当前只要好使了,在实行上边强制替换软链接。如不佳使,测验其余版本的libc.so文件
ln -f -s /lib64/libc-2.7.so /lib64/libc.so.6

}

sudo{

echo myPassword | sudo -S ls /tmp # 直接输入sudo的密码非人机联作,从专门的学业输入读取密码并不是极限设备
visudo # sudo命令权限增加 /etc/sudoers
用户 别名(可用all)=NOPASSWD:命令1,命令2
user ALL=NOPASSWD:/bin/su # 免root密码切换root身份
wangming linuxfan=NOPASSWD:/sbin/apache start,/sbin/apache restart
UserName ALL=(ALL) ALL
UserName ALL=(ALL) NOPASSWD: ALL
peterli ALL=(ALL) NOPASSWD:/sbin/service
Defaults requiretty # sudo分裂意后台运行,注释此行既允许
Defaults !visiblepw # sudo分裂意远程,去掉!既允许

}

grub开机运维项增加{

vim /etc/grub.conf
title ms-dos
rootnoverify (hd0,0)
chainloader +1

}

stty{

#stty时二个用来退换并打字与印刷终端行设置的常用命令

stty iuclc # 在指令行下禁绝出口大写
stty -iuclc # 恢复生机出口大写
stty olcuc # 在指令行下禁绝出口小写
stty -olcuc # 复苏出口小写
stty size # 打字与印刷出极端的行数和列数
stty eof "string" # 改变系统私下认可ctrl+D来代表文件的告竣
stty -echo # 禁止回显
stty echo # 展开回显
stty -echo;read;stty echo;read # 测量试验禁止回显
stty igncr # 忽视回车符
stty -igncr # 恢复生机回车符
stty erase '#' # 将#设置为退格字符
stty erase '^?' # 恢复生机员退伍格字符

定期输入{

timeout_read(){
timeout=$1
old_stty_settings=`stty -g`  # save current settings
stty -icanon min 0 time 100  # set 10seconds,not 100seconds
eval read varname   # =read $varname
stty "$old_stty_settings"   # recover settings
}

read -t 10 varname # 更简约的议程正是应用read命令的-t选项

}

检查实验顾客开关{

#!/bin/bash
old_tty_settings=$(stty -g) # 保存老的安装(为何?).
stty -icanon
Keypress=$(head -c1) # 可能利用$(dd bs=1 count=1 2> /dev/null)
echo "Key pressed was ""$Keypress""."
stty "$old_tty_settings" # 恢复生机老的设置.
exit 0

}

}

iptables{

内建四个表:nat mangle 和 filter
filter预设准绳表,有INPUT、FO途乐WA大切诺基D 和 OUTPUT 七个准则链
vi /etc/sysconfig/iptables # 配置文件
INPUT # 进入
FORWARD # 转发
OUTPUT # 出去
ACCEPT # 将封包放行
REJECT # 拦阻该封包
DROP # 屏弃封包不予管理
-A # 在所选用的链(INPUT等)末增多一条或更加多准绳
-D # 删除一条
-E # 修改
-p # tcp、udp、icmp 0相当于全体all !取反
-P # 设置缺省攻略(与全部链都不相配强制行使此政策)
-s # IP/掩码 (IP/24) 主机名、网络名和通晓的IP地址 !取反
-j # 目的跳转,即刻间调控制包的时局的专项使用内建目的
-i # 进入的(网络)接口 [名称] eth0
-o # 输出接口[名称]
-m # 模块
--sport # 源端口
--dport # 目的端口

iptables -F # 将防火墙中的准则条款沦亡掉 # 注意: iptables -P INPUT ACCEPT
iptables-restore < 法规文件 # 导入防火墙法规
/etc/init.d/iptables save # 保存防火墙设置
/etc/init.d/iptables restart # 重启防火墙服务
iptables -L -n # 查观念规
iptables -t nat -nL # 查看转载

iptables实例{

iptables -L INPUT # 列出某规则链中的持有准绳
iptables -X allowed # 删除有个别准则链 ,不加准绳链,消除全体非内建的
iptables -Z INPUT # 将封包计数器归零
iptables -N allowed # 定义新的法规链
iptables -P INPUT DROP # 定义过滤政策
iptables -A INPUT -s 192.168.1.1 # 比对封包的发源IP # ! 192.168.0.0/24 ! 反向相比
iptables -A INPUT -d 192.168.1.1 # 比对封包的指标地IP
iptables -A INPUT -i eth0 # 比对封包是从哪片网卡进入
iptables -A FORWARD -o eth0 # 比对封包要从哪片网卡送出 eth+表示全部的网卡
iptables -A INPUT -p tcp # -p ! tcp 扫除tcp以外的udp、icmp。-p all全部类型
iptables -D INPUT 8 # 从有个别准则链中删除一条法则
iptables -D INPUT --dport 80 -j DROP # 从有个别法规链中删除一条准绳
iptables -R INPUT 8 -s 192.168.0.1 -j DROP # 代替现行反革命法则
iptables -I INPUT 8 --dport 80 -j ACCEPT # 插入一条法则
iptables -A INPUT -i eth0 -j DROP # 此外情状不一致敬
iptables -A INPUT -p tcp -s IP -j DROP # 禁绝钦赐IP访问
iptables -A INPUT -p tcp -s IP --dport port -j DROP # 禁止钦赐IP访谈端口
iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT # 允许在IP访谈钦命端口
iptables -A INPUT -p tcp --dport 22 -j DROP # 禁止使用某端口
iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP # 禁止icmp端口
iptables -A INPUT -i eth0 -p icmp -j DROP # 禁止icmp端口
iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP # 阻止全部未有经过你系统授权的TCP连接
iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT # IP包流量节制
iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT # 除192.168.62.1外,制止任哪个人ping作者的主机
iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --rttl --name WEB --rsource -j DROP # 可防御cc攻击(未测试)

}

iptables配置实例文件{

# Generated by iptables-save v1.2.11 on Fri Feb 9 12:10:37 2007
*filter
:INPUT ACCEPT [637:58967]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5091:1301533]
# 允许的IP或IP段访问 提出多少个
-A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
-A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
# 开放门户开放端口
-A INPUT -p tcp --dport 80 -j ACCEPT
# 钦赐某端口针对IP开放
-A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
# 拒却全数左券(INPUT允许)
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
# 允许已构建的或相关连的畅通
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 拒绝ping
-A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Feb 9 12:10:37 2007

}

iptables配置实例{

# 允许某段IP访谈任何端口
iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
# 设定预设法则(推却全部的数据包,再允许须求的,如只做WEB服务器.依然推荐三个链都以DROP)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 注意: 直接设置那三条会掉线
# 开启22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 借使OUTPUT 设置成DROP的,要写上上边一条
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
# 注:不写引致不能够SSH.其余的端口同样,OUTPUT设置成DROP的话,也要增加一条链
# 如若张开了web服务器,OUTPUT设置成DROP的话,相近也要增添一条链
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
# 做WEB服务器,开启80端口 ,其余同理
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 做邮件服务器,开启25,110端口
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 允许icmp包通过,允许ping
iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)
iptables -A INPUT -p icmp -j ACCEPT (INPUT设置成DROP的话)
# 允许loopback!(不然会变成DNS无法平常关闭等主题素材)
IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

}

centos6的iptables基本配置{
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 222.186.135.61 -p tcp -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
}

增加网段转载{

# 举个例子通过vpn上网
echo 1 > /proc/sys/net/ipv4/ip_forward # 在幼功里展开ip转载功用
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE # 增加网段转发
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o eth0 -j SNAT --to 192.168.10.158 # 原IP网段经过哪个网卡IP出去
iptables -t nat -nL # 查看转载

}

端口映射{

# 内网通过有外网IP的机器映射端口
# 内网主机增添路由
route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111 # 内网需求增加暗中认可网关,並且网关开启转发
# 网关主机
echo 1 > /proc/sys/net/ipv4/ip_forward # 在根本里张开ip转载成效
iptables -t nat -A PREROUTING -d 外网IP -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22 # 进入
iptables -t nat -A POSTROUTING -s 10.10.20.0/24 -j SNAT --to 外网IP # 转载回去
iptables -t nat -nL # 查看转载

}

}

}

4 服务{

/etc/init.d/sendmail start # 运行服务
/etc/init.d/sendmail stop # 关闭服务
/etc/init.d/sendmail status # 查看服务当前境况
/date/mysql/bin/mysqld_safe --user=mysql & # 运转mysql后台运转
vi /etc/rc.d/rc.local # 开机运行实行 可用于开机运维脚本
/etc/rc.d/rc3.d/S55sshd # 开机运转和关机关闭服务连接 # S开机start K关机stop 55品级 后跟服务名
ln -s -f /date/httpd/bin/apachectl /etc/rc.d/rc3.d/S15httpd # 将运维程序脚本连接到开机运行目录
ipvsadm -ln # lvs查看后端负运载飞机并发
ipvsadm -C # lvs解除法规
xm list # 查看xen设想主机列表
virsh # 虚拟化(xenkvm)管理工科具 yum groupinstall Virtual*
./bin/httpd -M # 查看httpd加载模块
httpd -t -D DUMP_MODULES # rpm包httpd查看加载模块
echo 内容| /bin/mail -s "标题" 收件箱 -f 发件人 # 发送邮件
"`echo "内容"|iconv -f utf8 -t gbk`" | /bin/mail -s "`echo "标题"|iconv -f utf8 -t gbk`" 收件箱 # 解决邮件乱码
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg # 检查测量检验nagios配置文件

chkconfig{

chkconfig 服务名 on|off|set # 设置非独立服务启状态
chkconfig --level 35 httpd off # 让服务不自动运转
chkconfig --level 35 httpd on # 让服务机关运行 35指的是运作品级
chkconfig --list # 查看全数服务的启航状态
chkconfig --list |grep httpd # 查看有个别服务的运转状态
chkconfig –-list [服务名称] # 查看服务的境况

}

nginx{

yum install -y make gcc openssl-devel pcre-devel bzip2-devel libxml2 libxml2-devel curl-devel libmcrypt-devel libjpeg libjpeg-devel libpng libpng-devel openssl

groupadd nginx
useradd nginx -g nginx -M -s /sbin/nologin

mkdir -p /opt/nginx-tmp

wget
tar fxz ngx_cache_purge-1.6.tar.gz
# ngx_cache_purge 解除钦定url缓存
# 借使一个U奇骏L为
# 通过访谈 就足以防除该U本田CR-VL的缓存。

tar zxvpf nginx-1.4.4.tar.gz
cd nginx-1.4.4

# ./configure --help
# --with # 暗中同意不加载 需点名编写翻译此参数才使用
# --without # 默许加载,可用此参数禁止使用
# --add-module=path # 加多模块的路线
# --add-module=/opt/ngx_module_upstream_check # nginx 代理状态页面
# ngx_module_upstream_check 编写翻译前亟需打对应版本补丁 patch -p1 < /opt/nginx_upstream_check_module/check_1.2.6+.patch
# --add-module=/opt/ngx_module_memc # 将诉求页面数据寄存在 memcached中
# --add-module=/opt/ngx_module_lua # 支持lua脚本 yum install lua-devel lua

./configure
--user=nginx
--group=nginx
--prefix=/usr/local/nginx
--pid-path=/usr/local/nginx/nginx.pid
--lock-path=/usr/local/nginx/nginx.lock
--with-http_ssl_module
--with-http_realip_module
--with-http_gzip_static_module
--with-http_stub_status_module
--add-module=/opt/ngx_cache_purge-1.6
--http-client-body-temp-path=/opt/nginx-tmp/client
--http-proxy-temp-path=/opt/nginx-tmp/proxy
--http-fastcgi-temp-path=/opt/nginx-tmp/fastcgi
--http-uwsgi-temp-path=/opt/nginx-tmp/uwsgi
--http-scgi-temp-path=/opt/nginx-tmp/scgi

make && make install

/usr/local/nginx/sbin/nginx –t # 检查Nginx配置文件 但并不实行
/usr/local/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf # 检查Nginx配置文件
/usr/local/nginx/sbin/nginx # 启动nginx
/usr/local/nginx/sbin/nginx -s reload # 重载配置
/usr/local/nginx/sbin/nginx -s stop # 关闭nginx服务

}

httpd{

编写翻译参数{

# so模块用来提供DSO援救的apache宗旨模块
# 假如编写翻译中隐含其余DSO模块,则mod_so会被活动包涵进为主。
# 倘若指望宗旨能够装载DSO,但不实际编写翻译任何DSO模块,则需明显钦赐"--enable-so=static"

./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite --enable-forward # 实例编写翻译

--with-mpm=worker # 已worker情势运维
--with-apxs=/usr/local/apache/bin/apxs # 制作apache的动态模块DSO rpm包 httpd-devel #编写翻译模块 apxs -i -a -c mod_foo.c
--enable-so # 让Apache能够扶植DSO情势
--enable-mods-shared=most # 告诉编写翻译器将持有正规模块都动态编写翻译为DSO模块
--enable-rewrite # 帮助地点重写功用
--enable-module=most # 用most能够将意气风发部分有时用的,不在缺省常用模块中的模块编写翻译进来
--enable-mods-shared=all # 意思是动态加载全部模块,如若去掉-shared话,是静态加载全数模块
--enable-expires # 能够增进文件过期的限量,有效减轻服务器压力,缓存在顾客端,保质期内不会重新做客服务器,除非按f5刷新,但也促成文件更新不如时
--enable-deflate # 压缩作用,网页可以高达百分之四十的压缩,节省带宽花销,但会对cpu压力有几许增加
--enable-headers # 文件头新闻改写,压缩功能须求
--disable-MODULE # 禁止使用MODULE模块(仅用于着力模块)
--enable-MODULE=shared # 将MODULE编译为DSO(可用于具有模块)
--enable-mods-shared=MODULE-LIST # 将MODULE-LIST中的全体模块都编写翻译成DSO(可用于具有模块)
--enable-modules=MODULE-LIST # 将MODULE-LIST静态连接进基本(可用于具有模块)

# 上述 MODULE-LIST 可以是:
1、用引号界定並且用空格分隔的模块名列表 --enable-mods-shared='headers rewrite dav'
2、"most"(大非常多模块) --enable-mods-shared=most
3、"all"(全部模块)

}

转发{

#本着非80端口的央求管理
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) [L,R]

RewriteCond %{HTTP_HOST} ^ss.aa.com [NC]
RewriteRule ^(.*) [L,R=301]
#RewriteRule 只对?前管理,所以会把?后的都保存下去
#在倒车的前面地址后加?就能够收回RewriteRule保留的字符
#CRUISER的含义是redirect,即重定向,该央浼不会再被apache交给后端管理,而是间接再次来到给浏览器举行重定向跳转。301是回到的http状态码,具体能够参照他事他说加以考查http rfc文书档案,跳转都以3XX。
#L是last,即最终叁个rewrite法则,如若诉求被此准则命中,将不会一连再向下相称其余准绳。

}

}

mysql源码安装{

groupadd mysql
useradd mysql -g mysql -M -s /bin/false
tar zxvf mysql-5.0.22.tar.gz
cd mysql-5.0.22
./configure --prefix=/usr/local/mysql
--with-client-ldflags=-all-static
--with-mysqld-ldflags=-all-static
--with-mysqld-user=mysql
--with-extra-charsets=all
--with-unix-socket-path=/var/tmp/mysql.sock
make && make install
# 生成mysql客户数据库和表文件,在安装包中输入
scripts/mysql_install_db --user=mysql
vi ~/.bashrc
export PATH="$PATH: /usr/local/mysql/bin"
# 配置文件,有large,medium,small四个,依据机器品质选拔
cp support-files/my-medium.cnf /etc/my.cnf
cp support-files/mysql.server /etc/init.d/mysqld
chmod 700 /etc/init.d/mysqld
cd /usr/local
chmod 750 mysql -R
chgrp mysql mysql -R
chown mysql mysql/var -R
cp /usr/local/mysql/libexec/mysqld mysqld.old
ln -s /usr/local/mysql/bin/mysql /sbin/mysql
ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc3.d/S15mysql5
ln -s -f /usr/local/mysql/bin/mysqld_safe /etc/rc.d/rc0.d/K15mysql5

}

mysql常用命令{

./mysql/bin/mysqld_safe --user=mysql & # 启动mysql服务
./mysql/bin/mysqladmin -uroot -p -S ./mysql/data/mysql.sock shutdown # 停止mysql服务
mysqlcheck -uroot -p -S mysql.sock --optimize --databases account # 检查、修复、优化MyISAM表
mysqlbinlog slave-relay-bin.000001 # 查看二进制日志(报错加相对路径)
mysqladmin -h myhost -u root -p create dbname # 创立数据库

flush privileges; # 刷新
show databases; # 展现全数数据库
use dbname; # 展开数据库
show tables; # 呈现选中数据库中颇有的表
desc tables; # 查看表结构
drop database name; # 删除数据库
drop table name; # 删除表
create database name; # 创制数据库
select 列名称 from 表名称; # 查询
show grants for repl; # 查看客商权限
show processlist; # 查看mysql进程
select user(); # 查看全体客户
show slave statusG; # 查看主从状态
show variables; # 查看全数参数变量
show status; # 运行状态
show table status # 查看表的内燃机状态
drop table if exists user # 表存在就删除
create table if not exists user # 表不设有就创办
select host,user,password from user; # 查询顾客权限 先use mysql
create table ka(ka_id varchar(6),qianshu int); # 创建表
SHOW VARIABLES LIKE 'character_set_%'; # 查看系统的字符集和排序格局的设定
show variables like '%timeout%'; # 查看超时(wait_timeout)
delete from user where user=''; # 删除空客商
delete from user where user='sss' and host='localhost' ; # 删除客商
drop user 'sss'@'localhost'; # 使用此格局删除客户特别可信
ALTER TABLE mytable ENGINE = MyISAM ; # 改良现成的表使用的仓库储存引擎
SHOW TABLE STATUS from 库名 where Name='表名'; # 查询表引擎
CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB # 创造表钦点期存款款和储蓄引擎的连串(MyISAM或INNODB)
grant replication slave on *.* to '用户'@'%' identified by '密码'; # 创建主从复制顾客
ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction); # 增添索引
alter table name add column accountid(列名) int(11) NOT NULL(字段不为空); # 插入字段
update host set monitor_state='Y',hostname='xuesong' where ip='192.168.1.1'; # 更新数据

自增表{

create table oldBoy (id INTEGER PRIMARY KEY AUTO_INCREMENT, name CHAR(30) NOT NULL, age integer , sex CHAR(15) ); # 创制自增表
insert into oldBoy(name,age,sex) values(%s,%s,%s) # 自增插入数据

}

登录mysql的命令{

# 格式: mysql -h 主机地址 -u 客户名 -p 客商密码
mysql -h110.110.110.110 -P3306 -uroot -p
mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A --default-character-set=GBK

}

shell执行mysql命令{

mysql -u root -p'123' xuesong < file.sql # 针对钦赐库实施sql文件中的语句,好处没有必要转义特殊符号,一条语句能够换行.不钦命库实践时语句中须要先use
mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "
use $dbname;
delete from data where date=('$date1');
" # 推行多条mysql命令
mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid int(11) NOT NULL;flush privileges;" # 不登入mysql插入字段

}

备份数据库{

mysqldump -h host -u root -p --default-character-set=utf8 dbname >dbname_backup.sql # 不包罗库名,还原需先成立库,在use
mysqldump -h host -u root -p --database --default-character-set=utf8 dbname >dbname_backup.sql # 富含库名,还原无需创建库
/bin/mysqlhotcopy -u root -p # mysqlhotcopy只好备份MyISAM引擎
mysqldump -u root -p -S mysql.sock --default-character-set=utf8 dbname table1 table2 > /data/db.sql # 备份表
mysqldump -uroot -p123 -d database > database.sql # 备份数据库结构

innobackupex --user=root --password="" --defaults-file=/data/mysql5/data/my_3306.cnf --socket=/data/mysql5/data/mysql.sock --slave-info --stream=tar --tmpdir=/data/dbbackup/temp /data/dbbackup/ 2>/data/dbbackup/dbbackup.log | gzip 1>/data/dbbackup/db50.tar.gz # xtrabackup备份需单独安装软件 优点: 速度快,压力小,可直接过来主从复制

}

重整旗鼓数据库{

mysql -h host -u root -p dbname < dbname_backup.sql
source 路径.sql # 登陆mysql后还原sql文件

}

赋权限{

# 指定IP: $IP 本机: localhost 所有IP地址: % # 平时钦定多条
grant all on zabbix.* to user@"$IP"; # 对现存账号赋予权力
grant select on database.* to user@"%" Identified by "passwd"; # 付与查询权限(没有客户,间接开立)
grant all privileges on database.* to user@"$IP" identified by 'passwd'; # 付与钦赐IP钦命客户具备权力(不容许对现阶段库给其余客户赋权限)
grant all privileges on database.* to user@"localhost" identified by 'passwd' with grant option; # 授予本机钦点客商具有权力(允许对当前库给其余顾客赋权限)
grant select, insert, update, delete on database.* to user@'ip'identified by "passwd"; # 开放管理操作指令
revoke all on *.* from user@localhost; # 回笼权限

}

转移密码{

update user set password=password('passwd') where user='root'
mysqladmin -u root password 'xuesong'

}

mysql忘记密码后重新设置{

cd /data/mysql5
/data/mysql5/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
use mysql;
update user set password=password('123123') where user='root';

}

mysql主从复制失利苏醒{

slave stop;
reset slave;
change master to master_host='10.10.10.110',master_port=3306,master_user='repl',master_password='repl',master_log_file='master-bin.000010',master_log_pos=107,master_connect_retry=60;
slave start;

}

sql语句使用变量{

use xuesong;
set @a=concat('my',weekday(curdate())); # 组适时间变量
set @sql := concat('CREATE TABLE IF NOT EXISTS ',@a,'( id INT(11) NOT NULL )'); # 组合sql语句
select @sql; # 查看语句
prepare create_tb from @sql; # 准备
execute create_tb; # 执行

}

检验mysql主从复制延迟{

1、在从库准时实行更新主库中的一个timeout数值
2、同时抽取从库中的timeout值相比较剖断从库与主库的推移

}

mysql慢查询{

翻开慢查询日志{

# 配置文件 /etc/my.conf
[mysqld]
log-slow-queries=/var/lib/mysql/slowquery.log # 钦命日志文件贮存地方,可感到空,系统会给一个缺省的公文host_name-slow.log
long_query_time=5 # 记录当先的时刻,默认为10s
log-queries-not-using-indexes # log下来未有行使索引的query,能够依照意况决定是不是张开 可不加
log-long-format # 假如设置了,全体未有利用索引的查询也将被记录 可不加
# 直接更改生效
show variables like "%slow%"; # 查看慢查询状态
set global slow_query_log='ON'; # 开启慢查询日志 变量或许分裂,看上句询问出来的变量

}

mysqldumpslow慢查询日志查看{

-s # 是order的相继,富含看了代码,首要有 c,t,l,r和ac,at,al,ar,分别是安份守己query次数,时间,lock的年华和再次来到的记录数来排序,前边加了a的时倒序
-t # 是top n的意味,即为重返前面多少条的多少
-g # 后面能够写一个正则相称方式,大小写不灵敏的

mysqldumpslow -s c -t 20 host-slow.log # 访谈次数最多的十七个sql语句
mysqldumpslow -s r -t 20 host-slow.log # 再次回到记录集最多的二十个sql
mysqldumpslow -t 10 -s t -g "left join" host-slow.log # 依照时间回来前10条里面包蕴左连接的sql语句

show global status like '%slow%'; # 查看以往以此session有稍许个慢查询
show variables like '%slow%'; # 查看慢查询日志是还是不是张开,假若slow_query_log和log_slow_queries显示为on,表达服务器的慢查询日志已经拉开
show variables like '%long%'; # 查看超时阀值
desc select * from wei where text='xishizhaohua'G; # 扫描整张表 tepe:ALL 未有动用索引 key:NULL
create index text_index on wei(text); # 创设索引

}

}

mysql操作次数查询{

select * from information_schema.global_status;

com_select
com_delete
com_insert
com_update

}

}

mongodb{

一、启动{

# 不运行认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/
# 运行认证
./mongod --port 27017 --fork --logpath=/opt/mongodb/mongodb.log --logappend --dbpath=/opt/mongodb/data/ --auth

# 配置文件措施运营
cat /opt/mongodb/mongodb.conf
port=27017 # 端口号
fork=true # 以守护进度的措施运维,成立服务器进程
auth=true # 开启客户认证
logappend=true # 日志选拔扩大形式
logpath=/opt/mongodb/mongodb.log # 日志输出文件路线
dbpath=/opt/mongodb/data/ # 数据库路线
shardsvr=true # 设置是还是不是分片
maxConns=600 # 数据库的最特古西加尔巴接数
./mongod -f /opt/mongodb/mongodb.conf

# 别的参数
bind_ip # 绑定IP 使用mongo登入须求钦定对应IP
journal # 开启日志作用,收缩单机故障的东山复起时间,替代dur参数
syncdelay # 系统一同刷新磁盘的年月,暗许60秒
directoryperdb # 每个db单独存放目录,提出设置.与mysql独立表空间雷同
repairpath # 推行repair时的一时目录.倘若没打开journal,现身相当重启,必需实行repair操作
# mongodb未有参数设置内部存款和储蓄器大小.使用os mmap机制缓存数据文件,在数据量不超越内部存款和储蓄器的情形下,功效相当的高.数据量超越系统可用内部存储器会影响写入质量

}

二、关闭{

# 方法一:登录mongodb
./mongo
use admin
db.shutdownServer()

# 方法:kill传递非时域信号 两种皆可
kill -2 pid
kill -15 pid

}

三、开启认证与客商管理{

./mongo # 先登录
use admin # 切换到admin库
db.addUser("root","123456") # 创造客商
db.addUser('zhansan','pass',true) # 假若顾客的readOnly为true那么那些客户只可以读取数据,增多叁个readOnly客户zhansan
./mongo 127.0.0.1:27017/mydb -uroot -p123456 # 再度登陆,只好针对顾客所在库登陆
#就算是一流管理员,但是admin不可能一贯登陆别的数据库,不然报错
#Fri Nov 22 15:03:21.886 Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" } at src/mongo/shell/db.js:228
show collections # 查看链接状态 再一次登陆使用如下命令,彰显错误未经授权
db.system.users.find(); # 查看成立顾客新闻
db.system.users.remove({user:"zhansan"}) # 删除客户

#平复密码只须求重启mongodb 不加--auth参数

}

四、登录{

192.168.1.5:28017 # http登入后可查看情形
./mongo # 暗中认可登入后展开 test 库
./mongo 192.168.1.5:27017/databaseName # 直接连接有个别库 空中楼阁则开创 运转认证须要内定对应库才可登入

}

五、查看情形{

#签到后实践命令查看情形
db.runCommand({"serverStatus":1})
globalLock # 表示全局写入锁侵吞了服务器多少日子(皮秒)
mem # 包蕴服务器内部存款和储蓄器映射了不怎么多少,服务器进度的虚构内部存款和储蓄器和常驻内部存款和储蓄器的挤占情形(MB)
indexCounters # 表示B树在磁盘检索(misses)和内部存款和储蓄器检索(hits)的次数.倘诺那五个比值初始进步,将在考虑增多内部存款和储蓄器了
backgroudFlushing # 表示后台做了某个次fsync以至用了多少时间
opcounters # 包蕴各类关键擦撞的次数
asserts # 总计了断言的次数

#意况音信从服务器运行上马总括,倘若过大就能够重置,发送重新设置,全部计数都会重新初始化,asserts中的roolovers值扩展

#mongodb自带的下令
./mongostat
insert #每秒插入量
query #每秒查询量
update #每秒更新量
delete #每秒删除量
locked #锁定量
qr|qw #客商端询问排队长度(读|写)
ar|aw #活泼顾客端量(读|写)
conn #连接数
time #当前岁月

}

六、常用命令{

db.listCommands() # 当前MongoDB帮忙的装有命令(相像可透过运维命令db.runCommand({"listCommands" : `1})来查询全数命令卡塔 尔(英语:State of Qatar)

db.runCommand({"buildInfo" : 1}) # 再次来到MongoDB服务器的版本号和劳务器OS的连锁消息。
db.runCommand({"collStats" : 集合名}) # 重临该集合的计算新闻,包罗数据大小,已分配存款和储蓄空间尺寸,索引的朗朗上口等。
db.runCommand({"distinct" : 集合名, "key" : 键, "query" : 查询文书档案}) # 再次回到特定文书档案全数切合查询文书档案钦命条件的文书档案的钦定键的有所差异的值。
db.runCommand({"dropDatabase" : 1}) # 清空当前数据库的消息,包涵删除全体的聚众和目录。
db.runCommand({"isMaster" : 1}) # 检查本服务器是主服务器依然从服务器。
db.runCommand({"ping" : 1}) # 检查服务器链接是不是健康。纵然服务器上锁,该命令也会马上回到。
db.runCommand({"repaireDatabase" : 1}) # 对脚下数据库实行修复并压缩,借使数据库非常大,那几个命令会非常耗费时间。
db.runCommand({"serverStatus" : 1}) # 查看那台服务器的拘留总结消息。
# 有个别命令务必在admin数据库下运行,如下四个指令:
db.runCommand({"renameCollection" : 集合名, "to":集合名}) # 对群集重命名,注意七个集结名都即便完好的联谊命名空间,如foo.bar, 表示数据库foo下的集合bar。
db.runCommand({"listDatabases" : 1}) # 列出服务器上全体的数据库

}

七、进度序调控制{

db.currentOp() # 查看活动进度
db.$cmd.sys.inprog.findOne() # 查看活动进程 与地方同样
opid # 操作进度号
op # 操作类型(查询更新)
ns # 命名空间,指操作的是哪些指标
query # 若是操作类型是询问,这里将展现具体的查询内容
lockType # 锁的项目,指明是读锁依旧写锁

db.killOp(opid值) # 甘休进度
db.$cmd.sys.killop.findOne({op:opid值}) # 甘休进度

}

八、备份还原{

./mongoexport -d test -c t1 -o t1.dat # 导出JSON格式
-c # 指明导出集结
-d # 使用库
./mongoexport -d test -c t1 -csv -f num -o t1.dat # 导出csv格式
-csv # 指明导出csv格式
-f # 指明必要导出那几个例

db.t1.drop() # 登入后去除数据
./mongoimport -d test -c t1 -file t1.dat # mongoimport还原JSON格式
./mongoimport -d test -c t1 -type csv --headerline -file t1.dat # mongoimport还原csv格式数据
--headerline # 指明不导入第风流倜傥行 因为第后生可畏行是列名

./mongodump -d test -o /bak/mongodump # mongodump数据备份
./mongorestore -d test --drop /bak/mongodump/* # mongorestore恢复
--drop #光复前先删除
db.t1.find() #查看

# mongodump 固然能不停机备份,但江城区了获得实时数据视图的本事,使用fsync命令能在运作时复制数据目录并且不会毁掉数据
# fsync会强战胜务器将具有缓冲区的数据写入磁盘.合作lock还阻挡对数据库的越来越写入,知道释放锁截至
# 备份在从库上备份,不贻误读写还能作保实时快速照相备份
db.runCommand({"fsync":1,"lock":1}) # 实施强制更新与写入锁
db.$cmd.sys.unlock.findOne() # 解锁
db.currentOp() # 查看解锁是不是健康

}

九、修复{

# 当停电或此外故障引起不健康关闭时,会诱致局地数据损坏错失
./mongod --repair # 修复操作:运营时候增加 --repair
# 修复进程:将享有文书档案导出,然后即刻导入,忽略无效文书档案.实现后重新建立索引。时间较长,会放弃损坏文书档案
# 修复数据还是能够起到压缩数据库的效果
db.repairDatabase() # 运营中的mongodb可应用 repairDatabase 修复当前利用的数据库
{"repairDatabase":1} # 通过驱动程序

}

十、python使用mongodb{

原文:

easy_install pymongo # 安装(python2.7+)
import pymongo
connection=pymongo.Connection('localhost',27017) # 创造连接
db = connection.test_database # 切换数据库
collection = db.test_collection # 获取collection
# db和collection都以延时创造的,在抬高Document时才真正创制

文档增加, _id自动创设
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
posts = db.posts
posts.insert(post)
ObjectId('...')

批量插入
new_posts = [{"author": "Mike",
"text": "Another post!",
"tags": ["bulk", "insert"],
"date": datetime.datetime(2009, 11, 12, 11, 14)},
{"author": "Eliot",
"title": "MongoDB is fun",
"text": "and pretty easy too!",
"date": datetime.datetime(2009, 11, 10, 10, 45)}]
posts.insert(new_posts)
[ObjectId('...'), ObjectId('...')]

收获具备collection
db.collection_names() # 相当于SQL的show tables

得到单个文书档案
posts.find_one()

询问七个文书档案
for post in posts.find():
post

加条件的询问
posts.find_one({"author": "Mike"})

高级查询
posts.find({"date": {"$lt": "d"}}).sort("author")

总结数据
posts.count()

加索引
from pymongo import ASCENDING, DESCENDING
posts.create_index([("date", DESCENDING), ("author", ASCENDING)])

翻开查询语句的属性
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["cursor"]
posts.find({"date": {"$lt": "d"}}).sort("author").explain()["nscanned"]

}

}

JDK安装{

chmod 744 jdk-1.7.0_79-linux-i586.bin
./jdk-1.7.0_79-linux-i586.bin
vi /etc/profile # 加多情形变量
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH CLASSPATH

. /etc/profile # 加载新的碰着变量
jps -ml # 查看java进程
}

redis动态加内部存款和储蓄器{

./redis-cli -h 10.10.10.11 -p 6401
save # 保存当前快照
config get * # 列出富有当前布置
config get maxmemory # 查看内定计划
config set maxmemory 15360000000 # 动态校订最大内部存款和储蓄器配置参数

}

nfs{

# 重视rpc服务通讯 portmap[centos5] 或 rpcbind[centos6]
yum install nfs-utils portmap # centos5安装
yum install nfs-utils rpcbind # centos6安装

vim /etc/exports # 配置文件
# sync # 同步写入
# async # 暂存并不是直接写入
# no_root_squash # 开放客户端接受root身份操作
# root_squash # 使用者身份为root则被压缩成佚名使用,即nobody,相对安全
# all_squash # 全部NFS的使用者身份都被减削为佚名
/data/images 10.10.10.0/24(rw,sync,no_root_squash)

service portmap restart # 重启centos5的nfs依赖的rpc服务
service rpcbind restart # 重启centos6的nfs依赖的rpc服务
service nfs restart # 重启nfs服务 确认保证信任 portmap 或 rpcbind 服务已开行
service nfs reload # 重载NFS服务配置文件
showmount -e # 服务端查看自个儿分享的劳务
showmount -a # 显示已经与客商端连接上的目录音信
showmount -e 10.10.10.3 # 列出服务端可供使用的NFS共享客商端测验能还是无法访谈nfs服务
mount -t nfs 10.10.10.3:/data/images/ /data/img # 挂载nfs 倘若延期影响大加参数 noac

# 服务端的 portmap 或 rpcbind 被甘休后,nfs依然职业健康,可是umout财务和会计提示: not found / mounted or server not reachable 重启服务器的portmap 或 rpcbind 也不行。 nfs也要随之重启,不然nfs专门的学问还是是不平日的。
# 同期已挂载会以致NFS顾客端df卡住和挂载目录不恐怕访谈。请先用 mount 查看当前挂载景况,记录挂载音讯,在恐吓卸载挂载目录,重新挂载
umount -f /data/img/ # 强制卸载挂载目录 如还不能 umount -l /data/img/

nfsstat -c # 客户机发送和拒却的RPC和NFS调用数目标新闻
nfsstat -cn # 展现和打字与印刷与客商机NFS调用相关的消息
nfsstat -r # 突显和打印客商机和服务器的与RPC调用相关的音讯
nfsstat –s # 突显关于服务器收到和谢绝的RPC和NFS调用数指标新闻

}

hdfs{
hdfs --help # 全数参数

hdfs dfs -help # 运转文件系统命令在Hadoop文件系统
hdfs dfs -ls /logs # 查看
hdfs dfs -ls /user/ # 查看客商
hdfs dfs -cat
hdfs dfs -df
hdfs dfs -du
hdfs dfs -rm
hdfs dfs -tail

hdfs dfsadmin -help # hdfs集群节点管理
hdfs dfsadmin -report # 基本的文件系统计算消息
}

}

5 网络{

rz # 通过ssh上传小文件
sz # 通过ssh下载小文件
ifconfig eth0 down # 禁止使用网卡
ifconfig eth0 up # 启用网卡
ifup eth0:0 # 启用网卡
mii-tool em1 # 查看网线是不是连接
traceroute www.baidu.com # 测量检验跳数
vi /etc/resolv.conf # 设置DNS nameserver IP 定义DNS服务器的IP地址
nslookup www.moon.com # 深入分析域名IP
dig -x www.baidu.com # 拆解解析域名IP
dig +short txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条
host -t txt hacker.wp.dg.cx # 通过 DNS 来读取 Wikipedia 的hacker词条
tcpdump tcp port 22 # 抓包
lynx # 文本上网
wget -P 路径 -O 重命名 http地址 # 下载 包名:wgetrc -q 安静
dhclient eth1 # 自动得到IP
mtr -r www.baidu.com # 测量检验互联网链路节点响合时间 # trace ping 结合
ipcalc -m "$ip" -p "$num" # 根据IP和主机最大数总结掩码
curl -I www.baidu.com # 查看网页http头
curl -s www.baidu.com # 不出示速度
queryperf -d list -s DNS_IP -l 2 # BIND自带DNS压力测量试验 [list 文件格式:www.turku.fi A]
telnet ip port # 测验端口是还是不是开放,有个别服务可直接输入指令得到重临状态
echo "show " |nc $ip $port # 适用于telnet风流倜傥类登陆得到传令归来
nc -l -p port # 监听钦点端口
nc -nv -z 10.10.10.11 1080 |grep succeeded # 检查主机端口是还是不是开放
curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} $URL # 检查页面状态
curl -d "user=xuesong&pwd=123" # 提交web页面表单 需查看表单提交地址
curl -s # 通过IP138取本机出口外网IP
rsync -avzP -e "ssh -p 22" /dir user@$IP:/dir # 同步目录 # --delete 无差同步 删除目录下别的文件
sshpass -p "$passwd" rsync -avzP -e "ssh -p 22" /dir user@$IP:/dir/ # 钦命密码防止相互联合目录
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0 # 增添逻辑IP地址
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all # 禁ping
net rpc shutdown -I IP_ADDRESS -U username%password # 远程关掉黄金年代台WINDOWS机器
wget --random-wait -r -p -e robots=off -U Mozilla www.example.com # 递归方式下载整个网站

网卡流量查看{

watch more /proc/net/dev # 实时监察和控制流量文件系统 累加值
iptraf # 网卡流量查看工具
nethogs -d 5 eth0 eth1 # 按进度实时总括网络流量 epel源nethogs

sar {
-n参数有6个例外的开关: DEV | EDEV | NFS | NFSD | SOCK | ALL
DEV彰显网络接口新闻
EDEV展现关于网络错误的总结数据
NFS总结活动的NFS顾客端的音讯
NFSD计算NFS服务器的新闻
SOCK彰显套 接字音信
ALL展现全体5个开关

sar -n DEV 1 10

rxpck/s # 每分钟收到的数据包
txpck/s # 每分钟发先生送的数据包
rxbyt/s # 每分钟收到的字节数
txbyt/s # 每分钟发(Zhong Fa卡塔尔国送的字节数
rxcmp/s # 每分钟收到的减少数据包
txcmp/s # 每分钟发(Zhong Fa卡塔尔送的裁减数据包
rxmcst/s # 每分钟收到的多播数据包

}

}

netstat{

# 几十万产出的景色下netstat会未有响应,提出选拔 ss 命令
-a # 彰显全数连接中的Socket
-t # 显示TCP连接
-u # 显示UDP连接
-n # 呈现全体已创建的立竿见影连接
netstat -anlp # 查看链接
netstat -r # 查看路由表
}

ss{

# netstat是遍历/proc上面每一种PID目录,ss直接读/proc/net上边包车型地铁总括新闻。所以ss施行的时候消耗财富甚至消耗的流年都比netstat少比较多
ss -s # 列出脚下socket详细消息
ss -l # 展现本地张开的装有端口
ss -pl # 彰显各类进程具体展开的socket
ss -ant # 突显全体TCP socket
ss -u -a # 呈现全体UDP Socekt
ss dst 192.168.119.113 # 匹配远程地址
ss dst 192.168.119.113:http # 相配远程地址和端口号
ss dst 192.168.119.113:3844 # 相称远程地址和端口号
ss src 192.168.119.103:16021 # 相称本地地址和端口号
ss -o state established '( dport = :smtp or sport = :smtp )' # 展现全部已创建的SMTP连接
ss -o state established '( dport = :http or sport = :http )' # 突显全数已创建的HTTP连接
ss -x src /tmp/.X11-unix/* # 搜索全数连接X服务器的经过

}

并发数查看{

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
SYN_RECV # 正在守候管理的乞请
ESTABLISHED # 符合规律数据传输状态,既当前并发数
TIME_WAIT # 管理达成,等待超时甘休的央浼
CLOSE_WAIT # 客商端格外关闭,未有到位4次挥手 如多量或许存在攻击行为

}

ssh{

ssh -p 22 user@192.168.1.209 # 从linux ssh登陆另风度翩翩台linux
ssh -p 22 root@192.168.1.209 CMD # 利用ssh操作远程主机
scp -P 22 文件 root@ip:/目录 # 把当和姑件拷贝到远程主机
sshpass -p '密码' ssh -n root@$IP "echo hello" # 钦定密码远程操作
ssh -o StrictHostKeyChecking=no $IP # ssh连接不提示yes
ssh -t "su -" # 钦命伪终端 客商端以相互影响情势专门的职业
scp root@192.168.1.209:远程目录 本地目录 # 把远程钦点文件拷贝到本地
ssh -N -L2001:remotehost:80 user@somemachine # 用SSH创设端口转载通道
ssh -t host_A ssh host_B # 嵌套使用SSH
ssh -t -p 22 $user@$Ip /bin/su - root -c {$Cmd}; # 远程su实施命令 Cmd=""/sbin/ifconfig eth0""
ssh-keygen -t rsa # 生成密钥
ssh-copy-id -i xuesong@10.10.10.133 # 传送key
vi $HOME/.ssh/authorized_keys # 公钥贮存地方
sshfs name@server:/path/to/folder /path/to/mount/point # 通过ssh挂载远程主机上的文件夹
fusermount -u /path/to/mount/point # 卸载ssh挂载的目录
ssh user@host cat /path/to/remotefile | diff /path/to/localfile - # 用DIFF相比远程文件跟当守田件
su - user -c "ssh user@192.168.1.1 "echo -e aa |mail -s test mail@163.com"" # 切换客户登录远程发送邮件

SSH反向连接{

# 外网A要调整内网B

ssh -NfR 1234:localhost:2223 user1@123.123.123.123 -p22 # 将A主机的1234端口和B主机的2223端口绑定,相当于远程端口映射
ss -ant # 这时在A主机上sshd会listen本地1234端口
# LISTEN 0 128 127.0.0.1:1234 *:*
ssh localhost -p1234 # 在A主机连接本地1234端口

}
}

网卡配置文件{

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
HWADDR=00:0C:29:3F:E1:EA
IPADDR=192.168.1.55
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.1.1
#ARPCHECK=no # 进制arp检查

}

route {

route # 查看路由表
route add default gw 192.168.1.1 dev eth0 # 增添私下认可路由
route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 增多静态路由网关
route del -net 172.16.0.0 netmask 255.255.0.0 gw 10.39.111.254 # 删除静态路由网关

}

静态路由{

vim /etc/sysconfig/static-routes
any net 192.168.12.0/24 gw 192.168.0.254
any net 192.168.13.0/24 gw 192.168.0.254

}

解决ssh链接慢{

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i '/#UseDNS yes/aUseDNS no' /etc/ssh/sshd_config
/etc/init.d/sshd restart

}

ftp上传{

ftp -i -v -n $HOST <<END
user $USERNAME $PASSWORD
cd /ftp
mkdir data
cd data
mput *.tar.gz
bye
END

}

nmap{

nmap -PT 192.168.1.1-111 # 先ping在围观主机开放端口
nmap -O 192.168.1.1 # 扫描出体系基本版本
nmap -sV 192.168.1.1-111 # 扫描端口的软件版本
nmap -sS 192.168.1.1-111 # 半开扫描(经常不会记录日志)
nmap -P0 192.168.1.1-111 # 不ping直接扫描
nmap -d 192.168.1.1-111 # 详细音信
nmap -D 192.168.1.1-111 # 无法寻觅真正扫描主机(隐蔽IP)
nmap -p 20-30,139,60000- # 端口范围 表示:扫描20到30号端口,139号端口以至具有大于60000的端口
nmap -P0 -sV -O -v 192.168.30.251 # 组合扫描(不ping、软件版本、内核版本、详细音信)

# 不支持windows的扫描(可用以推断是还是不是是windows)
nmap -sF 192.168.1.1-111
nmap -sX 192.168.1.1-111
nmap -sN 192.168.1.1-111

}

流量切分线路{

# 程序剖断步入IP线路,设置服务器路由准则调节重临
vi /etc/iproute2/rt_tables
#增多一条政策
252 bgp2 #静心政策的序号顺序
ip route add default via 第1个开口上线IP(非暗中同意网关) dev eth1 table bgp2
ip route add from 本机第3个ip table bgp2
#查看
ip route list table 252
ip rule list
#打响后将语句加多开机运转

}

snmp{

snmptranslate .1.3.6.1.2.1.1.3.0 # 查看映射关系
DISMAN-EVENT-MIB::sysUpTimeInstance
snmpdf -v 1 -c public localhost # SNMP监视远程主机的磁盘空间
snmpnetstat -v 2c -c public -a 192.168.6.53 # SNMP拿到内定IP的有所开放端口状态
snmpwalk -v 2c -c public 10.152.14.117 .1.3.6.1.2.1.1.3.0 # SNMP得到主机运营时间
# MIB安装(ubuntu)
# sudo apt-get install snmp-mibs-downloader
# sudo download-mibs
snmpwalk -v 2c -c public 10.152.14.117 sysUpTimeInstance # SNMP通过MIB库获取主机运营时间

}

}

6 磁盘{

df -Ph # 查看硬盘容积
df -T # 查看磁盘分区格式
df -i # 查看inode节点 借使inode用满后无法创造文件
du -h 目录 # 检验目录下具备文件大小
du -sh * # 显示当前目录中子目录的大小
mount -l # 查看分区挂载意况
fdisk -l # 查看磁盘分区状态
fdisk /dev/hda3 # 分区
mkfs -t ext3 /dev/hda3 # 格式化分区
fsck -y /dev/sda6 # 对文件系统修复
lsof |grep delete # 释放进程占用磁盘空间 列出过程后,查看文件是不是存在,海市蜃楼则kill掉此进程
tmpwatch -afv 10 /tmp # 删除10钟头内未利用的文件 勿在尤为重要目录使用
cat /proc/filesystems # 查看当前系统接济文件系统
mount -o remount,rw / # 纠正只读文件系统为读写
iotop # 磁盘IO占用境况排序 yum install iotop
smartctl -H /dev/sda # 检查实验硬盘状态 # yum install smartmontools
smartctl -i /dev/sda # 检查评定硬盘消息
smartctl -a /dev/sda # 检验全体新闻
e2label /dev/sda5 # 查看卷标
e2label /dev/sda5 new-label # 成立卷标
ntfslabel -v /dev/sda8 new-label # NTFS加多卷标
tune2fs -j /dev/sda # ext2分区转ext3分区
tune2fs -l /dev/sda # 查看文件系统新闻
mke2fs -b 2048 /dev/sda5 # 钦赐索引块大小
dumpe2fs -h /dev/sda5 # 查看一级块的音讯
mount -t iso9660 /dev/dvd /mnt # 挂载光驱
mount -t ntfs-3g /dev/sdc1 /media/yidong # 挂载ntfs硬盘
mount -t nfs 10.0.0.3:/opt/images/ /data/img # 挂载nfs 需求重载 /etc/init.d/nfs reload 重启要求先运转 portmap 服务
mount -o loop /software/rhel4.6.iso /mnt/ # 挂载镜像文件

磁盘IO质量检查实验{

iostat -x 1 10

% user # 呈现了在客商级(应用程序)实施时生成的 CPU 使用率百分比。
% system # 展现了在系统级(内核)执行时生成的 CPU 使用率百分比。
% idle # 突显了在 CPU 空闲还要系统绝非未产生的磁盘 I/O 诉求时的小时百分比。
% iowait # 展现了 CPU 空闲时期系统有未成功的磁盘 I/O 诉求时的日子百分比。

rrqm/s # 每秒举办 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s # 每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s # 每秒达成的读 I/O 设备次数。即 delta(rio)/s
w/s # 每秒达成的写 I/O 设备次数。即 delta(wio)/s
rsec/s # 每秒读扇区数。即 delta(rsect)/s
wsec/s # 每秒写扇区数。即 delta(wsect)/s
rkB/s # 每秒读K字节数。是 rsect/s 的四分之二,因为每扇区大小为512字节。(供给总计)
wkB/s # 每秒写K字节数。是 wsect/s 的八分之四。(要求总括)
avgrq-sz # 平均每一次设备I/O操作的数额大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz # 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为皮秒)。
await # 平均每回设备I/O操作的守候时间 (阿秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm # 平均每一次设备I/O操作的劳动时间 (飞秒)。即 delta(use)/delta(rio+wio)
%util # 一秒中有百分之多少的光阴用来 I/O 操作,或许说风姿罗曼蒂克秒中某个许时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为阿秒)

IO品质度量规范{

1、 要是 %util 周边百分之百,表明发生的I/O央求太多,I/O系统已经满负荷,该磁盘或然存在瓶颈。
2、 idle 小于70% IO压力就极大了,常常读取速度有非常多的wait.
3、 同期能够结合 vmstat 查看查看b参数(等待财富的进度数)和wa参数(IO等待所息灭的CPU时间的比例,高过三成时IO压力高)
4、 svctm 日常要小于 await (因为还要等待的央求的等候时间被重新总计了),svctm 的尺寸肖似和磁盘质量有关,CPU/内部存款和储蓄器的载荷也会对其有震慑,央求过多也会直接招致svctm 的扩展. await 的高低相仿决定于服务时间(svctm) 以至 I/O 队列的尺寸和 I/O 诉求的产生方式. 假设 svctm 比较像样 await,表明 I/O 差十分的少从未等待时间;要是 await 远大于 svctm,表明 I/O 队列太长,应用获得的响适那时候间变慢,借使响适合时宜间超越了客商能够容许的限量,这时候可以设想更动更加快的磁盘,调度内核 elevator 算法,优化利用,或许进级 CPU
5、 队列长度(avgqu-sz)也可看做权衡系统 I/O 负荷的指标,但鉴于 avgqu-sz 是固守单位时间的平均值,所以不能够反映刹那间的 I/O 雪暴。

}

}

制造swap文件方式{

dd if=/dev/zero of=/swap bs=1024 count=4096000 # 创制叁个足足大的公文
# count的值等于1024 x 你想要的文件大小, 4096000是4G
mkswap /swap # 把那一个文件形成swap文件
swapon /swap # 启用这一个swap文件
/swap swap swap defaults 0 0 # 在每一次开机的时候自动加载swap文件, 须要在 /etc/fstab 文件中加进黄金年代行
cat /proc/swaps # 查看swap
swapoff -a # 关闭swap
swapon -a # 开启swap

}

新硬盘挂载{

fdisk /dev/sdc
p # 打字与印刷分区
d # 删除分区
n # 创制分区,(一块硬盘最多4个主分区,扩大占贰个主分区地方。p主分区 e扩展卡塔尔国
w # 保存退出
mkfs -t ext3 -L 卷标 /dev/sdc1 # 格式化相应分区
mount /dev/sdc1 /mnt # 挂载
vi /etc/fstab # 增添开机挂载分区
LABEL=/data /data ext3 defaults 1 2 # 用卷标挂载
/dev/sdb1 /data4 ext3 defaults 1 2 # 用真实分区挂载
/dev/sdb2 /data4 ext3 noatime,defaults 1 2

率先个数字"1"该选择被"dump"命令使用来检查二个文件系统应该以多快频率进行转储,若无需转储就安装该字段为0
其次个数字"2"该字段被fsck命令用来支配在运转时必要被扫描的文件系统的逐个,根文件系统"/"对相应字段的值应该为1,别的文件系统应该为2。若该文件系统不须求在运维时扫描则设置该字段为0
当以 noatime 选项加载(mount卡塔尔文件系统时,对文本的读取不会更新文件属性中的atime音信。设置noatime的主要性是裁撤了文件系统对文本的写操作,文件只是简短地被系统读取。由于写操作相对读来讲要更花费系统能源,所以这么设置能够确定增高服务器的属性.wtime新闻依然有效,任曾几何时候文件被写,该音信仍被更新。

}

大磁盘2T和16T分区{

parted /dev/sdb # 针对磁盘分区
(parted) mklabel gpt # 设置为 gpt
(parted) print
(parted) mkpart primary 0KB 22.0TB # 钦定分区大小
Is this still acceptable to you?
Yes/No? Yes
Ignore/Cancel? Ignore
(parted) print
Model: LSI MR9271-8i (scsi)
Disk /dev/sdb: 22.0TB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 22.0TB 22.0TB primary
(parted) quit

mkfs.ext4 -b 4096 /dev/sdb1 # 小于16T如使用ext4钦点块大小 块大小影响磁盘分区大小

# 大于16T的单个分区ext4格式化报错
Size of device /dev/sdb1 too big to be expressed in 32 bits using a blocksize of 4096.
# 校正ext4的文本增加意气风发行,化解ext4格式化大于16T报错
vim /etc/mke2fs.conf

[fs_types] ext4 = {
features = has_journal,extent,huge_file,flex_bg,uninit_bg,dir_nlink,extra_isize
auto_64-bit_support = 1 # 加多此行
inode_size = 256
}

yum -y install xfsprogs
mkfs.xfs -f /dev/sdb1 # 大于16T单个分区或利用XFS分区也可

}

raid原理与差别{

raid0起码2块硬盘.吞吐量大,质量好,同期读写,但损坏一个就夭亡
raid1最少2块硬盘.格外镜像,贰个囤积,叁个备份.安全性相比高.可是性质比0弱
raid5最少3块硬盘.分别存款和储蓄校验音信和数据,坏了三个依据校验音讯能复苏
raid6最少4块硬盘.多少个独立的奇偶系统,可坏两块磁盘,写质量极其差

}

}

7 用户{

users # 显示全体的登入客户
groups # 列出脚下客商和她所属的组
who -q # 展现全数的记名客商
groupadd # 添加组
useradd user # 创建客商
passwd 用户 # 改正密码
userdel -r # 删除帐号及家目录
chown -R user:group # 校勘目录具有者(Escort递归)
chown y.li:mysql # 改善全数者顾客中带有一点"."
umask # 设置顾客文件和目录的文件制造缺省屏蔽值
chgrp # 矫正客户组
finger # 查找用户展现音讯
echo "xuesong" | passwd user --stdin # 非互相改革密码
useradd -g www -M -s /sbin/nologin www # 内定组并不一致敬登入的客商,nologin允许使用劳务
useradd -g www -M -s /bin/false www # 钦定组并分歧意登入的顾客,false最为严苛
useradd -d /data/song -g song song # 成立客商并钦赐家目录和组
usermod -l 新顾客名 老顾客名 # 修改客商名
usermod -g user group # 改进顾客所属组
usermod -d 目录 -m 用户 # 修改客户家目录
usermod -G group user # 将顾客拉长到附加组
gpasswd -d user group # 从组中剔除客商
su - user -c " #命令1; " # 切换客户试行

复原密码{

# 即走入单顾客情势: 在linux现身grub后,在安装的系统方面按"e",然后现身grub的布局文件,按钮盘移动光标到第二行"Ker……",再按"e",然后在这里生机勃勃行的尾声加上:空格 single也许空格1回车,然后按"b"重启,就进去了"单客商格局"
}

极度规权限{

s或 S (SUID卡塔尔国:对应数值4
s或 S (SGID卡塔 尔(阿拉伯语:قطر‎:对应数值2
t或 T :对应数值1
徐熙媛(Barbie Hsu卡塔尔国(英文名:Barbie Hsu卡塔 尔(英语:State of Qatar):代表全体root权限,不过尚未实践权限
小s:具有特一时独具进行权限,这些文件能够采访系统任何root客商能够访谈的财富
T或T(Sticky卡塔尔国:/tmp和 /var/tmp目录供全数顾客这段日子存取文件,亦即每位顾客皆享有完全的权杖进入该目录,去浏览、删除和移动文件

}

}

8 脚本{

#!/bin/sh # 在本子第意气风发行脚本头 # sh为前段时间系统私下认可shell,可钦点为bash等shell
sh -x # 试行进度
sh -n # 检查语法
(a=bbk) # 括号成立子shell运营
basename /a/b/c # 从全路线中保存最后意气风发层文件名或目录
dirname # 取路径
$RANDOM # 随机数
$$ # 进程号
source FileName # 在这段日子bash意况下读取并进行FileName中的命令 # 等同 . FileName
sleep 5 # 间距睡眠5秒
trap # 在吸收接纳到频限信号后就要采取的步履
trap "" 2 3 # 禁止ctrl+c
$PWD # 当前目录
$HOME # 家目录
$OLDPWD # 在此以前三个索引的路线
cd - # 再次来到上贰个索引路线
local ret # 局地变量
yes # 重复打字与印刷
yes |rm -i * # 自动回复y可能其余
ls -p /home # 区分目录和文书夹
ls -d /home/ # 查占星配完整路线
time a.sh # 测量试验程序实行时间
echo -n aa;echo bb # 不换行试行下一句话 将字符串原样输出
echo -e "stssnnn" # 使转义生效
echo $a | cut -c2-6 # 取字符串中字元
echo {a,b,c}{a,b,c}{a,b,c} # 排列组合(括号内叁个成分分别和别的括号内成分组合)
echo $((2#11010)) # 二进制转10进制
echo aaa | tee file # 打字与印刷同时写入文件 暗中认可覆盖 -a追加
echo {1..10} # 打印10个字符
printf '%10sn'|tr " " a # 打印10个字符
pwd | awk -F/ '{ print $2 }' # 重回目录名
tac file |sed 1,3d|tac # 倒置读取文件 # 删除最后3行
tail -3 file # 取最后3行
outtmp=/tmp/$$`date +%s%N`.outtmp # 临时文件定义
:(){ :|:& };: # 著名的 fork炸弹,系统实施海量的进度,直到系统僵死
echo -e "e[32m颜色e[0m" # 打字与印刷颜色
echo -e "33[32m颜色33[m" # 打字与印刷颜色
echo -e "33[0;31mL33[0;32mO33[0;33mV33[0;34mEt33[0;35mY33[0;36mO33[0;32mUe[m" # 打字与印刷颜色

正则表明式{

^ # 行首永久
$ # 行尾定位
. # 相配除换行符以外的人身自由字符
* # 相配0或多个再度字符

  • # 重复一回或更频繁
    ? # 重复零次或一回
    ? # 截止贪婪因子 .*? 表示相当的小相配
    [] # 匹配生机勃勃组中恣心所欲多个字符
    [^] # 相称不在钦命组内的字符
    # 用来转义元字符
    < # 词首定位符(援救vi和grep) <love
    > # 词尾定位符(支持vi和grep) love>
    x{m} # 重复现身m次
    x{m,} # 重复现身起码m次
    x{m,n} # 重复现身至少m次不超过n次
    X? # 相配出现零次或二次的大写字母 X
    X+ # 匹配多少个或多少个字母 X
    () # 括号内的字符为一组
    (ab|de)+ # 相配接二连三串的(起码二个卡塔尔 abc 或 def;abc 和 def 将相配
    [[:alpha:]] # 代表享有字母无论高低写
    [[:lower:]] # 表示小写字母
    [[:upper:]] # 表示大写字母
    [[:digit:]] # 表示数字字符
    [[:digit:][:lower:]] # 表示数字字符加小写字母

元字符{

d # 相称任性一个人数字
D # 匹配自便单个非数字字符
w # 相配放肆单个字母数字下划线字符,同义词是 [:alnum:]
W # 相配非数字型的字符

}

字符类:空白字符{

s # 相称任意的空白符
S # 相配非空白字符
b # 相称单词的初步或截止
n # 相配换行符
r # 相配回车符
t # 匹配制表符
b # 匹配退格符
# 相配空值字符

}

字符类:锚定字符{

b # 相称字边界(不在[]中时)
B # 相称非字边界
A # 匹配字符串初始
Z # 相配字符串或行的末段
z # 只相配字符串末尾
G # 相称前叁回m//g离开之处

}

捕获{

(exp) # 相称exp,并抓获文本到活动命名的组里
(?<name>exp) # 相配exp,并抓获文本到名称叫name的组里,也能够写成(?'name'exp)
(?:exp) # 相称exp,不抓获相配的文书,也不给此分组分配组号

}

零宽断言{

(?=exp) # 相称exp前边的地点
(?<=exp) # 相称exp后边的职分
(?!exp) # 相称后边跟的不是exp之处
(?<!exp) # 相称前边不是exp的职位
(?#comment) # 注释不对正则表达式的拍卖产生别的影响,用于注释

}

特殊字符{


^H 10 b
^M 15 r
协作特殊字符: ctrl+V ctrl不放在按H或M 就能够输出^H,用于匹配

}

}

流程结构{

if判断{

if [ $a == $b ]
then
echo "等于"
else
echo "不等于"
fi

}

case分支选择{

case $xs in
0) echo "0" ;;
1) echo "1" ;;
*) echo "其他" ;;
esac

}

while循环{

# while true 等同 while :
# 读文件为整行读入
num=1
while [ $num -lt 10 ]
do
echo $num
((num=$num+2))
done
###########################
grep a a.txt | while read a
do
echo $a
done
###########################
while read a
do
echo $a
done < a.txt

}

for循环{

# 读文件已空格分隔
w=`awk -F ":" '{print $1}' c`
for d in $w
do
$d
done
###########################
for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done

}

until循环{

# 当command不为0时循环
until command
do
body
done

}

流程序调节制{

break N # 跳出几层循环
continue N # 跳出几层循环,循环次数不变
continue # 重新循环次数不改变

}

}

变量{

A="a b c def" # 将字符串复制给变量
A=`cmd` # 将指令结果赋给变量
A=$(cmd) # 将指令结果赋给变量
eval a=$$a # 直接调用
i=2&&echo $((i+3)) # 总计后打字与印刷新变量结果
i=2&&echo $[i+3] # 计算后打字与印刷新变量结果
a=$((2>6?5:8)) # 决断多个值知足条件的赋值给变量
$1 $2 $* # 地点参数 *代表享有
env # 查看景况变量
env | grep "name" # 查看定义的境遇变量
set # 查看遭逢变量和本土变量
read name # 输入变量
readonly name # 把name那个变量设置为只读变量,分裂意再一次设置
readonly # 查看系统存在的只读文件
export name # 变量name由本地升为蒙受
export name="RedHat"   # 直接定义name为意况变量
export Stat$nu=2222 # 变量援用变量赋值
unset name # 变量解除
export -n name # 去掉只读变量
shift # 用于移动地点变量,调解地方变量,使$3的值赋给$2.$2的值付与$1
name + 0 # 将字符串转变为数字
number " " # 将数字转变来字符串
a='ee';b='a';echo ${!b} # 间接援用name变量的值
: ${a="cc"} # 假设a有值则不纠正,如若a无值则赋值a变量为cc

数组{

A=(a b c def) # 将变量定义为数組
${#A[*]} # 数组个数
${A[*]} # 数组全部因素,大字符串
${A[@]} # 数组全体因素,相通列表可迭代
${A[2]} # 脚本的八个参数或数组第三个人

}

概念变量类型{

declare 或 typeset
-r 只读(readonly一样)
-i 整形
-a 数组
-f 函数
-x export
declare -i n=0

}

系统变量{

$0 # 脚本运营名(富含路线)
$n # 第n个参数,n=1,2,…9
$* # 全部参数列表(不包罗脚本小编)
$@ # 全体参数列表(独立字符串)
$# # 参数个数(不蕴涵脚本自身)
$$ # 当前途式的PID
$! # 实践上八个下令的PID
$? # 推行上二个发令的重回值

}

变量引用技术{

${name:+value} # 如若设置了name,就把value突显,未安装则为空
${name:-value} # 假设设置了name,就显示它,未设置就展现value
${name:?value} # 未安装提示客商错误消息value 
${name:=value} # 如未安装就把value设置并出示<写入当地中>
${#A} # 可获得变量中字节
${A:4:9} # 取变量中第一位到背后9位
${A:(-1)} # 倒叙取倒数字符
${A/www/http} # 取变量何况替换每行第二个举足轻重字
${A//www/http} # 取变量何况全体替换每行关键字

概念了叁个变量: file=/dir1/dir2/dir3/my.file.txt
${file#*/} # 去掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
${file##*/} # 去掉最后一条 / 及其左边的字串:my.file.txt
${file#*.} # 去掉第二个 . 及其左侧包车型客车字串:file.txt
${file##*.} # 去掉最后一个 . 及其左侧的字串:txt
${file%/*} # 去掉最后条 / 及其侧边的字串:/dir1/dir2/dir3
${file%%/*} # 去掉第一条 / 及其侧边的字串:(空值)
${file%.*} # 去掉最后二个 . 及其左边的字串:/dir1/dir2/dir3/my.file
${file%%.*} # 去掉第叁个 . 及其右侧的字串:/dir1/dir2/dir3/my
# # 是去掉右边(在键盘上 # 在 $ 之左边)
# % 是去掉侧边(在键盘上 % 在 $ 之左边)
# 单黄金时代符号是十分的小相称﹔两个标记是最大相配

}

}

test条件决断{

# 符号 [ ] 等同 test命令

expression为字符串操作{

-n str # 字符串str是不是不为空
-z str # 字符串str是或不是为空

}

expression为文件操作{

-a # 况兼,两条件为真
-b # 是还是不是块文件
-p # 文件是或不是为一个命名管道
-c # 是或不是字符文件
-r # 文件是不是可读
-d # 是或不是二个索引
-s # 文件的长度是不是不为零
-e # 文件是还是不是存在
-S # 是或不是为套接字文件
-f # 是不是普通文书
-x # 文件是还是不是可实践,则为真
-g # 是或不是设置了文本的 SGID 位
-u # 是不是设置了文件的 SUID 位
-G # 文件是还是不是存在且归该组全部
-w # 文件是不是可写,则为真
-k # 文件是不是设置了的粘贴位
-t fd # fd 是还是不是是个和终点相连的开拓的文本陈诉符(fd 默感觉 1卡塔 尔(英语:State of Qatar)
-o # 或,一个规格为真
-O # 文件是还是不是留存且归该顾客具备
! # 取反

}

expression为整数操作{

expr1 -a expr2 # 要是 expr1 和 expr2 评估为真,则为真
expr1 -o expr2 # 假若 expr1 或 expr2 评估为真,则为真

}

两值比较{

整数 字符串
-lt < # 小于
-gt > # 大于
-le <= # 小于或等于
-ge >= # 大于或等于
-eq == # 等于
-ne != # 不等于

}

test 10 -lt 5 # 决断大小
echo $? # 查看上句test命令再次来到状态 # 结果0为真,1为假
test -n "hello" # 判定字符串长度是或不是为0
[ $? -eq 0 ] && echo "success" || exit   # 推断成功唤醒,失败则脱离

}

重定向{

# 标准输出 stdout 和 规范错误 stderr 规范输入stdin
cmd 1> fiel # 把 规范输出 重定向到 file 文件中
cmd > file 2>&1 # 把 规范输出 和 标准错误 一齐重定向到 file 文件中
cmd 2> file # 把 标准错误 重定向到 file 文件中
cmd 2>> file # 把 标准错误 重定向到 file 文件中(追加)
cmd >> file 2>&1 # 把 标准输出 和 标准错误 一同重定向到 file 文件中(追加)
cmd < file >file2 # cmd 命令以 file 文件作为 stdin(规范输入),以 file2 文件作为 规范输出
cat <>file # 以读写的章程张开 file
cmd < file cmd # 命令以 file 文件作为 stdin
cmd << delimiter
cmd; #从 stdin 中读入,直至遭遇 delimiter 分界符
delimiter

>&n # 使用系统调用 dup (2) 复制文件呈报符 n 并把结果用作标准输出
<&n # 规范输入复制自文件呈报符 n
<&- # 关闭标准输入(键盘卡塔 尔(阿拉伯语:قطر‎
>&- # 关闭标准输出
n<&- # 表示将 n 号输加入关贸总协定组织闭
n>&- # 表示将 n 号输出关闭

}

运算符{

$[]等同于$(()) # $[]意味着情势报告shell求中括号中的表明式的值
~var # 按位取反运算符,把var中有所的二进制为1的变为0,为0的产生1
var<<str # 左移运算符,把var中的二进制位向左移动str位,忽视最左端移出的诸位,最右端的诸位上补上0值,每做三次按位左移就有var乘2
var>>str  # 右移运算符,把var中负有的二进制位向右移动str位,忽视最右移出的诸位,最左的各位上补0,每一趟做贰次右移就有贯彻var除以2
var&str # 与相比运算符,var和str对应位,对于每一个二进制来讲,如若二都为1,结果为1.再不为0
var^str # 异或运算符,比较var和str对应位,对于二进制来说要是两个互补,结果为1,不然为0
var|str # 或运算符,比较var和str的对应位,对于每一个二进制来说,如二都该位有二个1或都以1,结果为1,不然为0

运算符优先级{
级别 运算符 说明
1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>= # 赋值运算符
2 || # 逻辑或 后边不成事执行
3 && # 逻辑与 前边成功后施行
4 | # 按位或
5 ^ # 按位异或
6 & # 按位与
7 ==,!= # 等于/不等于
8 <=,>=,<,> # 小于或等于/大于或等于/小于/大于
9 <<,>> # 按位左移/按位右移 (无转意符号)
10 +,- # 加减
11 *,/,% # 乘,除,取余
12 ! ,~ # 逻辑非,按位取反或补码
13 -,+ # 正负
}

}

数学生运动算{

$(( )) # 整数运算

    • * / ** # 分別为 "加、減、乘、除、密运算"
      & | ^ ! # 分別为 "AND、OR、XOR、NOT" 运算
      % # 余数运算

let{

let # 运算
let x=16/4
let x=5**5

}

expr{

expr 14 % 9 # 整数运算
SUM=`expr 2 * 3` # 乘后结果赋值给变量
LOOP=`expr $LOOP + 1` # 增量计数(加循环就能够) LOOP=0
expr length "bkeep zbb" # 总计字串长度
expr substr "bkeep zbb" 4 9 # 抓取字串
expr index "bkeep zbb" e # 抓取第贰个字符数字串现身的职位
expr 30 / 3 / 2 # 运算符号有空格
expr bkeep.doc : '.*' # 形式相配(能够使用expr通过点名冒号选项总括字符串中字符数)
expr bkeep.doc : '(.*).doc' # 在expr中能够运用字符串相称操作,这里运用情势抽取.doc文件从属名

数值测验{

#假诺计划总计非整数,则会回去错误
rr=3.4
expr $rr + 1
expr: non-numeric argument
rr=5
expr $rr + 1
6

}

}

bc{

echo "m^n"|bc # 次方总括
seq -s '+' 1000 |bc # 从1加到1000
seq 1 1000 |tr "n" "+"|sed 's/+$/n/'|bc # 从1加到1000
}

}

grep{

-c # 显示相配到得行的数据,不显得内容
-h # 不展现文件名
-i # 忽略大小写
-l # 只列出相称行所在文件的文书名
-n # 在每风流罗曼蒂克行中加多绝对行号
-s # 无声操作只突显报错,检查退出状态
-v # 反向寻找
-e # 使用正则表明式
-w # 准确相配
-wc # 精确相称次数
-o # 查询全体相称字段
-P # 使用perl正则表达式
-A3 # 打字与印刷相称行和下三行
-B3 # 打字与印刷相称行和上三行
-C3 # 打字与印刷相称行和前后三行

grep -v "a" txt # 过滤关键字符行
grep -w 'a>' txt # 正确相配字符串
grep -i "a" txt # 大小写敏感
grep "a[bB]" txt # 同不日常间合作大小写
grep '[0-9]{3}' txt # 查找0-9重复二遍的所在行
grep -E "word1|word2|word3" file # 任意条件相当
grep word1 file | grep word2 |grep word3 # 相同的时候宽容多个
echo quan@163.com |grep -Po '(?<=@.).*(?=.$)' # 零宽断言截取字符串 # 63.co
echo "I'm singing while you're dancing" |grep -Po 'bw+(?=ingb)' # 零宽断言匹配
echo 'Rx Optical Power: -5.01dBm, Tx Optical Power: -2.41dBm' |grep -Po '(?<=:).*?(?=d)' # 抽取d前面数字 # ?为最小相称
echo 'Rx Optical Power: -5.01dBm, Tx Optical Power: -2.41dBm' | grep -Po '[-0-9.]+' # 收取d前面数字 # ?为最小匹配
echo '["mem",ok],["hardware",false],["filesystem",false]' |grep -Po '[^"]+(?=",false)' # 抽取false后边的假名
echo '["mem",ok],["hardware",false],["filesystem",false]' |grep -Po 'w+",false'|grep -Po '^w+' # 收取false后边的假名

grep用于if判断{

if echo abc | grep "a" > /dev/null 2>&1
then
echo "abc"
else
echo "null"
fi

}

}

tr{

-c # 用字符串第11中学字符集的补集替换此字符集,须要字符集为ASCII
-d # 删除字符串第11中学保有输入字符
-s # 删除全数重复现身字符种类,只保留第三个:将在再度现身字符串压缩为三个字符串
[a-z] # a-z内的字符组成的字符串
[A-Z] # A-Z内的字符组成的字符串
[0-9] # 数字串
octal # 一个三人的八进制数,对应有效的ASCII字符
[O*n] # 表示字符O重复出现钦赐次数n。因而[O*2]相配OO的字符串

tr中一定调控字符表明格局{

a Ctrl-G 07 # 铃声
b Ctrl-H 10 # 退格符
f Ctrl-L 14 # 走行换页
n Ctrl-J 12 # 新行
r Ctrl-M 15 # 回车
t Ctrl-I 11 # tab键
v Ctrl-X 30

}

tr A-Z a-z # 将享有大写转换来小写字母
tr " " "n" # 将空格替换为换行
tr -s "[12]" < plan.txt # 删除空行
tr -s ["n"] < plan.txt # 删除空行
tr -s "[15]" "[n]" < file # 删除文件中的^M,并代之以换行
tr -s "[r]" "[n]" < file # 删除文件中的^M,并代之以换行
tr -s "[:]" "[11]" < /etc/passwd # 替换passwd文件中有着冒号,代之以tab键
tr -s "[:]" "[t]" < /etc/passwd # 替换passwd文件中颇负冒号,代之以tab键
echo $PATH | tr ":" "n" # 增加展现路线可读性
1,$!tr -d 't' # tr在vi内选取,在tr前加管理行范围和感叹号('$'表示最后意气风发行)
tr "r" "n"<macfile > unixfile # Mac -> UNIX
tr "n" "r"<unixfile > macfile # UNIX -> Mac
tr -d "r"<dosfile > unixfile # DOS -> UNIX Microsoft DOS/Windows 约定,文本的每行以回车字符(r)并后跟换行符(n)结束
awk '{ print $0"r" }'<unixfile > dosfile # UNIX -> DOS:在此种场馆下,供给用awk,因为tr不能够插入三个字符来替换二个字符

}

seq{

# 不钦命起先数值,则默以为 1
-s # 选项根本改换输出的分格符, 预设是 n
-w # 等位补全,正是小幅度相等,不足的前方补 0
-f # 格式化输出,就是点名打字与印刷的格式

seq 10 100 # 列出10-100
seq 1 10 |tac # 倒叙列出
seq -s '+' 90 100 |bc # 从90加到100
seq -f 'dir%g' 1 10 | xargs mkdir # 创建dir1-10
seq -f 'dir%03g' 1 10 | xargs mkdir # 创建dir001-010

}

trap{

信号 说明
HUP(1) # 挂起,平时因极端掉线或客商退出而引发
INT(2) # 中断,常常因按下Ctrl+C组合键而吸引
QUIT(3) # 退出,常常因按下Ctrl+组合键而吸引
ABRT(6) # 中止,平日因一些严重的实行错误而引发
ALRM(14) # 报警,经常用来拍卖超时
TERM(15) # 终止,经常在系统关机时发送

trap捕捉到随机信号之后,可以有三种反应措施:
1、试行后生可畏段程序来拍卖那黄金年代确定性信号
2、接纳时域信号的暗中同意操作
3、忽视那风度翩翩时限信号

首先种情势的trap命令在shell选取到 signal list 清单中数值形似的功率信号时,将推行双引号中的命令串:
trap 'commands' signal-list # 单引号,要在shell探测到非确定性信号来的时候才试行命令和变量的轮流,时间一直变
trap "commands" signal-list # 双引号,shell第二回设置非确定性信号的时候就试行命令和变量的轮流,时间不改变

}

awk{

# 暗中同意是施行打字与印刷全体 print $0
# 1为真 打印$0
# 0为假 不打印

-F # 改变FS值(分隔符)
~ # 域匹配
== # 变量相配
!~ # 相配不含有
= # 赋值
!= # 不等于
+= # 叠加

b # 退格
f # 换页
n # 换行
r # 回车
t # 制表符Tab
c # 代表任豆蔻年华其余字符

-F"[ ]+|[%]+" # 八个空格或多个%为分隔符
[a-z]+ # 八个小写字母
[a-Z] # 代表享有大大小小写字母(aAbB...zZ)
[a-z] # 代表享有大大小小写字母(ab...z)
[:alnum:] # 字母数字字符
[:alpha:] # 字母字符
[:cntrl:] # 调整字符
[:digit:] # 数字字符
[:graph:] # 非空白字符(非空格、调节字符等)
[:lower:] # 小写字母
[:print:] # 与[:graph:]貌似,不过包罗空格字符
[:punct:] # 标点字符
[:space:] # 全数的空白字符(换行符、空格、制表符)
[:upper:] # 大写字母
[:xdigit:] # 十七进制的数字(0-9a-fA-F)
[[:digit:][:lower:]] # 数字和小写字母(占多个字符)

内建变量{
$n # 当前记下的第 n 个字段,字段间由 FS 分隔
$0 # 完整的输入记录
ARGC # 命令行参数的数码
ARGIND # 命令行中当前文件的职位 ( 从 0 初阶算 )
ARGV # 包罗命令行参数的数组
CONVFMT # 数字调换格式 ( 暗中同意值为 %.6g)
ENVIRON # 情形变量关联数组
ERRNO # 最后二个种类错误的陈诉
FIELDWIDTHS # 字段宽度列表 ( 用空格键分隔 )
FILENAME # 当前文件名
FNR # 同 NSportage ,但相对于近年来文件
FS # 字段分隔符 ( 默许是其它层空间格 )
IGNORECASE # 借使为真(即非 0 值卡塔尔国,则开展忽视大小写的格外
NF # 当前记下中的字段数(列)
NR # 当前进数
OFMT # 数字的出口格式 ( 默许值是 %.6g)
OFS # 输出字段分隔符 ( 默许值是叁个空格 )
ORS # 输出记录分隔符 ( 暗中认可值是叁个换行符 )
RLENGTH # 由 match 函数所相配的字符串的长短
RS # 记录分隔符 ( 暗中认可是一个换行符 )
RSTART # 由 match 函数所相配的字符串的第多个职位
SUBSEP # 数组下标分隔符 ( 暗中认可值是 /034)
BEGIN # 先管理(可不Gavin件参数)
END # 停止时管理
}

置于函数{
gsub(r,s) # 在整个$0中用s替代r 相当于 sed 's///g'
gsub(r,s,t) # 在整个t中用s替代r
index(s,t) # 重回s中字符串t的率先职责
length(s) # 返回s长度
match(s,r) # 测量检验s是不是包括相称r的字符串
split(s,a,fs) # 在fs少校s分成类别a
sprint(fmt,exp) # 再次回到经fmt格式化后的exp
sub(r,s) # 用$0中最左侧最长的子串代替s 也正是 sed 's///'
substr(s,p) # 再次回到字符串s中从p开首的后缀部分
substr(s,p,n) # 再次来到字符串s中从p开端长度为n的后缀部分
}

awk判断{
awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' # 条件推断括号表示if语句剖断 "?"代表then ":"代表else
awk '{max=($1>$2)? $1 : $2; print max}' # 条件判断假诺$1大于$2,max值为为$1,不然为$2
awk '{if ( $6 > 50) print $1 " Too high" ;
else print "Range is OK"}' file
awk '{if ( $6 > 50) { count++;print $3 }
else { x+5; print $2 } }' file
}

awk循环{
awk '{i = 1; while ( i <= NF ) { print NF, $i ; i++ } }' file
awk '{ for ( i = 1; i <= NF; i++ ) print NF,$i }' file
}

awk '/Tom/' file # 打印相配到得行
awk '/^Tom/{print $1}' # 匹配Tom初始的行 打字与印刷第多少个字段
awk '$1 !~ /ly$/' # 突显全体第3个字段不是以ly结尾的行
awk '$3 <40' # 即使第多个字段值小于40才打字与印刷
awk '$4==90{print $5}' # 抽取第四列等于90的第五列
awk '/^(no|so)/' test # 打字与印刷全体以情势no或so初叶的行
awk '$3 * $4 > 500' # 算术运算(第多少个字段和第三个字段乘积大于500则显得)
awk '{print NR" "$0}' # 加行号
awk '/tom/,/suz/' # 打字与印刷tom到suz之间的行
awk '{a+=$1}END{print a}' # 列求和
awk 'sum+=$1{print sum}' # 将$1的值叠合后赋给sum
awk '{a+=$1}END{print a/NR}' # 列求平均值
awk '!s[$1 $3]++' file # 依据第一列和第三列过滤重复行
awk -F'[ :t]' '{print $1,$2}' # 以空格、:、制表符Tab为分隔符
awk '{print "'"$a"'","'"$b"'"}' # 援用外界变量
awk '{if(NR==52){print;exit}}' # 显示第52行
awk '/关键字/{a=NR+2}a==NR {print}' # 取关键字下第几行
awk 'gsub(/liu/,"aaaa",$1){print $0}' # 只打字与印刷相配替换后的行
ll | awk -F'[ ]+|[ ][ ]+' '/^$/{print $8}' # 提取时间,空格不稳定
awk '{$1="";$2="";$3="";print}' # 去掉前三列
echo aada:aba|awk '/d/||/b/{print}' # 相配两内容之后生可畏
echo aada:abaa|awk -F: '$1~/d/||$2~/b/{print}' # 关键列相配两内容之后生可畏
echo Ma asdas|awk '$1~/^[a-Z][a-Z]$/{print }' # 第叁个域相配正则
echo aada:aaba|awk '/d/&&/b/{print}' # 同临时候宽容两规格
awk 'length($1)=="4"{print $1}' # 字符串位数
awk '{if($2>3){system ("touch "$1)}}' # 实践系统命令
awk '{sub(/Mac/,"Macintosh",$0);print}' # 用Macintosh替换Mac
awk '{gsub(/Mac/,"MacIntosh",$1); print}' # 第一个域内用Macintosh替换Mac
awk -F '' '{ for(i=1;i<NF+1;i++)a+=$i ;print a}' # 多位数算出其每位数的总和.比如 1234, 得到 10
awk '{ i=$1%10;if ( i == 0 ) {print i}}' # 判别$1是不是整除(awk中定义变量援用时不能够带 $ )
awk 'BEGIN{a=0}{if ($1>a) a=$1 fi}END{print a}' # 列求最大值 设定三个变量初步为0,遇到比该数大的值,就赋值给该变量,直到结束
awk 'BEGIN{a=11111}{if ($1<a) a=$1 fi}END{print a}' # 求最小值
awk '{if(A)print;A=0}/regexp/{A=1}' # 查找字符串并将相配行的下意气风发行呈现出来,但并不出示相称行
awk '/regexp/{print A}{A=$0}' # 查找字符串并将相称行的上大器晚成行呈现出来,但并不呈现相称行
awk '{if(!/mysql/)gsub(/1/,"a");print $0}' # 将1替换来a,而且只在行中未出现字串mysql的事态下替换
awk 'BEGIN{srand();fr=int(100*rand());print fr;}' # 获取随机数
awk '{if(NR==3)F=1}{if(F){i++;if(i%7==1)print}}' # 从第3行初阶,每7行呈现三遍
awk '{if(NF<1){print i;i=0} else {i++;print $0}}' # 显示空行分割各段的行数
echo +null:null |awk -F: '$1!~"^+"&&$2!="null"{print $0}' # 关键列同一时间协作
awk -v RS=@ 'NF{for(i=1;i<=NF;i++)if($i) printf $i;print ""}' # 钦点记录分隔符
awk '{b[$1]=b[$1]$2}END{for(i in b){print i,b[i]}}' # 列叠加
awk '{ i=($1%100);if ( $i >= 0 ) {print $0,$i}}' # 求余数
awk '{b=a;a=$1; if(NR>1){print a-b}}' # 当前进减上风度翩翩行
awk '{a[NR]=$1}END{for (i=1;i<=NR;i++){print a[i]-a[i-1]}}' # 当前进减上大器晚成行
awk -F: '{name[x++]=$1};END{for(i=0;i<NR;i++)print i,name[i]}' # END只打字与印刷最后的结果,END块里面处理数组内容
awk '{sum2+=$2;count=count+1}END{print sum2,sum2/count}' # $2的总额 $2总和除个数(平均值)
awk -v a=0 -F 'B' '{for (i=1;i<NF;i++){ a=a+length($i)+1;print a }}' # 打印所以B的所在地点
awk 'BEGIN{ "date" | getline d; split(d,mon) ; print mon[2]}' file # 将date值赋给d,并将d设置为数组mon,打印mon数组中第一个要素
awk 'BEGIN{info="this is a test2010test!";print substr(info,4,10);}' # 截取字符串(substr使用)
awk 'BEGIN{info="this is a test2010test!";print index(info,"test")?"ok":"no found";}' # 相称字符串(index使用)
awk 'BEGIN{info="this is a test2010test!";print match(info,/[0-9]+/)?"ok":"no found";}' # 正则表明式相称查找(match使用)
awk '{for(i=1;i<=4;i++)printf $i""FS; for(y=10;y<=13;y++) printf $y""FS;print ""}' # 打印前4列和后4列
awk 'BEGIN{for(n=0;n++<9;){for(i=0;i++<n;)printf i"x"n"="i*n" ";print ""}}' # 乘法口诀
awk 'BEGIN{info="this is a test";split(info,tA," ");print length(tA);for(k in tA){print k,tA[k];}}' # 字符串分割(split使用)
awk '{if (system ("grep "$2" tmp/* > /dev/null 2>&1") == 0 ) {print $1,"Y"} else {print $1,"N"} }' a # 试行系统命令判定重返状态
awk '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' # 将多行转多列
netstat -an|awk -v A=$IP -v B=$PORT 'BEGIN{print "ClientstGuest_ip"}$4~A":"B{split($5,ip,":");a[ip[1]]++}END{for(i in a)print a[i]"t"i|"sort -nr"}' # 总括IP连接个数
cat 1.txt|awk -F" # " '{print "insert into user (user,password,email)values(""'''"$1"'','""'''"$2"'','""'''"$3"'');'"}' >>insert_1.txt # 处理sql语句
awk 'BEGIN{printf "what is your name?";getline name < "/dev/tty" } $1 ~name {print "FOUND" name " on line ", NR "."} END{print "see you," name "."}' file # 两文本相称

取本机IP{
/sbin/ifconfig |awk -v RS="Bcast:" '{print $NF}'|awk -F: '/addr/{print $2}'
/sbin/ifconfig |awk '/inet/&&$2!~"127.0.0.1"{split($2,a,":");print a[2]}'
/sbin/ifconfig |awk -v RS='inet addr:' '$1!="eth0"&&$1!="127.0.0.1"{print $1}'|awk '{printf"%s|",$0}'
/sbin/ifconfig |awk '{printf("line %d,%sn",NR,$0)}' # 钦命项目(%d数字,%s字符)
}

查看磁盘空间{
df -h|awk -F"[ ]+|%" '$5>14{print $5}'
df -h|awk 'NR!=1{if ( NF == 6 ) {print $5} else if ( NF == 5) {print $4} }'
df -h|awk 'NR!=1 && /%/{sub(/%/,"");print $(NF-1)}'
df -h|sed '1d;/ /!N;s/n//;s/ +/ /;' #将磁盘分区整理成朝气蓬勃行 可直接用 df -P
}

排列打字与印刷{
awk 'END{printf "%-10s%-10sn%-10s%-10sn%-10s%-10sn","server","name","123","12345","234","1234"}' txt
awk 'BEGIN{printf "|%-10s|%-10s|n|%-10s|%-10s|n|%-10s|%-10s|n","server","name","123","12345","234","1234"}'
awk 'BEGIN{
print " *** 开 始 *** ";
print "+-----------------+";
printf "|%-5s|%-5s|%-5s|n","id","name","ip";
}
$1!=1 && NF==4{printf "|%-5s|%-5s|%-5s|n",$1,$2,$3" "$11}
END{
print "+-----------------+";
print " *** 结 束 *** "
}' txt
}

老男孩awk经典题{
解析图片服务日志,把日志(种种图片访谈次数*图片大小的总和卡塔尔国名次,也便是精打细算每一个url的总访问大小
证实:本题坐褥条件应用:这么些功用能够用来IDC网址流量带宽相当高,然后通过解析服务器日志哪些要素占用流量过大,进而扩充优化或裁剪该图形,压缩js等方式。
焦点要求输出四个指标: 【被访问次数】 【访谈次数*单个被访谈文件大小】 【文件名(带UPAJEROL卡塔尔国】
测量试验数据
59.33.26.105 - - [08/Dec/2010:15:43:56 +0800] "GET /static/images/photos/2.jpg HTTP/1.1" 200 11299

awk '{array_num[$7]++;array_size[$7]+=$10}END{for(i in array_num) {print array_num[i]" "array_size[i]" "i}}'
}

awk练习题{

wang 4
cui 3
zhao 4
liu 3
liu 3
chang 5
li 2

1 通过第三个域搜索字符长度为4的
2 当第二列值大于3时,制造空白文件,文件名称叫当下行第一个域$1 (touch $1)
3 将文书档案中 liu 字符串替换为 hong
4 求其次列的和
5 求其次列的平均值
6 求其次列中的最大值
7 将第一列过滤重复后,列出每大器晚成项,每生机勃勃项的现身次数,每黄金年代项的尺寸总和

1、字符串长度
awk 'length($1)=="4"{print $1}'
2、推行系统命令
awk '{if($2>3){system ("touch "$1)}}'
3、gsub(/r/,"s",域) 在钦点域(暗中同意$0)中用s代替r (sed 's///g')
awk '{gsub(/liu/,"hong",$1);print $0}' a.txt
4、列求和
awk '{a+=$2}END{print a}'
5、列求平均值
awk '{a+=$2}END{print a/NR}'
awk '{a+=$2;b++}END{print a,a/b}'
6、列求最大值
awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
7、将首先列过滤重复列出每风流倜傥项,每生龙活虎项的产出次数,每意气风发项的尺寸总和
awk '{a[$1]++;b[$1]+=$2}END{for(i in a){print i,a[i],b[i]}}'
}

awk管理复杂日志{
6.19:
DHB_014_号百总机服务职业日报:圣菲波哥伦比亚大学 达到数极度!
DHB_023_号百漏话提示日报:滁州 达到数非常!
6.20:
DHB_014_号百总机服务工作日报:迈阿密 达到数相当!到

awk -F '[_ :]+' 'NF>2{print $4,$1"_"$2,b |"sort";next}{b=$1}'

# 当前进NF小于等于2 只针对{print $4,$1"_"$2,b |"sort";next} 有效 即 6.19:行跳过此操作, {b=$1} 依旧实践
# 当前行NF大于2 进行到 next 强制跳过本行,即跳过前边的 {b=$1}

广州 DHB_014 6.19
}
}

sed{

# 先读取资料、存入情势空间、对其进展编写制定、再出口、再用下大器晚成行替换方式空间内容
# 调节和测量检验工具sedsed (参数 -d)

-n # 输出由编辑指令调整(废除私下认可的输出,必需与编制指令一齐合作)
-i # 直接对文本操作
-e # 多种编排
-r # 正则可不转移特殊字符

b # 跳过相称的行
p # 打印
d # 删除
s # 替换
g # 合营s全体沟通
i # 行前插入
a # 行后插入
r # 读
y # 转换
q # 退出

& # 代表查找的串内容
* # 任性八个 后驱字符(前导符)
? # 0或1个 最小相配 没加-r参数需转义 ?
$ # 最一生机勃勃行
.* # 相配任意三个字符
(a) # 保存a作为标签1(1)

情势空间{

# 格局空间(两行两行管理) 格局相称的界定,常常来说,方式空间是输入文本中某风姿浪漫行,不过足以因此接纳N函数把多于意气风发行读入格局空间
# 暂存空间里私下认可存款和储蓄叁个空行
n # 读入下黄金年代行(覆盖上生机勃勃行)
h # 把形式空间里的行拷贝到暂存空间
H # 把情势空间里的行追加到暂存空间
g # 用暂存空间的剧情替换情势空间的行
G # 把暂存空间的故事情节增到方式空间的行后
x # 将暂存空间的剧情于形式空间里的当前进调换
! # 对其眼下的要协作的节制取反
D # 删除当前格局空间中央机关单位到并含有第多少个换行符的全数字符(/.*/相称形式空间中存有内容,相配到就实施D,没相配到就甘休D)
N # 追加下多个输入行到情势空间后边并在第二者间嵌入三个换行符,改换前段时间进号码,格局相配能够延长跨域这几个内嵌换行
p # 打字与印刷格局空间中的直到并蕴藏第四个换行的享有字符

}

标签函数{

: lable # 建构命令标志,同盟b,t函数使用跳转
b lable # 分支到脚本中包罗标志的地点,假如分段一纸空文则分支到剧本的末梢。
t labe # 推断分支,从最后大器晚成行开头,条件生龙活虎旦满意恐怕T,t命令,将造成分支到含有标号的指令出,恐怕到脚本末尾。与b函数分化在于t在推行跳转前会先反省其前二个替换命令是还是不是成功,如成功,则实施跳转。

sed -e '{:p1;/A/s/A/AA/;/B/s/B/BB/;/[AB]{10}/b;b p1;}' # 文件内容第生龙活虎行A第二行B:构建标签p1;七个替换函数(A替换来AA,B替换来BB)当A要么B到达11个将来调用b,重返
echo 'sd f f [a b c cddd eee]' | sed ':n;s#([[^ ]*) *#1#;tn' # 标签函数t使用方法,替换[]里的空格
echo "198723124.03"|sed -r ':a;s/([0-9]+)([0-9]{3})/1,2/;ta' # 每八个字符加一个逗号

}

援引外界变量{

sed -n ''$a',10p'
sed -n ""$a",10p"

}

sed 10q # 展现文件中的前10行 (模拟"head")
sed -n '$=' # 总结行数(模拟 "wc -l")
sed -n '5,/^no/p' # 打字与印刷从第5行到以no开端行之间的兼具行
sed -i "/^$f/d" a     # 删除相称行
sed -i '/aaa/,$d' # 删除匹配行到最后
sed -i "s/=/:/" c # 直接对文件替换
sed -i "/^pearls/s/$/j/" # 找到pearls伊始在行尾加j
sed '/1/,/3/p' file # 打字与印刷1和3里头的行
sed -n '1p' 文件 # 收取钦命行
sed '5iaaa' file # 在第5行以前插入行
sed '5aaaa' file # 在第5行以往抽入行
echo a|sed -e '/a/ib' # 在相称行前插入风姿罗曼蒂克行
echo a|sed -e '/a/ab' # 在相配行后插入后生可畏行
echo a|sed 's/a/&nb/g' # 在相称行后插入后生可畏行
seq 10| sed -e{1,3}'s/./a/' # 匹配1和3行替换
sed -n '/regexp/!p' # 只展现不相配正则表明式的行
sed '/regexp/d' # 只展现不匹配正则表明式的行
sed '$!N;s/n//' # 将每两行连接成风流倜傥行
sed '/baz/s/foo/bar/g' # 只在行中现身字串"baz"的景况下将"foo"替换到"bar"
sed '/baz/!s/foo/bar/g' # 将"foo"替换来"bar",而且只在行中未现身字串"baz"的处境下替换
echo a|sed -e 's/a/#&/g' # 在a前面加#号
sed 's/foo/bar/4' # 只替换每意气风发行中的第八个字串
sed 's/(.*)foo/1bar/' # 替换每行最终三个字符串
sed 's/(.*)foo(.*foo)/1bar2/' # 替换尾数第一个字符串
sed 's/[0-9][0-9]$/&5' # 在以[0-9][0-9]末尾的行后加5
sed -n ' /^eth|em[01][^:]/{n;p;}' # 相称几个入眼字
sed -n -r ' /eth|em[01][^:]/{n;p;}' # 相称四个关键字
echo -e "1n2"|xargs -i -t sed 's/^/1/' {} # 同有的时候候管理多少个公文
sed '/west/,/east/s/$/*VACA*/' # 修正west和east之间的持有行,在结尾处加*VACA*
sed 's/[^1-9]*([0-9]+).*/1/' # 抽取第风华正茂组数字,并且忽视掉初步的0
sed -n '/regexp/{g;1!p;};h' # 查找字符串并将相配行的上风流倜傥行突显出来,但并不突显相称行
sed -n ' /regexp/{n;p;}' # 查找字符串并将相称行的下意气风发行突显出来,但并不显得相称行
sed -n 's/(mar)got/1ianne/p' # 保存(mar)作为标签1
sed -n 's/([0-9]+).*(t)/21/p' # 保存多个标签
sed -i -e '1,3d' -e 's/1/2/' # 多种编排(先删除1-3行,在将1交流到2)
sed -e 's/@.*//g' -e '/^$/d' # 删除掉@后边全体字符,和空行
sed -n -e "{s/文本(正则)/替换的内容/p}" # 替换并打字与印刷出替换行
sed -n -e "{s/^ *[0-9]*//p}" # 打字与印刷并剔除正则表明式的那有个别剧情
echo abcd|sed 'y/bd/BE/' # 相配字符替换
sed '/^#/b;y/y/P/' 2 # 非#号带头的行替换字符
sed '/suan/r 读入文件' # 找到含suan的行,在末端加上读入的文本内容
sed -n '/no/w 写入文件' # 找到含no的行,写入到内定文件中
sed '/regex/G' # 在相称式样行之后插入生机勃勃空行
sed '/regex/{x;p;x;G;}' # 在相称式样行在此之前和今后各插入生龙活虎空行
sed 'n;d' # 删除全部偶数行
sed 'G;G' # 在每风姿洒脱行前面扩张两空行
sed '/^$/d;G' # 在输出的文件中每风度翩翩行前边将有且只有风姿浪漫空行
sed 'n;n;n;n;G;' # 在每5行后扩张生龙活虎空白行
sed -n '5~5p' # 只打印行号为5的倍数
seq 1 30|sed '5~5s/.*/a/' # 倍数行执行替换
sed -n '3,${p;n;n;n;n;n;n;}' # 从第3行起初,每7行呈现三遍
sed -n 'h;n;G;p' # 奇偶沟通
seq 1 10|sed '1!G;h;$!d' # 倒叙排列
ls -l|sed -n '/^.rwx.*/p' # 查找属主权限为7的文件
sed = filename | sed 'N;s/n/t/' # 为文件中的每生龙活虎行开展编号(轻巧的左对齐格局)
sed 's/^[ t]*//' # 将每生龙活虎行前导的"空白字符"(空格,制表符)删除,使之左对齐
sed 's/^[ t]*//;s/[ t]*$//' # 将每生机勃勃行中的前导和拖尾的空白字符删除
sed '/{abc,def}/[111,222]/s/^/00000/' # 相配须求转行的字符: } / [
echo abcd\nabcde |sed 's/\n/@/g' |tr '@' 'n' # 将换行符调换为换行
cat tmp|awk '{print $1}'|sort -n|sed -n '$p' # 取一列最大值
sed -n '{s/^[^/]*//;s/:.*//;p}' /etc/passwd # 取顾客家目录(相称不为/的字符和相称:到最终的字符全体去除)
sed = filename | sed 'N;s/^/ /; s/ *(.{6,})n/1 /' # 对文件中的全部行编号(行号在左,文字右端对齐)
/sbin/ifconfig |sed 's/.*inet addr:(.*) Bca.*/1/g' |sed -n '/eth/{n;p}' # 取所有IP

改过keepalive配置剔除后端服务器{

sed -i '/real_server.*10.0.1.158.*8888/,+8 s/^/#/' keepalived.conf
sed -i '/real_server.*10.0.1.158.*8888/,+8 s/^#//' keepalived.conf

}

模仿rev功能{

echo 123 |sed '/n/!G;s/(.)(.*n)/&21/;//D;s/.//;'
/n/!G;       # 没有n换行符,要推行G,因为保留空间中为空,所以在方式空间追加意气风发空行
s/(.)(.*n)/&21/; # 标签替换 &n23n1$ (关键在于& ,能够让前面//相配到空行)
//D;       # D 命令会引起循环删除格局空间中的第后生可畏有个别,假若除去后,形式空间中还会有多余行,则赶回 D 以前的一声令下,重新试行,假使 D 后,格局空间中从不任何内容,则将退出。 //D 相配空行实践D,尽管上句s未有相称到,//也无可奈何同盟到空行, "//D;"命令甘休
s/.//;       # D甘休后,删除开始的 n

}

}

xargs{

# 命令替换
-t 先打字与印刷命令,然后再进行
-i 用每项替换 {}
find / -perm +7000 | xargs ls -l # 将后面包车型地铁开始和结果,作为前边命令的参数
seq 1 10 |xargs -i date -d "{} days " +%Y-%m-%d # 列出10天日期

}

dialog菜单{

# 暗许将全部出口用 stderr 输出,不显示到显示屏 使用参数 --stdout 可将采纳赋给变量
# 退出状态 0准确 1荒诞

窗体类型{
--calendar # 日历
--checklist # 允许你显得三个采摘列表,种种选项都能够被单独的挑选(复选框)
--form # 表单,允许你创建一个带标签的文书字段,并须求填写
--fselect # 提供二个路径,令你筛选浏览的文书
--gauge # 呈现一个表,突显出达成的百分比,便是体现出进程条。
--infobox # 显示消息后,(未有等待响应卡塔 尔(阿拉伯语:قطر‎对话框马上回去,但不拔除显示屏(消息框)
--inputbox # 让顾客输入文本(输入框)
--inputmenu # 提供四个可供顾客编辑的菜系(可编写制定的菜系框卡塔 尔(阿拉伯语:قطر‎
--menu # 显示二个列表供顾客筛选(菜单框)
--msgbox(message) # 展现一条音信,并供给客户筛选八个规定开关(音讯框)
--password # 密码框,展现一个输入框,它隐蔽文本
--pause # 展现一个表格用来显示叁个钦命的暂停期的场合
--radiolist # 提供叁个菜谱连串组,不过只有二个项目,能够选取(单选框)
--tailbox # 在贰个滚动窗口文件中使用tail命令来彰显文本
--tailboxbg # 跟tailbox相近,不过在background形式下操作
--textbox # 在含有滚动条的文本框中显示文件的剧情 (文本框)
--timebox # 提供一个窗口,接纳小时,分钟,秒
--yesno(yes/no) # 提供三个带有yes和no按键的简短音信框
}

窗体参数{
--separate-output # 对于chicklist组件,输出结果叁回输出意气风发行,获得结果不加引号
--ok-label "提交" # 分明按键名称
--cancel-label "取消" # 裁撤按键名称
--title "标题" # 标题名称
--stdout # 将兼具出口用 stdout 输出
--backtitle "上标" # 窗体上标
--no-shadow # 去掉窗体阴影
--menu "菜单名" 20 60 14 # 菜单及窗口大小
--clear # 实现后清屏操作
--no-cancel # 不展现撤销项
--insecure # 使用星号来代表各种字符
--begin <y> <x> # 钦赐对话框左上角在显示器的上的做坐标
--timeout <秒> # 超时,重临的错误代码255,假使客户在钦赐的小运内尚未交给相应动作,就按超时管理
--defaultno # 使选用默以为no
--default-item <str> # 设置在生龙活虎份清单,表格或菜单中的暗许项目。平日在框中的第意气风发项是暗中同意
--sleep 5 # 在管理完二个对话框后静止(延迟)的年月(秒)
--max-input size # 节制输入的字符串在给定的轻重之内。若无一点名,暗中认可是2048
--keep-window # 退出时不清屏和重绘窗口。当几个构件在同一个程序中运作时,对于保留窗口内容很有用的
}

dialog --title "Check me" --checklist "Pick Numbers" 15 25 3 1 "one" "off" 2 "two" "on" # 多选分界面[方括号]
dialog --title "title" --radiolist "checklist" 20 60 14 tag1 "item1" on tag2 "item2" off # 多选分界面(圆括号)
dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" # 单选分界面
dialog --title "Installation" --backtitle "Star Linux" --gauge "Linux Kernel" 10 60 50 # 进度条
dialog --title "标题" --backtitle "Dialog" --yesno "说明" 20 60 # 选择yes/no
dialog --title "文告标题" --backtitle "Dialog" --msgbox "内容" 20 60 # 公告
dialog --title "hey" --backtitle "Dialog" --infobox "Is everything okay?" 10 60 # 突显新闻后及时离开
dialog --title "hey" --backtitle "Dialog" --inputbox "Is okay?" 10 60 "yes" # 输入对话框
dialog --title "Array 30" --backtitle "All " --textbox /root/txt 20 75 # 展现文书档案内容
dialog --title "Add" --form "input" 12 40 4 "user" 1 1 "" 1 15 15 0 "name" 2 1 "" 2 15 15 0 # 多条输入对话框
dialog --title "Password" --insecure --passwordbox "请输入密码" 10 35 # 星号呈现输入--insecure
dialog --stdout --title "日历" --calendar "请选择" 0 0 9 1 2010 # 采取日期
dialog --title "title" --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2" 2>tmp # 取到结果放到文件中(以规范错误输出结果)
a=`dialog --title "title" --stdout --menu "MENU" 20 60 14 tag1 "item1" tag2 "item2"` # 采纳操作赋给变量(使用正规输出)

dialog菜单实例{
while :
do
clear
menu=`dialog --title "title" --stdout --menu "MENU" 20 60 14 1 system 2 custom`
[ $? -eq 0 ] && echo "$menu" || exit # 判定dialog实施,裁撤退出
while :
do
case $menu in
1)
list="1a "item1" 2a "item2"" # 定同蒿单列表变量
;;
2)
list="1b "item3" 2b "item4""
;;
esac
result=`dialog --title "title" --stdout --menu "MENU" 20 60 14 $list`
[ $? -eq 0 ] && echo "$result" || break # 推断dialog实行,裁撤再次来到菜单,注意:合作上层菜单循环
read
done
done
}

}

select菜单{

# 输入项不在菜单自动会提醒重新输入
select menuitem in pick1 pick2 pick3 退出
do
echo $menuitem
case $menuitem in
退出)
exit
;;
*)
select area in area1 area2 area3 返回
do
echo $area
case $area in
返回)
break
;;
*)
echo "对$area操作"
;;
esac
done
;;
esac
done

}

shift{

./cs.sh 1 2 3
#!/bin/sh
until [ $# -eq 0 ]
do
echo "第八个参数为: $1 参数个数为: $#"
#shift 命令实施前变量 $1 的值在shift命令推行后不可用
shift
done

}

getopts给脚本加参数{

#!/bin/sh
while getopts :ab: name
do
case $name in
a)
aflag=1
;;
b)
bflag=1
bval=$OPTARG
;;
?)
echo "USAGE:`basename $0` [-a] [-b value]"
exit 1
;;
esac
done
if [ ! -z $aflag ] ; then
echo "option -a specified"
echo "$aflag"
echo "$OPTIND"
fi
if [ ! -z $bflag ] ; then
echo "option -b specified"
echo "$bflag"
echo "$bval"
echo "$OPTIND"
fi
echo "here $OPTIND"
shift $(($OPTIND -1))
echo "$OPTIND"
echo " `shift $(($OPTIND -1))` "

}

tclsh{

set foo "a bc" # 定义变量
set b {$a}; # 转义 b的值为" $a " ,并非变量结果
set a 3; incr a 3; # 数字的自增. 将a加3,如若要减3,则为 incr a –3;
set c [expr 20/5]; # 计算 c的值为4
puts $foo; # 打字与印刷变量
set qian(123) f; # 定义数组
set qian(1,1,1) fs; # 多维数组
parray qian; # 打字与印刷数组的全体音信
string length $qian; # 将重临变量qian的长短
string option string1 string2; # 字符相关串操作
# option 的操作选项:
# compare 依照字典的排序方式展开比较。依照string1 <,=,>string2分别重返-1,0,1
# first 再次来到string第22中学率先次面世string1的地点,若无现身string1则赶回-1
# last 和first相反
# trim 从string第11中学删去起首和最终的出以后string第22中学的字符
# tolower 再次回到string第11中学的全数字符被转变为小写字符后的新字符串
# toupper 再次回到string第11中学的全数字符串调换为大写后的字符串
# length 返回string1的长度
set a 1;while {$a < 3} { set a [incr a 1;]; };puts $a # 决断变量a小于3既循环
for {initialization} {condition} {increment} {body} # 伊始化变量,条件,增量,具体操作
for {set i 0} {$i < 10} {incr i} {puts $i;} # 将打字与印刷出0到9
if { 表达式 } {
#运算;
} else {
#别的运算;
}
switch $x {
字符串1 { 操作1 ;}
字符串2 { 操作2 ;}
}
foreach element {0 m n b v} {
# 将留意气风发组变元中开展巡回,况兼每回都将实践他的循环体
switch $element {
# 判断element的值
}
}

expect交互{

exp_continue # 八个spawn命令时并行
interact # 推行到位后保持相互作用状态,把调整权交给调节台
expect "password:" # 推断关键字符
send "passwdr" # 实施交相互影响作,与手工输入密码的动作相像。字符串结尾加"r"

ssh后sudo{

#!/bin/bash
#sudo注释下行允许后台运转
#Defaults requiretty
#sudo去掉!允许远程
#Defaults !visiblepw

/usr/bin/expect -c '
set timeout 5
spawn ssh -o StrictHostKeyChecking=no xuesong1@192.168.42.128 "sudo grep xuesong1 /etc/passwd"
expect {
"passphrase" {
send_user "sshkeyn"
send "xuesongr";
expect {
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "sudo eofn"
}
}
}
"password:" {
send_user "sshn"
send "xuesongr";
expect {
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "sudo eofn"
}
}
}
"sudo" {
send_user "sudon"
send "xuesongr"
interact
}
eof {
send_user "ssh eofn"
}
}
'

}

ssh实行命令操作{

/usr/bin/expect -c "
proc jiaohu {} {
send_user expect_start
expect {
password {
send ${RemotePasswd}r;
send_user expect_eof
expect {
"does not exist" {
send_user expect_failure
exit 10
}
password {
send_user expect_failure
exit 5
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
eof
}
}
passphrase {
send ${KeyPasswd}r;
send_user expect_eof
expect {
"does not exist" {
send_user expect_failure
exit 10
}
passphrase{
send_user expect_failure
exit 7
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
eof
}
}
Password {
send ${RemoteRootPasswd}r;
send_user expect_eof
expect {
incorrect {
send_user expect_failure
exit 6
}
eof
}
}
"No route to host" {
send_user expect_failure
exit 4
}
"Invalid argument" {
send_user expect_failure
exit 8
}
"Connection refused" {
send_user expect_failure
exit 9
}
"does not exist" {
send_user expect_failure
exit 10
}

"Connection timed out" {
send_user expect_failure
exit 11
}
timeout {
send_user expect_failure
exit 3
}
eof
}
}
set timeout $TimeOut
switch $1 {
Ssh_Cmd {
spawn ssh -t -p $Port -o StrictHostKeyChecking=no $RemoteUser@$Ip /bin/su - root -c \"$Cmd\"
jiaohu
}
Ssh_Script {
spawn scp -P $Port -o StrictHostKeyChecking=no $ScriptPath $RemoteUser@$Ip:/tmp/${ScriptPath##*/};
jiaohu
spawn ssh -t -p $Port -o StrictHostKeyChecking=no $RemoteUser@$Ip /bin/su - root -c \"/bin/sh /tmp/${ScriptPath##*/}\" ;
jiaohu
}
Scp_File {
spawn scp -P $Port -o StrictHostKeyChecking=no -r $ScpPath $RemoteUser@$Ip:${ScpRemotePath};
jiaohu
}
}
"
state=`echo $?`

}

相互双引号援引较长变量{

#!/bin/bash
RemoteUser=xuesong12
Ip=192.168.1.2
RemotePasswd=xuesong
Cmd="/bin/echo "$PubKey" > "$RemoteKey"/authorized_keys"

/usr/bin/expect -c "
set timeout 10
spawn ssh -o StrictHostKeyChecking=no $RemoteUser@$Ip {$Cmd};
expect {
password: {
send_user RemotePasswdn
send ${RemotePasswd}r;
interact;
}
eof {
send_user eofn
}
}
"

}

telnet交互{

#!/bin/bash
Ip="10.0.1.53"
a="{'method':'doLogin','params':{'uName':'bobbietest'}"
/usr/bin/expect -c"
set timeout 15
spawn telnet ${Ip} 8000
expect "Escape"
send "${a}\r"
expect {
-re ""err.*none"" {
exit 0
}
timeout {
exit 1
}
eof {
exit 2
}
}
"
echo $?

}

模拟ssh登录{
#好处:可加载情况变量

#!/bin/bash
Ip='192.168.1.6' # 循环就能够
RemoteUser='user' # 普通客商
RemotePasswd='userpasswd' # 普通客商的密码
RemoteRootPasswd='rootpasswd'
/usr/bin/expect -c "
set timeout -1
spawn ssh -t -p $Port -o StrictHostKeyChecking=no $RemoteUser@$Ip
expect {
password {
send_user RemotePasswd
send ${RemotePasswd}r;
expect {
"does not exist" {
send_user "root user does not existn"
exit 10
}
password {
send_user "user passwd errorn"
exit 5
}
Last {
send "su - batchn"
expect {
Password {
send_user RemoteRootPasswd
send ${RemoteRootPasswd}r;
expect {
"]#" {
send "sh /tmp/update.sh updaten "
expect {
"]#" {
send_user ${Ip}_Update_Donen
}
eof
}
}
}
}
}
}
}
}
"No route to host" {
send_user "host not foundn"
exit 4
}
"Invalid argument" {
send_user "incorrect parametern"
exit 8
}
"Connection refused" {
send_user "invalid port parametersn"
exit 9
}
"does not exist" {
send_user "root user does not exist"
exit 10
}
timeout {
send_user "connection timeout n"
exit 3
}
eof
}
"
state=`echo $?`

}

}

}

}

9 实例{

从1叠加到100{

echo $[$(echo +{1..100})]
echo $[(100+1)*(100/2)]
seq -s '+' 100 |bc

}

认清参数是或不是为空-空退出并打字与印刷null{

#!/bin/sh
echo $1
name=${1:?"null"}
echo $name

}

循环数组{

for ((i=0;i<${#o[*]};i++))
do
echo ${o[$i]}
done

}

判断路线{

if [ -d /root/Desktop/text/123 ];then
echo "找到了123"
if [ -d /root/Desktop/text ]
then echo "找到了text"
else echo "没找到text"
fi
else echo "没找到123文件夹"
fi

}

搜索现身次数最多{

awk '{print $1}' file|sort |uniq -c|sort -k1r

}

认清脚本参数是还是不是准确{

./test.sh -p 123 -P 3306 -h 127.0.0.1 -u root
#!/bin/sh
if [ $# -ne 8 ];then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi

while getopts :u:p:P:h: name
do
case $name in
u)
mysql_user=$OPTARG
;;
p)
mysql_passwd=$OPTARG
;;
P)
mysql_port=$OPTARG
;;
h)
mysql_host=$OPTARG
;;
*)
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
;;
esac
done

if [ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]
then
echo "USAGE: $0 -u user -p passwd -P port -h host"
exit 1
fi

echo $mysql_user $mysql_passwd $mysql_port $mysql_host
#结果 root 123 3306 127.0.0.1

}

正则相配邮箱{

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$

}

打字与印刷表格{

#!/bin/sh
clear
awk 'BEGIN{
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|n","Name","Number";
print "+--------------------+--------------------+";
}'
a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`
#cat a.txt |sort +1 -n |while read list
for list in $a
do
name=`echo $list |awk -F: '{print $1}'`
number=`echo $list |awk -F: '{print $2}'`
awk 'BEGIN{printf "|%-20s|%-20s|n","'"$name"'","'"$number"'";
print "+--------------------+--------------------+";
}'
done
awk 'BEGIN{
print " *** The End *** "
print " "
}'

}

剖断日期是或不是合法{

#!/bin/sh
while read a
do
if echo $a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1
then
if echo $a | grep -e '^[0-9]{4}-[01][0-9]-[0-3][0-9]$'
then
break
else
echo "您输入的日子违规,请从新输入!"
fi
else
echo "您输入的日期非法,请从新输入!"
fi
done
echo "日期为$a"

}

打字与印刷日期段全体日期{

#!/bin/bash
qsrq=20010101
jsrq=20010227
n=0
>tmp
while :;do
current=$(date +%Y%m%d -d"$n day $qsrq")
if [[ $current == $jsrq ]];then
echo $current >>tmp;break
else
echo $current >>tmp
((n++))
fi
done
rq=`awk 'NR==1{print}' tmp`

}

打字与印刷提醒{

cat <<EOF
#内容
EOF

}

登入远程试行命令{

# 特殊符号供给 转义
ssh root@ip << EOF
#实施命令
EOF

}

数学总结的小算法{

#!/bin/sh
A=1
B=1
while [ $A -le 10 ]
do
SUM=`expr $A * $B`
echo "$SUM"
if [ $A = 10 ]
then
B=`expr $B + 1`
A=1
fi
A=`expr $A + 1`
done

}

多行统黄金时代{

sed '{N;s/n//}' file # 将两行归总黄金年代行(去掉换行符)
awk '{printf(NR%2!=0)?$0" ":$0" n"}' # 将两行归中国人民解放军总后勤部生可畏行
awk '{printf"%s ",$0}' # 将富有行统黄金年代
awk '{if (NR%4==0){print $0} else {printf"%s ",$0}}' file # 将4行归总为风流浪漫行(可扩展)

}

反正调换{

cat a.txt | xargs # 列转行
cat a.txt | xargs -n1 # 行转列

}

竖行转横行{

cat file|tr 'n' ' '
echo $(cat file)

#!/bin/sh
for i in `cat file`
do
a=${a}" "${i}
done
echo $a

}

取客户的根目录{

#! /bin/bash
while read name pass uid gid gecos home shell
do
echo $home
done < /etc/passwd

}

长途打包{

ssh -n $ip 'find '$path' /data /opt -type f -name "*.sh" -or -name "*.py" -or -name "*.pl" |xargs tar zcvpf /tmp/data_backup.tar.gz'

}

把汉字转成encode格式{

echo 论坛 | tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n"
%c2%db%cc%b3
echo 论坛 | tr -d "n" | xxd -i | sed -e "s/ 0x/%/g" | tr -d " ,n" | tr "[a-f]" "[A-F]" # 大写的
%C2%DB%CC%B3

}

把目录带有大写字母的文本名改为任何大写{

#!/bin/bash
for f in *;do
mv $f `echo $f |tr "[A-Z]" "[a-z]"`
done

}

招来接二连三多行,在不连续的行前计划{

#/bin/bash
lastrow=null
i=0
cat incl|while read line
do
i=`expr $i + 1`
if echo "$lastrow" | grep "#include <[A-Z].h>"
then
if echo "$line" | grep -v "#include <[A-Z].h>"
then
sed -i ''$i'i\//All header files are include' incl
i=`expr $i + 1`
fi
fi
lastrow="$line"
done

}

查询数据库其余引擎{

#/bin/bash
path1=/data/mysql/data/
dbpasswd=db123
#MyISAM或InnoDB
engine=InnoDB

if [ -d $path1 ];then

dir=`ls -p $path1 |awk '//$/'|awk -F'/' '{print $1}'`
for db in $dir
do
number=`mysql -uroot -p$dbpasswd -A -S "$path1"mysql.sock -e "use ${db};show table status;" |grep -c $engine`
if [ $number -ne 0 ];then
echo "${db}"
fi
done
fi

}

批量校订数据库引擎{

#/bin/bash
for db in test test1 test3
do
tables=`mysql -uroot -pdb123 -A -S /data/mysql/data/mysql.sock -e "use $db;show tables;" |awk 'NR != 1{print}'`

for table in $tables
do
mysql -uroot -pdb123 -A -S /data/mysql/data/mysql.sock -e "use $db;alter table $table engine=MyISAM;"
done
done

}

将shell取到的数目插入mysql数据库{

mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "
use $dbname;
insert into data values ('','$ip','$date','$time','$data')
"

}

两天之内隔天数{

D1=`date -d '20070409' +"%s"`
D2=`date -d '20070304 ' +"%s"`
D3=$(($D1 - $D2))
echo $(($D3/60/60/24))

}

while推行ssh只循环叁回{

cat - # 让cat读连接文件stdin的新闻
seq 10 | while read line; do ssh localhost "cat -"; done # 显示的9次是被ssh吃掉的
seq 10 | while read line; do ssh -n localhost "cat -"; done # ssh加上-n参数可幸免只循环叁次

}

ssh批量执行命令{

#版本1
#!/bin/bash
while read line
do
Ip=`echo $line|awk '{print $1}'`
Passwd=`echo $line|awk '{print $2}'`
ssh -n localhost "cat -"
sshpass -p "$Passwd" ssh -n -t -o StrictHostKeyChecking=no root@$Ip "id"
done<iplist.txt

#版本2
#!/bin/bash
Iplist=`awk '{print $1}' iplist.txt`
for Ip in $Iplist
do
Passwd=`awk '/'$Ip'/{print $2}' iplist.txt`
sshpass -p "$Passwd" ssh -n -t -o StrictHostKeyChecking=no root@$Ip "id"
done

}

在同样地方打印字符{

#!/bin/bash
echo -ne "t"
for i in `seq -w 100 -1 1`
do
echo -ne "$ibbb"; # 关键b退格
sleep 1;
done

}

多进程后台并发简易调整{

#!/bin/bash
test () {
echo $a
sleep 5
}
for a in `seq 1 30`
do
test &
echo $!
((num++))
if [ $num -eq 6 ];then
echo "wait..."
wait
num=0
fi
done
wait

}

shell并发{

#!/bin/bash
tmpfile=$$.fifo # 创设管道名称
mkfifo $tmpfile # 创造管道
exec 4<>$tmpfile # 创设文件标示4,以读写情势操作管道$tmpfile
rm $tmpfile # 将创制的管道文件肃清
thred=4 # 内定并发个数
seq=(1 2 3 4 5 6 7 8 9 21 22 23 24 25 31 32 33 34 35) # 创制职分列表

# 为并发线程创造相应个数的占位
{
for (( i = 1;i<=${thred};i++ ))
do
echo; # 因为read命令一次读取后生可畏行,贰个echo默许输出叁个换行符,所感到各样线程输出一个占位换行
done
} >&4 # 将占位消息写入管道

for id in ${seq} # 从职责列表 seq 中按顺序获取每叁个职务
do
read # 读取后生可畏行,即fd4中的叁个占位符
(./ur_command ${id};echo >&4 ) & # 在后台实行任务ur_command 并将职务 ${id} 赋给当前职分;职责施行完后在fd4种写入二个占位符
done <&4 # 钦赐fd4为全部for的正经八百输入
wait # 等待全部在那shell脚本中运维的后台职务达成
exec 4>&- # 关闭管道

#!/bin/bash

FifoFile="$$.fifo"
mkfifo $FifoFile
exec 6<>$FifoFile
rm $FifoFile
for ((i=0;i<=20;i++));do echo;done >&6

for u in `seq 1 $1`
do
read -u6
{
curl -s >>/dev/null
[ $? -eq 0 ] && echo "${u} 次成功" || echo "${u} 次失败"
echo >&6
} &
done
wait
exec 6>&-

}

shell并发函数{

function ConCurrentCmd()
{
#进程数
Thread=30

#列表文件
CurFileName=iplist.txt

#定义fifo文件
FifoFile="$$.fifo"

#新建一个fifo类型的公文
mkfifo $FifoFile

#将fd6与此fifo类型文件以读写的方法连接起来
exec 6<>$FifoFile
rm $FifoFile

#其实就是在文件陈说符6中放置了$Thread个回车符
for ((i=0;i<=$Thread;i++));do echo;done >&6

#日后行业内部输入以后自fd5
exec 5<$CurFileName

#最初循环读取文件列表中的行
Count=0
while read -u5 line
do
read -u6
let Count+=1
# 此处定义一个子进程放到后台实行
# 一个read -u6发令实践二回,就从fd6中减去叁个回车符,然后向下施行
# fd6中尚无回车符的时候,就停在这里了,进而达成了经过数量调整
{
echo $Count

#这段代码框正是进行实际的操作了
function

echo >&6
#当进程截至之后,再向fd6中追加叁个回车符,即补上了read -u6减去的不得了
} &
done

#等待全部后案子进度甘休
wait

#关闭fd6
exec 6>&-

#关闭fd5
exec 5>&-
}

并发例子{

#!/bin/bash

FifoFile="$$.fifo"
mkfifo $FifoFile
exec 6<>$FifoFile
rm $FifoFile
for ((i=0;i<=20;i++));do echo;done >&6

for u in `seq 1 $1`
do
read -u6
{
curl -s >>/dev/null
[ $? -eq 0 ] && echo "${u} 次成功" || echo "${u} 次失败"
echo >&6
} &
done
wait
exec 6>&-

}
}

函数{

ip(){
echo "a 1"|awk '$1=="'"$1"'"{print $2}'
}
web=a
ip $web

}

检查测量试验软件包是否存在{

rpm -q dialog >/dev/null
if [ "$?" -ge 1 ];then
echo "install dialog,Please wait..."
yum -y install dialog
rpm -q dialog >/dev/null
[ $? -ge 1 ] && echo "dialog installation failure,exit" && exit
echo "dialog done"
read
fi

}

娱乐维护菜单-改良配置文件{

#!/bin/bash

conf=serverlist.xml
AreaList=`awk -F '"' '/<s/{print $2}' $conf`

select area in $AreaList 全部 退出
do
echo ""
echo $area
case $area in
退出)
exit
;;
*)
select operate in "改过版本号" "增多入保障护中" "删除维护中" "再次回到菜单"
do
echo ""
echo $operate
case $operate in
修正版本号)
echo 请输入版本号
while read version
do
if echo $version | grep -w 10[12][0-9][0-9][0-9][0-9][0-9][0-9]
then
break
fi
echo 请从新输入正确的本子号
done
case $area in
全部)
case $version in
101*)
echo "请确认操作对 $area 体验区 $operate"
read
sed -i 's/101[0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
102*)
echo "请确认操作对 $area 正式区 $operate"
read
sed -i 's/102[0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
esac
;;
*)
type=`awk -F '"' '/'$area'/{print $14}' $conf |cut -c1-3`
readtype=`echo $version |cut -c1-3`
if [ $type != $readtype ]
then
echo "版本号不对应,请从新操作"
continue
fi

echo "请确认操作对 $area 区 $operate"
read

awk -F '"' '/'$area'/{print $12}' $conf |xargs -i sed -i '/'{}'/s/10[12][0-9][0-9][0-9][0-9][0-9][0-9]/'$version'/' $conf
;;
esac
;;
累积入保证障中)
case $area in
全部)
echo "请确认操作对 $area 区 $operate"
read
awk -F '"' '/<s/{print $2}' $conf |xargs -i sed -i 's/'{}'/&维护中/' $conf
;;
*)
echo "请确认操作对 $area 区 $operate"
read
sed -i 's/'$area'/&维护中/' $conf
;;
esac
;;
删除维护中)
case $area in
全部)
echo "请确认操作对 $area 区 $operate"
read
sed -i 's/维护中//' $conf
;;
*)
echo "请确认操作对 $area 区 $operate"
read
sed -i '/'$area'/s/维护中//' $conf
;;
esac
;;
回来菜单)
break
;;
esac
done
;;
esac
echo "回车重新接受区"
done

}

keepalive剔除后端服务{

#!/bin/bash
#行数请自定义,暗中同意8行
if [ X$2 == X ];then
echo "error: IP null"
read
exit
fi
case $1 in
del)
sed -i '/real_server.*'$2'.*8888/,+8 s/^/#/' /etc/keepalived/keepalived.conf
/etc/init.d/keepalived reload
;;
add)
sed -i '/real_server.*'$2'.*8888/,+8 s/^#//' /etc/keepalived/keepalived.conf
/etc/init.d/keepalived reload
;;
*)
echo "Parameter error"
;;
esac

}

申诉中夏族民共和国反垃圾邮件联盟黑名单{

#!/bin/bash

IpList=`awk '$1!~"^#"&&$1!=""{print $1}' host.list`

QueryAdd=''
ComplaintAdd=''

CONTENT='大家是一家正规的XXX。xxxxxxx。恳请将大家的出殡服务器IP移出黑名单。多谢!
拍卖措施:
1.XXXX。
2.XXXX。'
CORP='abc.com'
WWW='www.abc.cm'
NAME='def'
MAIL='def@163.com.cn'
TEL='010-50000000'
LEVEL='0'

for Ip in $IpList
do
Status=`curl -d "IP=$Ip" $QueryAdd |grep 'Getout/ShowForm?IP=' |grep -wc '申诉脱离'`
if [ $Status -ge 1 ];then
IpStatus="黑名单中"
results=`curl -d "IP=${Ip}&CONTENT=${CONTENT}&CORP=${CORP}&WWW=${WWW}&NAME=${NAME}&MAIL=${MAIL}&TEL=${TEL}&LEVEL=${LEVEL}" $ComplaintAdd |grep -E '您的黑名单脱离申请已交给|该IP的退出申请已被外人付出|申请由于近年来内有被谢绝的记录'`
echo $results
if echo $results | grep '您的黑名单脱离申请已交付' > /dev/null 2>&1
then
complaint='申诉成功'
elif echo $results | grep '该IP的脱离申请已被别人付出' > /dev/null 2>&1
then
complaint='申诉重复'
elif echo $results | grep '申请由于近年来内有被谢绝的记录' > /dev/null 2>&1
then
complaint='申诉拒却'
else
complaint='异常'
fi
else
IpStatus='正常'
complaint='不须求申诉'
fi
echo "$Ip $IpStatus $complaint" >> $(date +%Y%m%d_%H%M%S).log
done

}

Web Server in Awk{

#gawk -f file
BEGIN {
x = 1 # script exits if x < 1
port = 8080 # port number
host = "/inet/tcp/" port "/0/0" # host string
url = ":" port # server url
status = 200 # 200 == OK
reason = "OK" # server response
RS = ORS = "rn" # header line terminators
doc = Setup() # html document
len = length(doc) + length(ORS) # length of document
while (x) {
if ($1 == "GET") RunApp(substr($2, 2))
if (! x) break
print "HTTP/1.0", status, reason |& host
print "Connection: Close" |& host
print "Pragma: no-cache" |& host
print "Content-length:", len |& host
print ORS doc |& host
close(host) # close client connection
host |& getline # wait for new client request
}
# server terminated...
doc = Bye()
len = length(doc) + length(ORS)
print "HTTP/1.0", status, reason |& host
print "Connection: Close" |& host
print "Pragma: no-cache" |& host
print "Content-length:", len |& host
print ORS doc |& host
close(host)
}

function Setup() {
tmp = "<html>
<head><title>Simple gawk server</title></head>
<body>
<p><a href=" url "/xterm>xterm</a>
<p><a href=" url "/xcalc>xcalc</a>
<p><a href=" url "/xload>xload</a>
<p><a href=" url "/exit>terminate script</a>
</body>
</html>"
return tmp
}

function Bye() {
tmp = "<html>
<head><title>Simple gawk server</title></head>
<body><p>Script Terminated...</body>
</html>"
return tmp
}

function RunApp(app) {
if (app == "xterm") {system("xterm&"); return}
if (app == "xcalc" ) {system("xcalc&"); return}
if (app == "xload" ) {system("xload&"); return}
if (app == "exit") {x = 0}
}

}

}

 

 

转发,接待分享转发

不许期更新下载地址:

请勿删除消息, 植入广告, 抵制不道品德行为为

那是多个二维码

  给个空子,观众扫小编

 澳门新濠3559 2

编辑:操作系统 本文来源:按时间倒叙列出所有目录和文件 ll -rt,按时间倒

关键词: