linux命令收集
mkdir 创建目录 -p递归创建 mkdir -p /data/aaa.txt
ls –l 显示目录或者文件 -F给不同文件结尾加不同的符号 -t按修改时间 -r翻转排序 -lrt -R显示当前目录下的内容 -i 显示inode信息
cd 切换目录层次
echo 打印输出内容
runlevel 查看系统运行级别
cat 查看文件内容 -n 显示行号(cat -n less -N nl grep -n .)
cat file1 file2 > file3 两个文件合并成一个
paste file1 file2 >file3 两个文件行合并
cp -a 拷贝文件或者目录 \cp 直接覆盖不提示或者全路径 -l 创建硬链接 -s 创建软链接
rm -f 强制删除文件 -r递归删除 删除文件或者目录 -fr删除指定的目录和文件
head 头部 显示文件头部 -n 行数 默认头部10行 head -2 test.txt
tail 尾部 显示文件尾部 -n 行数 默认尾部10行 tail -1 test.txt
grep (过滤)-v 排除 grep -v 排除内容 文件路径 grep -v aaa test.txt
sed 取各种内容 -n取消默认输出 p打印 d删除 sed -n /aaa/p test.txt
LANG=en 临时调整字符集
vim /etc/sysconfig/i18n 字符集路径
alias 查看别名 unalias 删除别名 cat ~/.bashrc 系统别名位置 设置别名 alias cp=
'cp -i'
which 查看命令的路径
find 查找命令 -type (f d) -name
"f"
按名字查找 -mtime 安装修改时间查找
-maxdepth level 查找目录的深度
find / -type f -name
"cat"
find / -name
"test.txt"
-exec rm -f {} \; find / -name
"test.txt"
|xargs rm -f 查找到删除
find /root/ -type f -name
"*.log"
-mtime -3|xargs rm -f 删除三天前数据
sed -n
'12,16p'
cc 打出12-16行
sed -i ‘s#aaalinux#windows#g’ cc 替换内容
find / -type f -name
"cc"
|xargs sed -i s#aaalinux#windows#g 查找并修改
awk
'{if(NR>3&&NR<26) print $0}'
cc
awk -F
":"
'{print $1}'
/etc/passwd
xargs 用于把find/ls的输出命令交给后面处理
find /tmp/aaa -type f ! -name
"passwd"
|xargs rm 除了passwd其他都删除
seq 打印数字序列echo {1..}
man 查看命令及配置文件等帮助
touch 创建文件或者修改文件时间戳
pwd 显示当前的路径
tree -L显示层数 -d列目录 查看目录结构
tail -f /
var
/log/maillog 查看实时文件变化
more 查看文件但是不能向上回滚
less 查看文件可以向上回滚
useradd 添加用户 –e 用户终止时间 –c 注释 –d指定家目录 –s指定sh
useradd xiao && echo 123456 | passwd --stdin xiao 快速添加用户和密码
usermod 修改用户信息
userdel 删除用户
groupadd 添加组 –g
passwd --stdin 修改用户密码,如果不指定用户,则修改当前用户密码,普通用户只能改自己的密码
chage 命令是用来修改帐号和密码的有效期限。
whoami 查看当前命令行终端用户
w 查看是哪个用户登录且使用情况
su 切换用户角色 注意要带上 -
sudo 让普通用户可以拥有指定用户root的权限的命令
yum 包管理工具 解决rpm包的依赖
yum info xx 查看软件详细信息
yum list all xx 查看软件安装版本
rpm -ivh 软件安装命令 rpm -ivh 包名.rpm
rpm -ql xx 查看软件安装文件路劲
chkconfig 查看设置开机自启动软件的命令 -add/ --list
netstat 查看网络状态-lntup 或-an
[--tcp |t] [--udp|-u] [--listening|-l ][--all|-a] [--numeric|-n] [--program|-p]
lsof -i :port 查看端口 ,list open files
uname -a -r -m 查看系统版本,内核版本
getconf LONG_BIT 查看系统位数
halt 关机(init 0)
reboot重启(init 6)
tar gzip打包组合zcvf,解包组合zxvf
bzip打包组合jcvf,解包组合jxvf
z(gzip),c(create),v(verbose),file,x(extract),j(bzip)
--exclude –X(--exclude-
from
),-C指定目录解压,-p保持属性
tar zcvf 筐 苹果
tar zcvf aaa1.tar.gz --exclude=aaa/time.sh ./aaa 排除打包
tar tf aaa3.tar.gz 查看包里的内容
tar zcvfX aaa3.tar.gz test.txt ./aaa 排除内容打包
tar xf aaa1.tar.gz 解包
tar xf aaa1.tar.gz -C /tmp/ 解包指定目录
cut 按列切割 –d 指定分隔符,-f数字选列,-c按字符
cut -c 1-4 取字符
wc -l 统计行号 cat –n file|tail -1
echo –n 不换行输出
sh -x file 查看脚本运行过程
sh -n file 检查脚本语法
dd命令创建虚拟镜像文件
# 从/dev/zero设备创建一个容量为 256M 的空文件virtual.img:
$ dd
if
=/dev/zero of=
virtual
.img bs=1M count=256
$ du -h
virtual
.img
dd
if
=/dev/cdrom of=/root/centos6.9.iso 克隆系统
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
tac 反转内容输出
date :显示时间
stat 文件详细属性
useradd 添加用户 –g –u –c –s -d –G –M –D
userdel 删除用户 -r
usermod 修改用户
groupadd 添加用户
groupdel 删除组
passwd 修改密码 --stdin
chage 修改密码过期属性 -l -E
su 切换用户角色 - -c
visudo 编辑sudo配置文件
id 查看用户身份
w who lastlog whoami finger
chmod 目录授权 -R 目录及子目录
chown 修改目录所属主
chattr +i(-i) 文件名 锁定文件(取消锁定)不可删除与清空
chattr +a(-a) 文件名 添加内容(只可添加内容)
使用lsattr 文件名 查看文件的特殊权限
root用户默认创建的目录权限是755,文件权限是644
普通用户默认创建的目录权限是775,文件权限是664
umask 禁止权限
umount 卸载命令 -lf强制卸载
dd convert and copy a file (dd
if
=/dev/sda of=mbr.bin bs=512 count=1)
mkfs 格式化命令 -t 文件系统类型mkfs.ext3
df -h 查看磁盘挂载信息
du –sh 查看文件及目录总大小 du -sh * 查看每个目录的大小
time 计算一个任务执行时间
uniq 去重 -c 计数
sort 排序(ascll) -r 逆序 -n 按数值 -u 除去重复项 -t 指定字段分隔符 -k 指定排序字段
sort -t
':'
-k 3 -n /etc/passwd
date -s 修改时间
chgrp 改变用户组 -R 递归
fgrep -r
"hello world"
.
/* 查询当前目标下,包含hello world的文件
磁盘分区:
fdisk 磁盘分区的命令 -l 查看列表 小于2T的分区工具
parted GUN磁盘分区工具,适合大于2T的分区工具
mount 挂载的命令 –t 文件系统类型 –o挂载的选项 –a
umount 卸载的命令 –lf强制卸载
mkfs 格式化命令 -t 文件系统类型mkfs.ext3
lsof –i:端口号 查看端口号对应的协议
netstat -lntup 查看协议对应的端口号
ethtool -i 网卡名 查看网卡名
env 显示所有的环境变量
export 显示当前环境变量
locale 显示系统编码
tee 记录消息 (覆盖) -a (追加)
at 定时任务 at -f test1.sh 00:28
atq 显示定时任务
atrm 56 删除定时任务
test -f file && echo true || echo false 测试文件是否存在 -z 字符串的长度为0 [ -f file ]
[ -z ] 长度为0
[ -n ]长度不为0
rename 批量修改扩展名
local tmp 局部变量定义
stat:文件/文件系统的详细信息显示
file :查看文件类型
tr 用来标准输入中替换或者删除操作进行字符转换。 echo ABcd|tr "[A-Z]" "[a-z]"
export HISTTIMEFORMAT='%F %T' history显示时间
sar 获取系统的CPU、运行队列、磁盘IO、分页(交换区)、内存、CPU中断、网络等性能数据
top 显示系统中各个进程的资源占用状况
htop 高级top yum install -y htop
iostat 对系统的磁盘IO操作进行监视。显示磁盘读写操作的统计信息
free 监控linux内存使用的指令 -m 兆为单位 -g G为单位
当观察到free栏已为0的时候,表示内存基本被吃完了,那就释放内存吧。
dmidecode -t 1 查看设备信息
dmidecode -s system-serial-number 查看序列号
释放内存:
sync
echo 3 > /proc/sys/vm/drop_caches
uptime 统计系统当前的运行状况
rename "jpg" "txt" *.jpg 把jpg改为txt
shuf -n3 随机取3行
mail -s "`date +%F-%T`$CHARS" 490004487@qq.com </tmp/messages.txt 发送邮件
nc -v -z -w2 192.168.0.3 1-100 扫描0.3 1-100的tcp端口
nc -nvv 192.168.0.1 80 //扫描 80端口 指定端口
nmap -sP 192.168.160.0/24|grep Nmap|awk '{print $NF}' 查看网段主机
dstat 多类型资源统计工具
-c: 显示cpu相关信息
-C #,#,...,total
-d: 显示disk相关信息
-D total,sda,sdb,...
-g:显示page相关统计数据
-m: 显示memory相关统计数据
-n: 显示network相关统计数据
-p: 显示process相关统计数据
-r: 显示io请求相关的统计数据
-s: 显示swapped相关的统计数据
--top-cpu:显示最占用CPU的进程
--top-io: 显示最占用io的进程
--top-mem: 显示最占用内存的进程
--top-latency: 显示延迟最大的进程
- -raw:显示裸套接字
- -ipc:进程间通信信息
实例1:显示cpu、进程、内存、io线程以及swap等相关信息
dstat -c -d -g -m -n -p -r -s
实例2:显示系统中cpu和io线程以及内存使用的情况
dstat --top-cpu --top-io --top-mem
实例3:显示tcp、udp协议和raw和socket套接字以及进程间通信的信息
dstat --tcp --udp --raw --socket --ipc
PS1='\[\e[32;1m\][\u@\h \W]\$ \[\e[0m\]' 改变提示符颜色文件路径:/etc/bashrc
显示路径则把W改成w:
kill -9 PID 强制杀进程
kill PID 杀进程
pkill 进程名 杀进程
vi/vim 记事本编译器
显示行号:set nu 删除当前行dd(n行 dd),拷贝当前行yy粘贴p切换到尾部G到文件头部gg退出保存:wq强制退出不保存:q!行首数字0行尾shift+a返回u向下搜索/字符向上搜索?字符删除全部dG
定位行号:vim +行号 test.sh
[root@localhost ~]# date +%F\ %T
2013-04-14 03:03:39
mysql自动补全:
在mysql下执行:rehash;
小结:
sed 擅长打印行
awk 擅长打印列
修改主机名的步骤:
1)hostname jianlai
2)vi /etc/syscofnig/network
3) vi /etc/hosts
修改网卡:编辑配置文件,然后/etc/init.d/network restart 重启网卡
ifup eth0 启动网卡
ifdown eth0 关闭网卡
ifconfig eth0:X 10.0.0.23/24 up 配置别名ip
ifoconfig eth0:X down 停掉
ip addr add 192.168.160.138/24 dev eth0 添加临时ip
iwconfig 查看无线网卡
配置默认网关:
route add default gw 10.0.2.3 添加默认网关
route del default gw 10.0.2.3 删除默认网关
如果你添加/修改默认网关时遇到这个问题。
原因:你要添加的网关不在你主机所在的网段。
解决方法:
比如你要添加的网关是10.57.50.1
sudo route add 10.57.50.1/32 dev eth0
然后再
sudo route add default gw 10.57.50.1
显示系统路由
ip route show
设置系统默认路由
ip route add default via 192.168.1.1
删除路由
ip route delete 192.168.1.0/24 dev eth0
DNS域名解析:
nslookup
dig
host
url下载:
wget
curl
网络检查:
Ping
路由追踪:
traceroute
端口扫描:
nmap
nc
telnet 可能防火墙
抓包工具:
tcpdump
tcpdump -i eth0
tcpdump -i p2p1 dst port 53 -c 1000 -w asd.pcap
tcpdump -i p2p1 dst port 53 -vv -nn
linux系统运行级别:
0 关机模式
1 单用户模式
2 无NFS的多用户模式
3 文本模式
4 无用
5 图形化
6 重启
elinks 实现一个纯文本界面的浏览器 yum install -y elinks
符号:
: 多个命令的分隔符
/ 根或者路径的分隔符
> 标准输出重定向(数据流朝着箭头的方向流动),覆盖原来的文件
>> 追加重定向
< 标准输入重定向 指定 输入内容 后跟文件名
<< 输入重定向
.. 上一级目录
~ 用户的家目录
`` 等于$()
| 管道 通过管道把前一个命令的输出交给后一个命令继续处理
{ } 大括号配合echo打印序列echo{}
. 当前目录 (隐藏文件的标识)
正则表达式:
^ 意思是什么开头 例如^aaa 就是以aaa开头
[^aaa] 不是aaa的内容
$ 意思是以什么结尾 例如aaa$ 就是以aaa结尾
^$ 一起就是空行
\ 让一个字符脱掉马甲,还原本来意义 ls -Fl |sed -n '/\/$/p'
grep -Ev "^#|^$" /etc/sysconfig/sshd
egrep -v "^#|^$" /etc/sysconfig/sshd
. 代表且只能代表任意一个字符
* 例0* 重复0个或多个前面的一个字符
.* 匹配所有字符。^.* 以任意多个字符开头
[ ] 字符集合的多个字符
[^word] 非 不包含word
~ 匹配
!~ 不匹配
a\{n,m\} 重复n到m次,前一个重复的字符
a\{,m\} 重复至多m次,前一个重复的字符
\{n,\} 重复至少n次
\{n\} 重复n次
卸载yum安装的软件 yum remove
文件修改显示时间:
[root@localhost aaa]# ls -l --time-style=long-iso
total 4
-rw-r--r--. 2 root root 0 2017-02-13 06:25 aaafile
取ip地址:
ifconfig eth0|grep " inet add"|cut -d":" -f2|cut -d " " -f1
ifconfig eth0|grep " inet add"|awk -F":" '{print $2}'|awk -F " " '{print $1}'
ifconfig eth0|awk -F "[:B]" 'NR==2{print $2}'
ifconfig eth0|sed -n '/inet addr/p'|sed 's#.*addr:##g'|sed 's# Bc.*$##g'
ifconfig eth0|sed -n 's#^.*addr:\(.*\) Bca.*$#\1#gp'
取得字符长度:
${#word}
wc -L
expr length
awk
取数组中元素:${arr[@]}
判断是否为数字:
if [[ `expr match "$1" "[0-9][0-9]*$"` == 0 ]]
判断文件扩展名:
if expr "$1" : ".*\.pub" &>/dev/null
将目录权限转换为数字:stat -c %a /etiantian
磁盘分区;
parted的交互模式:
# parted /dev/sdb
GNU Parted 1.8.1
Using /dev/sdb
Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt
将MBR磁盘格式化为GPT
(parted) mkpart primary 0 100
划分一个起始位置为0大小为100M的主分区
(parted) mkpart primary 100 200
划分一个起始位置为100M大小为100M的主分区
(parted) mkpart primary 0 -1
划分所有空间到一个分区
(parted) print
打印当前分区
(parted) quit
可能还会用到的一些命令
(parted) mklable msdos
如果要反过来.将GPT磁盘转化为MBR磁盘
在这样分完分区后,还要使用mkfs.ext3来进行格式化
#partprobe
#mkfs.ext3 -F /dev/sdb1
由于fdisk是不支持GPT磁盘,所以使用fdisk -l来查看磁盘刚才的分区是没有用的.
命令行的模式:
将硬盘转化为GPT磁盘后,执行下列命令
parted /dev/sdx mkpart primary 0 100 ##划分一个起始位置为0大小为100M的主分区
sed:
sed '2,5d' 将第 2~5 行删除
sed '2d' 只要删除第 2 行
sed '3,$d' 要删除第 3 到最后一行
sed '2a drink tea' 在第二行后(亦即是加在第三行)加上『drink tea?』字
sed '2i drink tea' 在第二行前
sed -n '5,7p' 第 5-7 行
sed -n '/root/p' 使用-n的时候将只打印包含模板的行。
sed '/root/d' 删除/etc/passwd所有包含root的行,其他行输出
sed 's/要被取代的字串/新的字串/g'
sed -i 's/\.$/\!/g' regular_express.txt 利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成!
sed -i 's/\(.\)\{6\}$//' domain.txt 去掉每行后的6个字符
sed 's/.\{6\}//' file 去掉每行的前6个字符
grep:
grep -v root /etc/passwd 将/etc/passwd,将没有出现 root 的行取出
grep -n '^[a-z]' regular_express.txt 开头是小写字节
grep -n '^the' regular_express.txt 让 the 只在行首列出
grep -n '^[^a-zA-Z]' regular_express.txt 不想要开头是英文字母
awk:
awk -F ':' '{print $1"\t"$7}' 账户和账户对应的shell,而账户与
awk 'NR==3' 读取第三行
awk '{print $NF}' 最后一列
shell之间以tab键分割
awk '{print length($0)}' 取字符串长度
diff + sort 快速比较文件差异
diff <(sort file1) <(sort file2)
vimdiff file1 file2 比较
1、在Linux终端运行命令的时候,在命令末尾加上 & 符号,就可以让程序在后台运行
root@Ubuntu$ ./tcpserv01 &
2、如果程序正在前台运行,可以使用 Ctrl+z 选项把程序暂停,然后用 bg %[number] 命令把这个程序放到后台运行
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ ./tcpserv01
^Z
[1]+ Stopped ./tcpserv01
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ bg %1
[1]+ ./tcpserv01 &
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$
3、对于所有运行的程序,我们可以用jobs –l 指令查看
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ jobs -l
[1]+ 4524 Running ./tcpserv01 &
4、也可以用 fg %[number] 指令把一个程序掉到前台运行
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ fg %1
./tcpserv01
5、也可以直接终止后台运行的程序,使用 kill 命令
cat@Ubuntu:~/unp/unpv13e/tcpcliserv$ kill %1
yum安装错误
rm -rf /var/run/yum.pid 来强行解除锁定,然后你的yum就可以运行了
yum常用命令
● 1.列出所有可更新的软件清单命令:yum check-update
● 2.更新所有软件命令:yum update
● 3.仅安装指定的软件命令:yum install <package_name>
● 4.仅更新指定的软件命令:yum update <package_name>
● 5.列出所有可安裝的软件清单命令:yum list
● 6.删除软件包命令:yum remove <package_name>
● 7.查找软件包 命令:yum search <keyword>
● 8.清除缓存命令:
○ yum clean packages: 清除缓存目录下的软件包
○ yum clean headers: 清除缓存目录下的 headers
○ yum clean oldheaders: 清除缓存目录下旧的 headers
○ yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
Linux 定时任务
实现linux定时任务有:cron、anacron、at等,这里主要介绍cron服务。
名词解释:
cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表。
软件包安装:
要使用cron服务,先要安装vixie-cron软件包和crontabs软件包,两个软件包作用如下:
vixie-cron软件包是cron的主程序。
crontabs软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
查看是否安装了cron软件包: rpm -qa|grep vixie-cron
查看是否安装了crontabs软件包:rpm -qa|grep crontabs
如果没有安装,则执行如下命令安装软件包(软件包必须存在)
rpm -ivh vixie-cron-4.1-54.FC5*
rpm -ivh crontabs*
如果本地没有安装包,在能够连网的情况下可以在线安装
yum install vixie-cron
yum install crontabs
查看crond服务是否运行:
pgrep crond
或
/sbin/service crond status
或
ps -elf|grep crond|grep -v "grep"
crond服务操作命令:
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/var/log/cron 日志文件路径
ipmi重启服务器
ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power off
ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power status
ipmitool -I lanplus -H 192.168.0.218 -U root -P dnion power on
ipmitool -I lanplus -H 192.168.0.218 -U root -P CacheApp power reset
ipmitool -I open sensor list
ssh设置
更改默认的SSH端口,先打开sshd_config文件
vim /etc/ssh/sshd_config
找到下面这行:
#Port 22
去掉#号设置端口号保存
service sshd restart
centos每天自动备份mysql数据库
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
export PATH
#数据库用户名
dbuser='root'
#数据库用密码
dbpasswd='********'
需要备份的数据库,多个数据库用空格分开
dbname='xiaohuai xiaohuai2'
#备份时间
backtime=`date +%Y%m%d%H%M%S`
#日志备份路径
logpath='/home/mysqlbak'
#数据备份路径
datapath='/home/mysqlbak'
#日志记录头部
echo ‘"备份时间为${backtime},备份数据库表 ${dbname} 开始" >> ${logpath}/log.log
#正式备份数据库
for table in $dbname; do
source=`mysqldump -u ${dbuser} -p${dbpasswd} ${table}> ${logpath}/${backtime}.sql` 2>> ${logpath}/mysqllog.log;
#备份成功以下操作
if [ "$?" == 0 ];then
cd $datapath
#为节约硬盘空间,将数据库压缩
tar jcf ${table}${backtime}.tar.bz2 ${backtime}.sql > /dev/null
#删除原始文件,只留压缩后文件
rm -f ${datapath}/${backtime}.sql
#删除七天前备份,也就是只保存7天内的备份
find $datapath -name "*.tar.bz2" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1
echo "数据库表 ${dbname} 备份成功!!" >> ${logpath}/mysqllog.log
else
#备份失败则进行以下操作
echo "数据库表 ${dbname} 备份失败!!" >> ${logpath}/mysqllog.log
fi
done
如果这个sh文件是在win下编辑的,需要用Uedit转换为unix格式,否则sh会执行不成功,如图
另外,一定要记得给这个sh文件执行权限
1chmod +x /home/sh/mysqlbak.sh
定时执行脚本:
方式:
1、
执行 crontab -e
输入以下内容:
______________________________________________________________________________
00 00 * * * /bin/bash yourpath/mysqlbak.sh
2、
打开自动执行文件
vi /etc/crontab
在etc中加入如下内容,让其自动执行任务。
00 00 * * * root /mysqlbak.sh
以上两个 00 00 *** 为每天的凌晨自动执行脚本
分 时 日 月 周 命令
M: 分钟(0-59)。每分钟用*或者 */
1表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
另外,测试的时候可以直接进入sh目录下执行
# sh sh ./mysqlbak.sh
等执行完了看看
#日志备份路径
logpath=
'/home/mysqlbak'
这个目录下有没有备份文件,如果有,则表示sh执行成功,没有错误。
Linux下模拟多线程的并发并发shell脚本
分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量在定义数量的服务器上执行相关命令,比起普通
for
/
while
循环只能顺序一条一条执行的效率高非常多,在管理大批服务器时非常的实用。
以下脚本功能是通过scp(也可选rsync)向上千台服务器传更新包,脚本运行后同时在后台有50个scp进程向服务器传包。
#!/bin/bash
ip=`cat iplist.txt|grep -v
"#"
|awk
'{print $1}'
` #过滤服务器IP
dir=
'/usr/local/src'
#目标路径
thead_num=50 #自定义并发数,根据自身服务器性能或应用调整大小,开始千万别定义太大,避免管理机宕机
tmp_fifo_file=
"/tmp/$$.fifo"
#以进程ID号命名管道文件
mkfifo $tmp_fifo_file #创建临时管道文件
exec 4<>$tmp_fifo_file #以读写方式打开tmp_fifo_file管道文件,文件描述符为4,也可以取3-9任意描述符
rm -f $tmp_fifo_file #删除临时管道文件,也可不删除
服务器压力测试:
ApacheBench用法详解:在Linux系统,一般安装好Apache后可以直接执行;
# ab -n 1000 -c 100 http://10.1.1.128/test.php
//n后面的代表总共发出1000个请求;-c后面的100表示采用100个并发(模拟100个人同时访问),后面的网址表示测试的目标URL。
paste file1 file2 合并两个文件或两栏的内容
paste -d
'+'
file1 file2 合并两个文件或两栏的内容,中间用
"+"
区分
sort file1 file2 排序两个文件的内容
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)
sort file1 file2 | uniq -u 删除交集,留下其他的行
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)
comm -1 file1 file2 比较两个文件的内容只删除
'file1'
所包含的内容
comm -2 file1 file2 比较两个文件的内容只删除
'file2'
所包含的内容
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
字符设置和文件格式转换
dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX
unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS
recode ..HTML < page.txt > page.html 将一个文本文件转换成html
recode -l | more 显示所有允许的转换格式
文件系统分析
badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块
fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性
fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性
e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性
fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性
fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性
初始化一个文件系统
mkfs /dev/hda1 在hda1分区创建一个文件系统
mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统
mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统
mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统
fdformat -n /dev/fd0 格式化一个软盘
mkswap /dev/hda3 创建一个swap文件系统
mke2fs -t ext3 /dev/sda5 #把分区格式为ext3格式的
mke2fs -t ext3 -b 2048 /dev/sda5 # 把分区的块改成2048字节,一般用于系统中小文件很多的情况
mke2fs -t ext3 -m 3 /dev/sda5 #把分区预留的空间改为所占总空间的3%,默认为5%,因为当某个分区足够大的时候,可以减少空间
mke2fs -t ext3 -L DATE /dev/sda5 #把分区的卷标设置为DATE
SWAP文件系统
mkswap /dev/hda3 创建一个swap文件系统
swapon /dev/hda3 启用一个新的swap文件系统
swapon /dev/hda2 /dev/hdb3 启用两个swap分区
备份
dump -0aj -f /tmp/home0.bak /home 制作一个
'/home'
目录的完整备份
dump -1aj -f /tmp/home0.bak /home 制作一个
'/home'
目录的交互式备份
restore -
if
/tmp/home0.bak 还原一个交互式备份
rsync -rogpav --delete /home /tmp 同步两边的目录
rsync -rogpav -e ssh --delete /home ip_address:/tmp 通过SSH通道rsync
rsync -az -e ssh --delete ip_addr:/home/
public
/home/local 通过ssh和压缩将一个远程目录同步到本地目录
rsync -az -e ssh --delete /home/local ip_addr:/home/
public
通过ssh和压缩将本地目录同步到远程目录
dd bs=1M
if
=/dev/hda | gzip | ssh user@ip_addr
'dd of=hda.gz'
通过ssh在远程主机上执行一次备份本地磁盘的操作
dd
if
=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件
tar -Puf backup.tar /home/user 执行一次对
'/home/user'
目录的交互式备份操作
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr
'cd /home/share/ && tar x -p'
通过ssh在远程目录中复制一个目录内容
( tar c /home ) | ssh -C user@ip_addr
'cd /home/backup-home && tar x -p'
通过ssh在远程目录中复制一个本地目录
tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接
find /home/user1 -name
'*.txt'
| xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以
'.txt'
结尾的文件到另一个目录
find /
var
/log -name
'*.log'
| tar cv --files-
from
=- | bzip2 > log.tar.bz2 查找所有以
'.log'
结尾的文件并做成一个bzip包
dd
if
=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作
dd
if
=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容
光盘
cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容
mkisofs /dev/cdrom > cd.iso 在磁盘上创建一个光盘的iso镜像文件
dd
if
=/dev/cdrom of=/root/cd.iso
mkisofs /dev/cdrom | gzip > cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件
mkisofs -J -allow-leading-dots -R -V
"Label CD"
-iso-level 4 -o ./cd.iso data_cd 创建一个目录的iso镜像文件
cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件
gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件
mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件
cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中
cd-paranoia --
"-3"
从一个CD光盘转录音轨到 wav 文件中(参数-3)
cdrecord --scanbus 扫描总线以识别scsi通道
dd
if
=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD