整理的linux面试运维题,系统运维常用命令及常识

运用办法:
$0 options

logger是一个shell命令接口,能够经过该接口使用Syslog的系统日志模块,还足以从命令行直接向系统日志文件写入一行音信。

用作Linux运转,必要理解Linux操作系统的主导使用和保管知识,下边脚本之家小编给我们介绍下Linux运转供给精晓的下令,想成为Linux运转的相爱的人能够来上学一下。

  1. 哪些在非交互方式下把 /home/example/下全部.conf文件中的 192.168.0.2 改成 db01 ?

options有:

logger 语法

logger [options] [messages]
options (选项):
-d, --udp
利用数据报(UDP)并非选取暗许的流连接(TCP)
-i, --id
逐行记录每二次logger的经过ID
-f, --file file_name
记录特定的文件
-h, --help
来得援救文本并脱离
-n, --server
写入钦赐的远程syslog服务器,使用UDP代替内装式syslog的例程
-P, --port port_num
采用内定的UDP端口。暗中同意的端口号是514
-p, --priority priority_level
钦命输入新闻的优先级,优先级能够是数字可能内定为 "facility.level" 的格式。比如:"-p local3.info " local3 这么些设备的消息等级为info。暗中同意品级是 "user.notice"
-s, --stderr
出口标准错误到系统日志。
-t, --tag tag
钦点标识记录
-u, --socket socket
写入钦赐的socket,并不是到内置系统日志例程。
-V, --version
具体版本消息并脱离

messages:写入log文件的剧情音信,能够与-f协作使用。
logger 以0退出表示成功,大于0表示战败。

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

 

-h 帮助

日记等第

facility:
auth: 客商授权
authpriv: 授权和平安
cron: 铺排职分
daemon: 系统守护进程
kern: 与根本有关的音信
lpr 与打字与印刷服务有关的消息
mail 与电子邮件有关的音讯
news 来自信息服务器的新闻
syslog 由syslog生成的新闻
user 客户的主次生成的新闻,暗中认可
uucp 由uucp生成的音讯
local0~7 用来定义本地战略

level:
alert 需求及时使用动作
crit 临界状态
debug 调试
emerg 系统不可用
err 错误状态
error 错误状态
info 符合规律信息
notice 符合规律不过要留意

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


find /home/example/ -type f -name "*.conf" -print|xargs sed -i 's/192.168.0.2/db01/g'

-i [ip] 查找在有着的日记文件极其IP_ADDRESS和探究排名前十几人的IP在日记文件中记录。
-d [ip] 从日记文件中删去IP
-s [虚假IP] 骗ip,当不能够去除的时候
-u [用户名] 删除客户记录
-w [shell的web路径] 清除shell大小马的访谈日志
-f (不提出选拔,fuck的情致,清空全体日志)
-e "文件扩充名" 查找别的后门
-r [路径] 从哪初阶查找,调节范围的

示例:

$ logger System Rebooted #往系统日志例程中写入“System Rebooted”可在/var/log/syslog中查看
写入到钦赐的log文件中。

$ vim /etc/rsyslog.conf #在终极一行参与local3.* /var/log/my_test.log 意思是出自local3的装有音讯都记录到/var/log/my_test.log中。

$ service rsyslog restart #重启rsyslog服务

$ logger -i -t "my_test" -p local3.notice "test_info"

$ cat /var/log/my_test.log
May 5 21:27:37 gino-virtual-machine my_test[3651]: test_info

-i 在每行都记录进程ID
-t my_test每行记录都加上“my_test”这么些标签
-p local3.notice 设置记录的器材和等级
"test_info" 输出音讯

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 {} ;

 

For Example:

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


 

Ex: $0 -h
* To show this help message

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 程序

  1. 写iptables 准绳,只允许远程主机访谈本机的 22,80 ,443端口 

Ex: $0 -i 192.168.1.7
* To search 192.168.1.7 in all logs files. Basically finding which logs files have trace of it, and
* In addition to that, search all log files (/var/log/*) and show Top 20 most logged IP’s in log files.
* They could be good choices for spoofing

gcc -g hello.c -o hello


 

Ex: $0 -d 192.168.1.7 -s 10.1.1.7 -u “cracker”
* To delete lines containing 192.168.1.7 and|or user_name “cracker” from ASCII files, and
* To spoof 192.168.1.7 in non-ASCII files by 10.1.1.7 and user_name “cracker” by “root”

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
询问用过的吩咐暗中认可一千 条
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 协助半设想化AMD 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

 

Ex: $0 -d 192.168.1.7 -s 10.1.1.7 -u “cracker” -w “/var/www/xyz.com/uploads/c99.php”
* To delete lines containing 192.168.1.7 and|or user_name “cracker” and|or web_shell_path from ASCII files, and
* To spoof 192.168.1.7 in non-ASCII files by 10.1.1.7 and user_name “cracker” by “root”

/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: 一九一四72k total 物理内部存款和储蓄器总的数量
173656k used 使用的大要内部存款和储蓄器总数
17616k free 空闲内部存款和储蓄器总数
22052k buffers 用作内核缓存的内部存款和储蓄器量
Swap: 一九三〇72k total 调换区总数
0k used 使用的交流区总的数量
一九二八72k free 空闲交流区总的数量
123988k cached 缓冲的沟通区总数。
内部存款和储蓄器中的原委被换出到调换区,而后又被换入到内部存储器,但运用过的沟通区尚未被掩盖,
该数值即为这么些剧情已存在于内部存款和储蓄器中的沟通区的高低。
相应的内部存款和储蓄器再度被换出时可不要再对交换区写入。
进度新闻区
总括消息区域的凡间展现了逐条进程的详细消息。首先来认知一下各列的含义。
序号列名含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程全部者的客商id
e USE陆风X8 进度全数者的客户名
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
##################################
iptables
内建多少个表:nat mangle 和filter
filter 预设法则表,有INPUT、FO昂CoraWA科雷傲D 和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
MI冠道ROWrangler 镜射封包
QUEUE 中断过滤程序
RETULX570N 甘休在时下法则炼中的过滤程序
MAWranglerK 将封包标上有些代号
##################################
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 INPUT -p tcp -m multiport --dport 22,80,443 -j ACCEPT

Ex: $0 -f
* To erase all log files listed in log_files.sh completely (not recommended)

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


iptables -A OUTPUT -p tcp -m multiport --sport 22,80,443 -j ACCEPT

Ex: $0 -e “php txt asp” -r /var/www
* To search for probable web backdoors planted on system. Once found, it is recommended to verify the result
* The current example searches for files having extensions php or txt or asp in /var/www and subdirectories
* Extensions and web_root_directory are customizable

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 等级后跟服务名

 

  Linux-Log-Eraser (10.5 KiB, 7 hits)

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


iptables -P INPUT DROP

原创小说,转发请表明: 转发自Ps7isys Blog

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
半开扫描(平时不会记录日志)
nmap -sS 192.168.1.1-111
不辅助windows 的扫描(推断是不是是windows)
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)
nmap -D 192.168.1.1-111
端口范围
nmap -p 20-30,139,60000-
表示:扫描20 到30 号端口,139 号端口以及具有大于50000 的端口
结缘扫描(不ping、软件版本、内核版本、详细消息)
nmap -P0 -sV -O -v 192.168.30.251

iptbales -P FORWAD DROP

$0 options options有: -h 帮助 -i [ip] 查找在装有的日记文件极度IP_ADDRESS和查找排行前十八位的IP在日记文件中记录。 -d [ip] 从日记文件...

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


iptbales -P OUTPUT DROP

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

下一场,提取以“:“分割的第三个字段?

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


  1. nginx 配置文件修改后,在不影响线上访谈的前提下,用什么命令检查文件语法错误以及平滑重启nginx 
    /usr/local/nginx/sbin/nginx -t
    /usr/local/nginx/sbin/nginx -s reload

7 客商管理

创造顾客
useradd xuesong
修改密码
passwd 用户
echo "xuesong" | passwd xuesong --stdin
搜寻客户突显消息
finger
添加组
groupadd
修改文件具有者(RAV4 递归)
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

 

"


 

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)
    -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 铃声\007
      b Ctrl-H 退格符\010
      f Ctrl-L 走行换页\014
      n Ctrl-J 新行\012
      r Ctrl-M 回车\015
      t Ctrl-I tab 键\011
      v Ctrl-X \030
      将兼具大写转变到小写字母
      tr A-Z a-z
      将空格替换为换行
      tr " " "n"
      删去空行
      tr -s "[\012]" < plan.txt
      tr -s ["n"] < plan.txt
      剔除文件中的^M,并代之以换行
      tr -s "[\015]" "[n]" < file
      tr -s "[r]" "[n]" < file
      轮换passwd 文件中全部冒号,代之以tab 键
      tr -s "[:]" "[\011]" < /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 完整的输入记录
      AEvoqueGC 命令行参数的数据
      AEvoqueGIND 命令行中当前文件的职责( 从0 开首算)
      A奥德赛GV 富含命令行参数的数组
      CONVFMT 数字调换格式( 暗许值为%.6g)
      ENVIRON 碰到变量关联数组
      E奥德赛QashqaiNO 最后贰个种类错误的叙说
      FIELDWIDTHS 字段宽度列表( 用空格键分隔)
      FILENAME 当前文件名
      FNKoleos 同N奥迪Q3 ,但相对于近年来文件
      FS 字段分隔符( 默许是其余空格)
      IGNORECASE 即便为真(即非0 值),则举行忽略大小写的相称
      NF 当前记下中的字段数(列)
      NLacrosse 当前行数
      OFMT 数字的出口格式( 默许值是%.6g)
      OFS 输出字段分隔符( 私下认可值是叁个空格)
      OLacrosseS 输出记录分隔符( 默许值是一个换行符)
      EscortLENGTH 由match 函数所相称的字符串的尺寸
      RubiconS 记录分隔符( 私下认可是一个换行符)
      瑞鹰START 由match 函数所相称的字符串的首先个职分
      SUBSEP 数组下标分隔符( 暗许值是/034) 。
      BEGIN 先管理(可不加文件参数)
      END 甘休时管理
      [[:digit:][:lower:]] 数字和小写字母(占二个字符)
      -F"[ ] |[%] " 已多少个空格或五个%为分隔符
      [a-z] 五个小写字母
      [a-Z] 代表享有大大小小写字母(aAbB...zZ)
      [a-z] 代表享有大大小小写字母(ab...z)
      打字与印刷相称到得行
      awk '/Tom/' 文件
      借使第多少个字段值小于5000 才打字与印刷
      awk '$3 <4000' 文件
      相称Tom 最早的行打字与印刷第三个字段
      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=($10);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 总和除个数(平均值) 第
      多个值是$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;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'
      将几行统一成一行
      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"

      本文由星彩网app下载发布于星彩网app下载,转载请注明出处:整理的linux面试运维题,系统运维常用命令及常识

      TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。