Linux

Centos6.7

by王国强

 

3c17c1544aac2a34e766a45d3f57e639.png

 

目录

Linux. 1

Centos6.7. 1

by王国强.. 1

一、centos6.7常用命令.. 12

date查看系统时间.. 12

hwclock设置设备硬件时间.. 12

reboot重新启动.. 12

poweroff关机.. 12

wget下载.. 12

ps查看系统进程.. 12

top任务管理器.. 12

pidof查看服务进程的pid. 12

kill结束进程pid. 13

killall关闭成组服务.. 13

ifconfig 查看网卡配置.. 13

uname 查看系统内核版本信息.. 13

uptime查看上线时间及负载情况.. 13

w显示哪个用户登录在做什么.. 13

who显示当前所处的用户和登录的用户.. 13

whoami 显示当前所处的用户.. 13

who am i是登录的用户.. 13

last查看登录日志.. 13

reset 清屏重置所有乱码.. 14

od以不同进制显示文件.. 14

history 历史执行命令.. 14

pwd 显示当前所在目录.. 14

cd切换目录.. 14

ls查看目录中的文件.. 14

cat纯文本查看.. 14

tac反向读取.. 15

rev反向读取.. 15

more 内容查看命令.. 15

head查看文本文档前行.. 15

tail查看文本文档后内容.. 15

tailf 历史执行命令.. 15

wc 统计文本行数、字数、字节数.. 15

mkdir 创建文件夹.. 15

touch新建文件.. 16

stat查看文件具体存储信息.. 16

cp复制.. 16

mv剪切操作源文件.. 16

rm删除文件.. 16

file查看文件类型.. 16

su切换登录用户.. 16

sudo对用户的执行命令权限进行限制.. 17

echo原样输出.. 17

alias命令别名.. 17

unalias取消命令别名.. 17

type查询命令类型.. 17

tr替换显示文本内容不改变内容.. 18

cut切割行内容.. 18

setup 配置系统信息.. 18

diff对比文件是否相同.. 18

vimdiff对比文件是否相同.. 19

tar 压缩、解压缩.. 19

dd复制文件并对原文件的内容进行转换和格式化处理.. 19

grep过滤需要的内容.. 20

egrep合并过滤内容.. 20

env查看系统中所有环境变量.. 20

set命令显示所有本地定义的Shell变量.. 20

export设置新的全局环境变量.. 20

unset清除环境变量.. 21

readonly命令设置只读变量.. 21

--help简略帮助命令.. 21

man帮助文档.. 21

find查找文件命令.. 21

sed流编辑器命令.. 21

xargs传递从获取内容创建执行命令行.. 22

seq生成序列.. 22

netstat查看网络连接.. 23

useradd添加系统用户.. 23

passwd为用户设置密码.. 23

chage修改用户密码属性.. 23

userdel删除用户.. 24

crontab定时任务配置命令.. 24

runlevel查看系统运行级别.. 24

chkconfig 查看开机启动服务.. 24

source更新配置文件命令.. 24

df查看分区挂载.. 24

blkid查看硬盘uuid  硬件识别编码.. 25

route路由.. 25

nl显示行号.. 25

less查看文件.. 25

ln设置链接.. 25

dumpe2fs查看硬盘inode分配情况.. 25

lastlog查看用户最近登录信息.. 26

id查看用户UID GID. 26

du查看文件或目录大小.. 26

which查询命令全路径所在的路径.. 26

whereis查找命令帮助代码路径.. 26

locate通过名字找文件.. 26

readlink查看软链接文件对应源文件路径.. 26

rename重命名.. 26

basename去除目录和后缀.. 27

md5sum校验MD5.. 27

awk过滤输出内容,处理日志文本.. 27

free内存查看.. 28

sync将缓冲区数据写入磁盘.. 28

groups显示用户所在组.. 28

groupadd添加用户组.. 28

groupdel删除用户组.. 28

usermod修改用户属性.. 28

chmod修改文件权限.. 28

umask查询默认权限.. 29

mount挂载分区到文件系统.. 29

umount卸载挂载.. 29

dig域名解析过程.. 29

nslookup域名解析.. 29

host域名解析.. 29

logout退出用户登录.. 29

lsof查询端口对应的服务,文件占用情况.. 30

ping链路通段ICMP协议.. 30

traceroute路由跟踪.. 30

telnet远程连接登录.. 31

nmap端口检测.. 31

tcpdump抓包工具.. 31

rpm文件安装.. 31

yum文件安装.. 31

mkfs格式化文件.. 32

mkswap格式化.. 32

partprobe不重启的情况下重读分区.. 32

swap  on/off开启关闭系统交换区.. 33

sfdisk分区工具.. 33

fsck磁盘检查修复.. 33

strace调试工具.. 33

e2fsck磁盘检查工具.. 33

chown修改文件的用户和组.. 33

chattr修改文件特殊权限属性.. 34

lsattr查看文件特殊权限属性.. 34

split文件分割.. 34

paste文件合并.. 34

sortascii码大小排序升序第一列排序.. 34

tee读取标准输入的数据,并将其内容输出成文件.. 35

exportfs文件挂载NFS. 35

watch监控命令周期性执行程序.. 36

zip压缩命令.. 36

unzip解压缩.. 36

scp远程安全拷贝命令基于ssh服务.. 36

sftp远程基于ssh服务.. 36

curl上传下载数据到服务器.. 37

二、centos6.7常用配置文件.. 37

/etc/ssh/sshd_config 远程登录ssh配置.. 37

etc/redhat-release  系统内核版本详细信息.. 37

var/log/wtmp  登陆日志文件.. 37

centos 环境变量/etc/profile/etc/bashrc~/.bash_profile~/.bashrc的区别.. 38

dev/null/dev/zero的区别.. 38

etc/sysconfig/network-scripts  网卡信息配置.. 38

etc/yum.repos.d     软件仓库yum配置文件.. 38

etc/sysconfig/i18n 区域语言设置配置文件.. 39

etc/crontab /var/spool/cron定时任务配置文件区别.. 39

etc/init.d软件服务脚本配置文件.. 39

etc/inittab 系统运行级别配置文件.. 39

etc/hosts系统host配置文件.. 39

etc/resolv.conf显示系统DNS. 40

app/logs 文件夹apache访问日志.. 40

etc/login.defs创建用户配置信息.. 40

etc/defaule/useradd添加用户参数.. 40

etc/rc.sysinit    /etc/rc.d系统初始化脚本.. 40

etc/profile.d用户登录加载脚本.. 41

etc/services所有系统服务.. 41

三、centos6.7常用知识原理.. 42

.开头文件为隐藏文件 ls –a查看.. 42

批量安装无人值守软件.. 42

虚拟机网络模式.. 42

centoswindows文件互传.. 42

linux文件时间属性 accessmodifychange.. 42

Linux文件类型.. 42

常见dell服务器.. 43

centos通配符.. 43

linux中的内部命令和外部命令.. 44

硬盘RAID阵列.. 44

常用环境变量.. 44

常用转义字符.. 44

U盘引导安装centos 45

内存.. 45

LANG系统语言字符集.. 45

常用快捷键.. 46

误操作提示.. 46

crt批量管理服务器.. 46

主机名修改.. 46

常用文件目录.. 46

系统启动引导过程.. 47

必要系统服务.. 47

文件列表详细属性.. 47

创建文件系统.. 48

文件、目录权限.. 48

文件权限与属性 SUIDSGID & SBIT. 48

正则表达式.. 50

centos支持的文件格式.. 50

系统分区.. 50

后向引用.. 51

开机自启动.. 51

linux工具体系.. 51

高并发数据实时同步.. 52

阿里云开源镜像站.. 52

Linux系统cpu、内存、硬盘、网络监控.. 52

网站访问原理http协议过程.. 56

echo $?返回值.. 56

四、centos6.7常用软件.. 57

vim文本编辑器.. 57

iproute2套装工具.. 57

.sh 脚本.. 58

tree目录树结构软件.. 59

MegaCli工具集查看raid信息.. 59

ipmitools查看硬件信息工具.. 61

sosreport命令用于收集系统配置及架构信息并输出诊断文档.. 61

rsync数据镜像备份工具.. 61

NFS软件集群Moosefs(mfs)GlusterFSFastDFS文件系统.. 62

screen终端切换后台执行命令防止中断.. 63

inotify文件系统监测,实现实时备份.. 64

sersync文件系统监测.. 65

ssh数据加密通信远程登录.. 66

expect   自动交互工具批量分发安装软件.. 68

saltstack   自动化运维工具.. 70

nginx服务器web. 72

vsftpd服务器ftp. 72

五、centos6.7企业案例.. 73

配置文件在Windows系统编辑,导致执行命令失败.. 73

虚拟机网卡启动不来.. 73

root密码丢失.. 73

-bash-4.1$  出错.. 74

定时网站备份加邮件推送.. 74

fstab自动挂载文件出错.. 75

apache错误(.htaccess pcfg_openfile)访问403异常.. 75

数据备份未在业务低峰期操作导致服务无法访问.. 75

软件升级.. 75

六、centos6.7安全防护.. 76

隐藏内核版本号.. 76

远程连接限制.. 76

ssh篡改入侵.. 76

七、centos6.7优化.. 77

SElinux 关闭安全防火墙.. 77

关闭iptables防火墙.. 77

精简开机启动服务.. 77

提权普通用户可以sudo. 77

字符集调整防止乱码.. 78

时间同步.. 78

命令行安全优化连接超时历史记录.. 78

增加文件描述符.. 78

内核优化  tcp参数优化配置.. 78

安装常用软件工具.. 79

hosts文件统一优化.. 79

八、centos6.7习题.. 80

根据端口查询对应服务.. 80

编写一个程序,接收两个参数IDcontent 80

编写一个程序,接收两个参数IDcontent 81

编写一个程序,接收两个参数IDcontent 81

编写一个程序,接收两个参数IDcontent 81

编写一个程序,接收两个参数IDcontent 81

编写一个程序,接收两个参数IDcontent 81

 

 

 

 

 

 

 

 

 

 

 

 

一、centos6.7常用命令

date查看系统时间

参数:-s设定时间、%Y年、%m 月、%d

设定系统时间

date -s "2018/12/12 19:56"

打包文件调用系统时间

tar zcvf test_`data +%F`.tar.gz ./test/

tar zcvf test_$(data +%F_%T).tar.gz ./test/

 

 

hwclock设置设备硬件时间

参数:-w:同步系统时间到硬件时间

-s:同步硬件时间到系统时间

clockhwclock是一个命令

[root@web01 ~]# clock

Tue 08 Jan 2019 10:51:50 AM CST  -0.438557 seconds

 

 

 

reboot重新启动

 

 

poweroff关机

 

 

wget下载

参数:-b 后台下载 -c  断点续传

下载

wget –c http://love8384.com/1.zip

 

 

ps查看系统进程

参数:r运行s中断d不可中断z僵死t停止

查看ssh进程

ps -ef|grep ssh

查看全部系统进程

ps aux

ps -ef

 

 

top任务管理器

可查询cpu内存等占用情况

 

 

pidof查看服务进程的pid

查看sshpid

pidof sshd

 

 

kill结束进程pid

结束1422进程 pid

kill 1422

 

 

killall关闭成组服务

关闭网页服务pid

pid  killall  httpd

 

 

 

 

ifconfig查看网卡配置

eth0    Link encap:Ethernet  HWaddr 00:0C:29:7F:71:74 

          inet addr:10.0.0.31  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe7f:7174/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:590 errors:0 dropped:0 overruns:0 frame:0

          TX packets:422 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:55776 (54.4 KiB)  TX bytes:58134 (56.7 KiB)

 

ifconfig eth0:0 10.0.0.101/24 up为网卡添加ip地址 辅助ip

ifconfig eth0:0 down

 

 

uname 查看系统内核版本信息

参数:-a显示全部信息

Linux nfs01 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

 

uptime查看上线时间及负载情况

16:05:37 up  2:09,  1 user,  load average: 0.00, 0.00, 0.00

 

 

w显示哪个用户登录在做什么

 [root@nfs01 ~]# w

 14:01:28 up  2:39,  1 user,  load average: 0.00, 0.00, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    10.0.0.1         11:31    0.00s  0.09s  0.00s w

 

who显示当前所处的用户和登录的用户

参数:-a查看全部/var/log/wtmp

root     pts/0        2018-12-13 14:31 (10.0.0.1)

 

 

whoami 显示当前所处的用户

 

 

who am i是登录的用户

 

 

last查看登录日志

目录文件 /var/log/wtmp

root     pts/0        192.168.20.1     Wed Oct 10 20:21 - 20:56  (00:35)   

reboot   system boot  2.6.32-573.el6.x Wed Oct 10 20:20 - 21:01  (00:40)   

root     pts/0        192.168.20.1     Wed Oct 10 20:09 - down   (00:10)   

root     pts/0        192.168.20.1     Wed Oct 10 20:09 - 20:09  (00:00)   

root     tty1                          Wed Oct 10 20:06 - down   (00:13)   

reboot   system boot  2.6.32-573.el6.x Wed Oct 10 20:06 - 20:19  (00:13)

 

 

reset 清屏重置所有乱码

 

 

od以不同进制显示文件  

查看data文件,bin文件等

0501000 000001 000000 000063 000000 000176 000000 000000 000000

0501020 000000 000000 000000 000000 000000 000000 000000 000000

 

 

history 历史执行命令

参数:-c清空,-d清空某条、!加编号直接执行命令、 !! 执行上一条

默认保留1000条记录, 两个变量

HISTFILESIZE 定义了在~/.bash_history 中保存命令的记录总数 

HISTSIZE 定义了 history 命令输出的记录数  /etc/profile 

 

 

pwd 显示当前所在目录

 

 

cd切换目录

参数: -返回、..进入上级目录、~家目录、~username切换到其他用户家目录 

 

 

ls查看目录中的文件

参数:

-a查看隐藏文件

-l详细信息

-d查看目录属性(后面加目录) 、什么都不加就是当前目录

-F为不同文件加标示

-p为文件夹加斜线    ls -lrt /etc  查看etc下最新文件在最下面依赖系统时间    

-t修改时间排序  

-r倒序

-i索引节点号inode

-h文件大小显示

ls -l --time-style=long-iso /oldboy 显示变更时间格式 

total 110          所列出内容的磁盘占用空间总和值。单位为kbytes

drwxr-xr-x   3 root      root       4096 Nov 16 15:04 app

drwxr-xr-x   3 root      root       4096 Nov 16 20:14 backup

 

 

cat纯文本查看

参数:-n可以分行显示 显示行号

-b 只为非空行计数

-E 显示$在行尾

-T区分和空格

-A显示隐藏符号

 

 

tac反向读取

按照行,从最后一行向第一行显示 ,每行内容不变,行序改变

 

 

rev反向读取

正常按照行显示,每行文字从后向前显示照行,行顺序不变

 

 

more 内容查看命令

参数:空格回车翻页

b向上

/搜索

v进入vi

:q退出

 u回退

适合查看内容较多内容文档,有百分比显示。

 

 

 

 

head查看文本文档前行

参数:-20看文本文档前20

-n -20显示除去末尾20

head -20 1.txt

head -n -20 1.txt

 

tail查看文本文档后内容

参数:-n 20

-f 等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

-F 等同于--follow=name  --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

tail -f /var/log/messages  实时刷新日志

 

 

tailf 历史执行命令

等同于tail -f -n 10(貌似tail -f-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电

catalina.out Tomcat输出日志文件,tailf logs/catalina.out 就是追踪打印 日志文件的后10行,有变化,就打印出来。

 

 

wc 统计文本行数、字数、字节数

参数:-L最长的行多少字数

[root@nfs01 ~]# wc install.log 

  512  1037 22179 install.log

 

 

mkdir 创建文件夹

参数:-p创建递归目录1/2/3/4

mkdir -p 1/2/3/4

 

 

touch新建文件

参数:-a读取时间

-m修改时间

-d同时修改 

新建一万个文件 touch xx{1..10000}

 

 

stat查看文件具体存储信息

创建时间 、修改时间、改变时间、 inode block

[root@nfs01 12]# stat xx1

  File: `xx1'

  Size: 0               Blocks: 0          IO Block: 4096   regular empty file

Device: 803h/2051d      Inode: 143770      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2018-12-14 12:34:14.523963149 +0800

Modify: 2018-12-14 12:34:14.523963149 +0800

Change: 2018-12-14 12:34:14.523963149 +0800

 

 

cp复制

参数:-r   复制目录 

-a  复制文件保持文件所有属性  -a等效-pdr

-i  覆盖前提示  

-p保持属性复制

-d若目标为link则复制链接

cp命令为系统默认别名-i \cp可以取消提示使用源命令或者使用命令绝对路径/bin/cp

cp  源文件  新文件    目录

cp xx1 xx222 /root

cp -a file{3,5}.txt 

cp /etc/ssh/sshd_config{,.ori}

cp -a wordpress/* /application/nginx/html/www 

 

 

mv剪切操作源文件

参数:-n   不覆盖

mv xx2 /root                   移动xx2/root

mv xx2 xx555                 xx2改名xx555同目录相当于重命名

mv file{4,6}.txt                file4 改名 file6

 

 

rm删除文件

参数: -f  强制

-r删除目录

-i 覆盖提示

find替代删除  cd到目的目录 

尽量使用mv file1 /tmp 到目录

find -type f(d) -name"xxx"|xargs rm -i

 

 

file查看文件类型

[root@nfs01 ~]# file 12

12: directory

 

 

su切换登录用户

-切换需要带环境变量,直接空格加用户名半切换不带环境变量

su - xxx  

su - oldboy -c pwd  切换到oldboy用户执行pwd命令返回当前用户

开机启动某个用户所运行服务,root启动文件中加

su - httpyonghu -c '/bin/sh/home/httpyonghu/bin/deploy.sh' 

 

sudo对用户的执行命令权限进行限制

提升用户权限 使用visudo  allow root tu run any commands anywhere  中增加命令权限全路径   NOPASSWD:ALL相当root

mark

授权用户组   %sa   ALL=(ALL)   ALL

visudo -c 检查语法  必须   大小写注意

visudo  进入后  99gg  直接切换第99

/etc/sudoers  配置文件所在位置

执行命令后   时间戳默认5分钟不在需要sudo

sudo -k 删除时间戳

User Aliases  用户别名可包括用户和组

Cmnd_Alias 命令别名

远程  ssh -t hostname sudo

rpm -aq sudo rsyslog  查看sudo版本    sudo审计

echo "Defaults logfile=/var/log/sudo.log">>/etc/sudoers     /etc/sudoers

cat /var/log/sudo.log    

 

 

 

echo原样输出

参数:-n 不换行输出

-e 可以加分隔符转义字符,\t一个tab键位    \n回车

echo "xzwj"

 

[root@nfs01 ~]# echo -n "oldbooy" ;echo "oldboy"

oldbooyoldboy

 

[root@nfs01 ~]# echo -e "oldboy\toldboy" 

oldboy  oldboy

 

 

alias命令别名

一般到内存重启丢失,需要修改定制启动环境变量/etc/profile

alias rm='rm -i'

 

 

unalias取消命令别名

 

 

type查询命令类型

内部外部命令、别名命令等

[root@nfs01 ~]# type rm

rm is /bin/rm

[root@nfs01 ~]# type ll

ll is aliased to `ls -l --color=auto'

 

 

tr替换显示文本内容不改变内容

参数:-d 删除显示内容

cat x.txt | tr [a-z] [A-Z] 替换x.txt 小写到大写

tr [a-z] [A-Z] < x.txt

tr -d abc x.txt  删除x.txt中字母a bc

 

 

cut切割行内容

显示按列提取文本字符,默认tab分隔符

参数:-d设置间隔符号

-f设置查看第几列内容

-b字节输出

-c字符输出

cut -d : -f4 /etc/passwd  显示第四列

cut -b 3-4 test.txt  显示每行第几个字节

 

 

setup 配置系统信息

crt需要配置utf8,本地可用  ,网卡防火墙等

 

 

diff对比文件是否相同

可以对比目录

参数:-c是查看具体哪里不同

--brief 判断

[root@nfs01 ~]# diff --brief xx1 xx10

Files xx1 and xx10 differ

 

 

vimdiff对比文件是否相同

 编辑对比模式

 

tar 压缩、解压缩

参数:-t  查看内容

-c  压缩

-x  解压缩,可以搭配 -C (大写) 在特定目录解开

     -c, -t, -x 不可同时出现在一串指令列中。

-v  显示压缩/解压缩的过程

-f filename 解压或压缩的文件名

-C指定解压缩目录

-z  透过 gzip  进行压缩/解压缩,扩展名最好为 *.tar.gz

-j  透过 bzip2进行压缩/解压缩,扩展名最好为 *.tar.bz2

-J  透过 xz    进行压缩/解压缩,扩展名最好为 *.tar.xz

     -z, -j, -J 不可以同时出现在一串指令列中

-p(小写)  保留原始属性

-P(大写)  绝对路径压缩

tar -tf 1.tar     查看内容

tar -czvf xxx.tar.gz /xxx       xxx文件夹压缩

tar -xzvf 1.tar -C /root/23     解压1.tar/root/23目录

 

 

 

dd复制文件并对原文件的内容进行转换和格式化处理

指定数字的地方若以下列字符结尾,则乘以相应的数字b=512c=1k=1024w=2

参数:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >

ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。

obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。

skip=blocks:从输入文件开头跳过blocks个块后再开始复制。

seek=blocks:从输出文件开头跳过blocks个块后再开始复制。

注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。

conv=conversion:用指定的参数转换文件。

将本地的/dev/hdb整盘备份到/dev/hdd

dd if=/dev/hdb of=/dev/hdd

/dev/hdb全盘数据备份到指定路径的image文件

dd if=/dev/hdb of=/root/image

将备份文件恢复到指定盘

dd if=/root/image of=/dev/hdb

备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径

dd if=/dev/hdb | gzip > /root/image.gz

拷贝内存内容到硬盘

dd if=/dev/mem of=/root/mem.bin bs=1024 (指定块大小为1k)

拷贝光盘内容到指定文件夹,并保存为cd.iso文件

dd if=/dev/cdrom(hdc) of=/root/cd.iso

销毁磁盘数据

dd if=/dev/urandom of=/dev/hda1利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。

测试硬盘的读写速度

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

通过以上两个命令输出的命令执行时间,可以计算出硬盘的读、写速度

修复硬盘

dd if=/dev/sda of=/dev/sda dd if=/dev/hda of=/dev/hda

当硬盘较长时间(一年以上)放置不使用后,磁盘上会产生magnetic flux point,当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数 据起死回生。并且这个过程是安全、高效的

 

 

 

 

grep过滤需要的内容

参数:-n  匹配显示行号

-E  grep -E "3306|1521" /etc/services  既包含也包含  扩展

-i  不区分大小写

-v  排除内容,反选

--color=auto; 颜色

-w按单词搜索

-B  之前

-A 之后

-C前后

passwd文件中查找 nologin字段查看禁止登录的用户 grep "/sbin/nologin" /etc/passwd

-B  -A  -C

grep 20 -A 10 xx.txt    打印20和之后的10

grep 25 -C 5 xx.txt 打印25和前后各5

grep 30 -B 10 xx.txt 打印30和之前10 

 

 

egrep合并过滤内容

等价grep -E一般字符不转义

-v排除显示

egrep  "3306|1521" /etc/services

egrep -v "^$|#" nginx.conf.default >nginx.conf

 

 

 

 

env查看系统中所有环境变量

显示环境变量HOME

echo $HOME

env | grep -i oldpwd 

env | grep LANG

 

 

set命令显示所有本地定义的Shell变量

[root@nfs01 log]# set

BASH=/bin/bash

 

export设置新的全局环境变量

永久的:需要修改配置文件,变量永久生效。

临时的:使用export命令声明即可,变量在关闭shell时失效

直接运行export命令定义变量,只对当前shell(BASH)有效临时的

shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

export HELLO="Hello!"

echo $HELLO  

 

 

 

unset清除环境变量

清除环境变量TEST

unset $TEST

 

 

readonly命令设置只读变量

使用readonly命令,变量就不可以被修改或清除

export TEST="Test..." #增加一个环境变量TEST

readonly TEST #将环境变量TEST设为只读

 

 

 

--help简略帮助命令

mkdir --help 帮助

 

 

 

man帮助文档

参数:/ 搜索

man cp

 

 

 

find查找文件命令

参数:-name匹配名字  

-type匹配文件类型

f文件d目录c字符类型b磁盘块s  socket  l链接

-mtime 按修改时间查找

+7七天以前-7最近七天7第七天  

!取反   -a并且   -o 或者  

-maxdepth 1 查找深度 1是当前目录不包括子目录

find . -type f -exec ls -l {} \;find 命令匹配到了当前目录下的所有普通文件,

并在 -exec 选项中使用 ls -l 命令将它们列出。

find /data -type f -name "xxx.txt" -exec rm {} \;  多增加条件精确删除

find /data -type f -name "*.txt" | xatgs rm -f

fine /log -type d -name "*old" -mtime +7 | xargs rm -rf

查找/log目录 删除修改日期7天以前,且以old结尾的目录

find /xx -type f ! -name "file10"|xargs rm -f

rm -f `ls|grep -v "\file10\b"`

删除除了file10文件以外的其他文件

 

 

 

 

sed流编辑器命令

参数:-i修改内容

-r支持正则表达式

-n取消默认输出配合

p打印目录

sed命令(a追加i插入 d删除p打印)   输入文件

增删改查 

sed '2a 106,dandan,CSO' person.txt  增加106行到文件第二行之后

sed '22 106,dandan,CSO' person.txt  增加106行到文件第二行之前

sed '2a 106,dandan,CSO\n107,bingbing,CCO' person.txt \n换行符回车加两行

sed '2d' person.txt  删除第二行

sed '2c 106,dandan,CSO' person.txt   替换行

sed '3s#0#9#' person.txt  精确替换第三行,不加g非全局

sed "s#$x#$y#g" test.txt  双引号可解析变量

指定执行的地址范围

10{sed-commands}        对第10行操作

10,20{sed-commands}     1020行操作,包括第10,20

10+20{sed-commands}   1030(10+20)行操作,包括第10,30

1~2{sed-commands}       1,3,5,7,……行操作

10${sed-commands}     10到最后一行($代表最后一行)操作,包括第10

/oldboy/{sed-commands}         对匹配oldboy的行操作

/oldboy/,/Alex/{sed-commands}  对匹配oldboy的行到匹配Alex的行操作

/oldboy/,${sed-commands}       对匹配oldboy的行到最后一行操作

/oldboy/,10{sed-commands}      对匹配oldboy的行到第10行操作,注意:如果前10行没有匹配到oldboysed软件会显示10行以后的匹配oldboy的行,如果有。

1,/Alex/{sed-commands}         对第1行到匹配Alex的行操作

/oldboy/,+2{sed-commands}      对匹配oldboy的行到其后的2行操作

sed软件替换模型(方框▇被替换成三角▲)  

sed -i 's###g' oldboy.log     ▇能用正则表达式,但▲不能用,必须是具体的。

ls *.jpg | sed -r 's#(^.*)_finished.*#mv & \1.jpg #g'|bash    批量重命名

替换文档内容流编辑器

sed -i 's#ONBOOT=yes#ONBOOT=no#g' /etc/sysconfig/network-scripts/ifcfg-eth0    

sed -n '20,30' p xx.txt 打印输出 xx.txt20-30行内容  -n取消默认输出 p 打印  $行尾

sed 's#oldgirl#gongli#g' oldboy.txt s查找替换 g全局  输出改变   -i内容修改 -e多项编辑

find /oldboy -type f -name "*.sh" | xargs sed -i 's#o#ok#g'  查找oldboy目录下以.sh 结尾的文件病替换其中ook

sed -i 's#o#ok#g' `find /oldboy -type f -name "*.sh"` 查找oldboy目录下以.sh 结尾的文件病替换其中ook

 

 

 

xargs传递从获取内容创建执行命令行

参数:-n  分组

xargs -n 4 <  test.txt   test.txt内容4分组

 

 

seq生成序列

参数:-s指定分隔符

seq 20 > 1.txt 

 

[root@web01 ~]# seq 1 3 10

1

4

7

10   开头结尾10 等差3

 

[root@web01 ~]# seq  -s " " 10

1 2 3 4 5 6 7 8 9 10                      横向打印1 10 

 

 

 

netstat查看网络连接

参数:-rn 查看网关

-p显示进程名字

-t  tcp协议

-u  udp协议

-n  以数字显示

-l  显示正则监听的

netstat -lntup|grep ssh

netstat -rn 查看网关

 

 

 

 

useradd添加系统用户

增加账号  useradd xxx  位置/etc/passwd

参数:-c     :: 注释说明

-d   home_dir 账号登录所用的目录  默认与用户名相同

-e 日期   账号截止日期  MM/DD/YY

-M 不建立家目录  虚拟用户

-u  指定uid

-s 指定登录shell  -s /sbin/nolongin

-G 指定多个组组netstat -lntup|grep ssh

useradd -c "Hand" -u 806 -G root,oldboy,sa -s /bin/sh -md /olsboy7 oldboy6

 

添加用户oldboy6,设置用户注释信息Handuid  806  归属组root,oldboy,sashell类型/bin/sh  ,家目录/oldboy7

 

 

 

passwd为用户设置密码

参数:-n  7  七天之内不允许修改密码

-x  60 天必须修改密码

-w  10 过期前10天提醒

-i  30 权限停止

--stdin   批量创建密码,非交互创建密码

passwd xxx

echo "123456" | passwd --stdin oldboy   静默设置密码

 

 

chage修改用户密码属性

参数:对应文件  /etc/shadow

-l 用户列表  查看用户信息过期时间

-E  "20500401"修改有效期  账户过期日期

[root@nfs01 ~]# chage -l root

Last password change                                    : Dec 19, 2018

Password expires                                        : never

Password inactive                                       : never

Account expires                                         : never

Minimum number of days between password change          : 0

Maximum number of days between password change          : 99999

Number of days of warning before password expires       : 7

 

 

userdel删除用户

参数:-r  删除家目录

vi /etc/passwd注释掉 停留一段时间

将登录shell 改成 /sbin/nologin

 

 

crontab定时任务配置命令

计划定时任务服务是crond

chkconfig --list crond

/etc/init.d/crond      

crontab  -e   配置定时任务

语法7   周、日尽量不要一起用

分时日月周 目录 文件,*是每

30 3,12 * * * /bin/sh  /scripts/oldboy.sh   每天3:301230分执行

30 */6 * * * /bin/sh  /scripts/oldboy.sh    每隔6小时的半点执行

30 8-18/2 * * * /bin/sh  /scripts/oldboy.sh  8-18点每隔2小时的半点执行

30 21 * * * /application/apache/bin/apachectl graceful 每天21:30 重启服务

45 4 11022 * * /application/apache/bin/apachectl graceful 每月110,224:45重启服务

10 1 * * 6,0  /application/apache/bin/apachectl graceful 每周六,周日1:10重启服务

0,30 18-23 * * *  /application/apache/bin/apachectl graceful 每天18-23点的整点半点重启服务

00,*/1  * * *  /application/apache/bin/apachectl graceful 每隔1小时整点重启服务

* 23,00-07/1 * * * /application/apache/bin/apachectl graceful 每天23,00-07每分钟重启服务

 

 

runlevel查看系统运行级别

查看当前级别 

 

 

chkconfig 查看开机启动服务

对应不通启动级别

[root@web01 init.d]# chkconfig

abrt-ccpp       0:off   1:off   2:off   3:off   4:off   5:off   6:off

abrtd             0:off   1:off   2:off   3:off   4:off   5:off   6:off

 

 

source更新配置文件命令

source 命令是 bash shell 的内置命令,从 C Shell 而来。

source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。

source 命令可以强行让一个脚本去立即影响当前的环境。

source 命令会强制执行脚本中的全部命令,而忽略文件的权限。

source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile .profile 等等。

source 命令可以影响执行脚本的父shell的环境,而 export 则只能影响其子shell的环境。

/etc/profile文件修改后立即生效 ,可以使用如下命令:

.  /etc/profile      注意: . /etc/profile 有空格

/etc/profile文件修改后立即生效 ,可以使用如下命令:

source /etc/profile

 

 

df查看分区挂载

参数:-h   人类可读

 -T查看文件系统

-i查看分区inode使用情况,磁盘满特征no space left on device   ,包括inode满或者block

Filesystem挂载文件位置

Mounted on挂载点

[root@web01 init.d]# df -h

Filesystem          Size  Used Avail Use% Mounted on

/dev/sda3           8.6G  1.5G  6.8G  18% /

tmpfs               491M     0  491M   0% /dev/shm

/dev/sda1           190M   36M  145M  20% /boot

172.16.1.31:/data/  8.6G  2.4G  5.8G  30% /mnt

 

 

blkid查看硬盘uuid  硬件识别编码

[root@nfs01 media]# blkid

/dev/sda1: UUID="275cf8e8-fcfa-4331-b8c0-d6f2504e8efc" TYPE="ext4"

/dev/sda2: UUID="658f321a-41ce-4705-bec2-d402ff187de0" TYPE="swap"

/dev/sda3: UUID="2ac4e267-a72b-4261-b96d-2679f285093a" TYPE="ext4"

 

 

 

route路由

参数:-n 显示数字形式查看路由表

add 添加

del删除

-net网段

-host主机

route add default gw 10.0.0.254 添加默认网关

route del default gw 10.0.0.254 删除默认网关

route add -net 10.0.0.0 netmask 255.255.255.0 dev eth0  添加网段的路由到eth0  -p永久添加

route add -host 192.168.40.1dev eth0  添加某ip路由

route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.20.2 添加网段的路由到网关20.2

 

 

 

nl显示行号

文件显示行号查看

 

 

less查看文件

参数:enter 一行 

空格一屏  

向上箭头回一行    

b回一屏  

less -N  显示行号

v直接进入vi

 

 

ln设置链接

参数:默认硬链接

-s软链接  

ln  参数   源文件  目标文件   

ln -s /etc/init.d/sshd S55sshd

 

 

 

 

dumpe2fs查看硬盘inode分配情况

查看硬盘分区inode  

dumpe2fs /dev/sda1 |grep -i "inode size" 大小

dumpe2fs /dev/sda3 |egrep -i "block count|Inode"  总量.查看文件元数据

 

 

lastlog查看用户最近登录信息

对应文件/var/log/lastlog  

[root@nfs01 log]# file  /var/log/lastlog

/var/log/lastlog: data

 

 

id查看用户UID GID

超级用户root  uid gid 都是0    通过sudo提升权限

普通用户 xzwj     useradd xzwj    500-65535  uid

虚拟用户  bin    nologin    不能登录      1-499  uid 

id root

/etc/passwd  用户配置文件    账号名称,密码,uid, gid,用户说明,用户家目录,shell解释器

/etc/shadow 用户影子口令文件

/etc/group 用户组文件

/etc/gshadow  用户组密码文件

 

 

 

du查看文件或目录大小

参数:-s统计总目录大小

-S分别统计目录大小

-h人类可读

[root@nfs01 log]# du -Sh /root

4.0K    /root/1/2/3/4

979M    /root

 

[root@nfs01 log]# du -sh /root 

979M    /root

 

 

which查询命令全路径所在的路径

 [root@nfs01 log]# which cp

/bin/cp

 

 

whereis查找命令帮助代码路径

 [root@nfs01 log]# whereis cp

cp: /bin/cp /usr/share/man/man1p/cp.1p.gz /usr/share/man/man1/cp.1.gz

 

 

locate通过名字找文件

全盘查找名字对应文件 find / -name xxx

locate xxx

 

 

readlink查看软链接文件对应源文件路径

readlink test.soft

 

 

rename重命名

rename  需要替换或处理的文件名字字符     需要处理的结果    文件

rename "6666" "777" * 

 

 

 

basename去除目录和后缀

basename的作用是从文件名中去除目录和后缀

1.执行basename kernel/include/linux/basename kernel/include/linux得到linux

2.执行basename kernel/include/linux/stddef.h得到stddef.h

3.执行basename kernel/include/linux/stddef.h .h得到stddef

4.执行basename kernel/include/linux/stddef.h h得到stddef.

5.执行basename kernel/include/linux/stddef.h .得到stddef.h 

 

 

md5sum校验MD5

参数:-c 校验

md5sum test.txt 

md5sum -c md5.log  校验文件

[root@nfs01 ~]# md5sum yy1

c3e2ae4df46268d8cd2cf1bf6cc10c46  yy1

[root@nfs01 ~]# md5sum yy1 > 1.log

[root@nfs01 ~]# md5sum -c 1.log

yy1: OK

 

 

 

 

awk过滤输出内容,处理日志文本

参数:-F 指定分隔符,-F后面加指定的分隔符

-f 指定脚本,-f后面加脚本文件,从该脚本中读取awk命令,代替输入

NR行号

awk 'NR>19 && NR<31' test.txt   一行的时候NR==31    

ll |awk '{if($2>1) print $0}'  打印当前目录第二列输出整行      $1第一列  $0一行

1.先正则表达式匹配整个test文档里的空白行,每一个空白行打印一次 blank line

awk '/^$/{print "blank line"}' test

 

2.正则表达式匹配/etc/sysconfig/network里的的主机名行,打印主机名

awk '/HOSTNAME/{print}' /etc/sysconfig/network

 

3.-f 选项调用一个awk脚本来对sample.txt做操作,awk脚本是test.sh

awk -f test.sh sample.txt

 

4.输出a,b,c$1 $2 $3 分别对应输出的abc

echo a b c | awk '{print $1,$2,$3}'

 

5.读取输入的行并输出数据段个数

echo a b c | awk  '{print $0}'

 

6.指定分隔符是” : “,输出passwd文本的第一列,即系统的用户名

awk -F ":" '{print $1}' /etc/passwd //写法1

awk 'BEGIN {FS=":"}{print $1}' /etc/passwd //写法2

 

7.awk中的变量,默认是空字串或者0

awk  '/^$/ {x+=1} END {print x}' test //统计空白行行数并输出

 

8.awk结合条件语句使用,因为awk都使用了BEGIN模式,所以,在没读取test文档内容之前,就回把BEGIN后面的指令执行。

awk '{if($1<10) print "a"; else print "b"}' test 

如果test文件中每一行的第一个参数小于10,则输出a,否则输出b

awk 'i=1 {} BEGIN{while(i<=10) {++i;print i}}'   //i初始值为1,当i<=10,输出i的值,i++

awk 'BEGIN { do { ++x;print x } while (x<=10)}'  //do-while格式

awk 'BEGIN{for(i=1;i<=10;i++) print i}'   //for循环

 

 

 

free内存查看

参数:-h人类可读

-mMB为单位显示

[root@web01 ~]# free -h

             total       used       free     shared    buffers     cached

Mem:          981M       141M       839M       196K        24M        34M

-/+ buffers/cache:        83M       897M

Swap:         999M         0B       999M

 

 

 

 

sync将缓冲区数据写入磁盘

buffers写入缓冲区

 

 

 

groups显示用户所在组

 [root@nfs01 ~]# groups

root

 

 

groupadd添加用户组

参数:-g指定组id

/etc/group     /etc/gshadow  

 

groupdel删除用户组

 

 

usermod修改用户属性

参数:-u uid

-g group

-d 主目录

-s shell

-c 注释

-l 新名称

-f 失效日

-e 过期日

-p 密码

-U 要修改的用户名

usermod -d /new/home_dir -U username     修改用户家目录

 

 

 

 

chmod修改文件权限 

参数:  -R  更改所有子目录递归

r:可读(4)w:可写(2),对于目录来说表示可在目录中新建文件,x:可执行(1),对于目录来说为可进入到该目录中

chmod 777 test/    

chmod   u用户 g o其他 a全部       + - =        - r w x    file

安全临界目录 755  

文件644

 

 

umask查询默认权限 

参数:  控制默认权限

022

777目录减去

666 文件减去

 

 

mount挂载分区到文件系统 

mount /dev/sdb1 /mnt

you must specify the filesystem type  需要格式化

 

 

 

 

 

umount卸载挂载 

参数:  -lF 强制卸载

/dev/hda5 已经挂载在/mnt/hda5,用一下三条命令均可卸载挂载的文件系统

umount /dev/hda5

 

 

dig域名解析过程 

参数:q-type:查询记录的类型,例如aanymxnssoahinfoaxfrtxt等,默认查询a

q-class:查询的类别,相当于nslookup中的set class。默认值为inInternet)。

q-opt:查询选项,可以有好几种方式,比如:-f file为通过批处理文件解析多个地址;

-p port指定另一个端口(缺省的DNS端口为53

yum install  bind-utils -y

dig www.baidu.com

 

 

 

nslookup域名解析 

参数:option:表示一些选项。这些选项可以通过set命令设置修改。

name:表示查询的域名。

server:可以指定DNS主机IP

nslookup smtp.126.com

 

 

 

host域名解析 

参数:-a 代表列出该主机所有的相关信息,包括 IPTTL 与除错讯息等等

host -a www.baidu.com

 

 

logout退出用户登录 

参数:退出用户登录  ctrl +d

 

 

 

lsof查询端口对应的服务,文件占用情况

参数:lsof  filename 显示打开指定文件的所有进程

lsof -a 表示两个参数都必须满足时才显示结果

lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件

lsof -u username  显示所属user进程打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /DIR/ 显示目录下被进程打开的文件

lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长

lsof -d FD 显示指定文件描述符的进程

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

lsof -i 用以显示符合条件的进程情况

 

COMMAND:进程的名称

PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件。如cwdtxt

TYPE:文件类型,如DIRREG

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

COMMAND    PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME

init         1 root  cwd       DIR                8,3     4096          2 /

init         1 root  rtd       DIR                8,3     4096          2 /

init         1 root  txt       REG                8,3   150352     133601 /sbin/init

 

lsof -i :22   查看22端口现在运行的情况  

lsof -a -u root -d txt  查看所属root用户进程所打开的文件类型为txt的文件

lsof  /GTES11/  查找谁在使用文件系统/GTES11/

/usr/sbin/lsof i@10.65.64.23 搜索IP地址为10.645.64.23的远程连接主机的所有网络连接

/usr/sbin/lsof a +L1 /data 寻找本地断开的打开文件 ,当一个进程正在向一个文件写数据时,该文件的目录可能被移动。

lsof -p 637 执行PID号为637sendmail命令打开的所有文件、设备、库及套接字等

lsof -c init  显示出以字母 init 开头进程现在打开的文件

lsof -u loginname 登入名称或UID所正在打开文件。

 

 

 

 

ping链路通段ICMP协议

参数:-i间隔

-c次数

-s大小

ping -c3 -i2 -s512 www.baidu.com

 

 

traceroute路由跟踪

参数:-n不解析主机名字

traceroute baidu.com -n 

 

 

telnet远程连接登录

参数:后面可以加端口

telnet www.baidu.com 80

 

nmap端口检测

nmap localhost     查看主机当前开放的端口

nmap -p 1024-65535 localhost    查看主机端口(1024-65535)中开放的端口

nmap -PS 192.168.21.163      探测目标主机开放的端口

nmap -PS22,80,3306  192.168.21.163     探测所列出的目标主机端口

nmap -O 192.168.21.163     探测目标主机操作系统类型

nmap -A 192.168.21.163     探测目标主机操作系统类型  

 

 

 

tcpdump抓包工具

参数:-S显示完整值ack显示

-t不打印时间戳

-c  3个包

n指定协议 

i指定接口

tcpdump -n icmp -i eth0

 

 

 

 

 

 

 

 

rpm文件安装

rpm是编译好的程序安装包,可以通过rpm命令进行安装。需要源码包

()对于已经安装的软件包信息查询

rpm -qa  查询系统中已经安装的软件

rpm -qf 文件名的绝对路径 ,查询一个已经安装的文件属于哪个软件包;

rpm -ql 软件名 查询已安装软件包都安装到何处,软件名定义是:rpm包去除平台信息和后缀后的信息

rpm -qi 软件名 查询一个已安装软件包的信息

rpm -qc 软件名 查看一下已安装软件的配置文件;

rpm -qd 软件名 查看一个已经安装软件的文档安装位置

rpm -qR 软件名  查看一下已安装软件所依赖的软件包及文件

()对于未安装的软件包信息查询

rpm -qpi rpm文件 查看一个软件包的用途、版本等信息;

rpm -qpl rpm文件 查看一件软件包所包含的文件

rpm -qpd rpm文件 查看软件包的文档所在的位置

rpm -qpc rpm文件 查看一个软件包的配置文件

rpm -qpR rpm文件  查看一个软件包的依赖关系

()软件包的安装、升级、删除等

rpm -ivh rpm文件【安装】 rpm -Uvh rpm文件【更新】 安装或者升级一个rpm

rpm -e 软件名   删除一个rpm 包,如何需要不管依赖问题,强制删除软件,在如上命令其后加上 nodeps

rpm -force 强制卸载

 

 

yum文件安装

更换yum安装源地址默认centos官方替换成阿里云

https://opsx.alibaba.com/mirror

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

主要功能是更方便的添加/删除/更新RPM. 可以同时配置多个资源库(Repository) 简洁的配置文件(/etc/yum.conf 自动解决增加或删除rpm包时遇到的倚赖性问题 使用方便 保持与RPM数据库的一致性,当第一次使用yum管理软件时,yum会自动下载所需要的headers放置在/var/cache/yum目录下。

1) rpm包的更新

yum check-update  检查可以更新的软件包

yum update 更新所有的软件包

yum update kernel 更新特定的软件包

yum upgrade 大规模的升级

2) rpm包的安装和删除

yum install xxx【服务名】  -y  自动选择y安装

yum remove xxx【服务名】 删除

3) yum缓存的相关信息

yum clean packages 清楚缓存中rpm包文件

yum clean headers 清楚缓存中rpm的头文件

yum clean old headers 清除缓存中旧的头文件

yum clean all清除缓存中旧的rpm头文件和包文件

4)软件包信息查询

yum grouplist 查看安装的组件包

yum group install "Development tools " 

yum list 列出资源库中所有可以安装或更新的rpm

yum list firfox* 列出资源库中特定的可以安装或更新以及已经安装的rpm ,可以在rpm包名中使用通配符,查询类似的rpm

yum list updates列出资源库中所有可以更新的rpm

yum list installed列出已经安装的所有的rpm

yum list extras 列出已经安装的但是不包含在资源库中的rpm ,通过如网站下载安装的rpm

yum info rpm包信息显示(info参数同list),列出资源库中所有可以安装或更新的rpm包的信息

yum info firefox* 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息

yum info updates列出资源库中所有可以更新的rpm包的信息

yum info installed列出已经安装的所有的rpm包的信息

yum info extras 列出已经安装的但是不包含在资源库中的rpm包的信息

yum search firofox 搜索匹配特定字符的rpm

yum provides firefox 搜索包含特定文件的rpm

 

 

mkfs格式化文件

xfs centos7  -t类型

mkfs.ext4 -b 4096 -i 1024 /dev/sdb1

 

 

 

mkswap格式化

格式化swap 分区

 

 

partprobe不重启的情况下重读分区

使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统,而使用partprobe则可以使kernel重新读取分区信息,从而避免重启系统

partprobe

 

 

 

 

swap  on/off开启关闭系统交换区

swapoff实际上为swapon的符号连接,可用来关闭系统的交换区

swapoff /dev/sda2 // 关闭交换分区

 

 

 

sfdisk分区工具

常用分区工具cfdiskfdisksfdisk

sfdisk -l 主要查看分区表

 

 

fsck磁盘检查修复

fsck.ext3对文件系统进行扫描、修复

fsck.ext3  -y /dev/sdb1 

 

 

strace调试工具

可以对特定的系统调用或者几组系统调用进行过滤

可以通过统计特定系统调用的调用次数、耗费的时间、成功和失败的次数来配置(profile)系统调用的使用

跟踪发送给进程的信号量

可以通过pid附着(attach)到任何运行的进程

strace -p 查看系统调用过程 topid  strace 查询 

 

 

 

e2fsck磁盘检查工具

Linux e2fsck命令用于检查使用 Linux ext2 档案系统的 partition 是否正常工作

e2fsck -a -y /dev/hda5检查 /dev/hda5 是否正常,

如果有异常便自动修复,并且设定若有问答,均回答[

 

 

 

chown修改文件的用户和组  

参数:-R处理指定目录以及其子目录下的所有文件

chown 用户 文件或目录   仅授权用户

chown :  文件或目录  仅授权组   等同于chgrp   文件或目录

chown 用户:组  文件或目录  授权用户和组

:可以用. 代替 ,用户和组名必须存在

[root@nfs01 tmp]# ll

total 0

-rw-r--r-- 1 root root 0 Jan  4 14:53 1

[root@nfs01 tmp]# chown 666 1

[root@nfs01 tmp]# ll

total 0

-rw-r--r-- 1 666 root 0 Jan  4 14:53 1

[root@nfs01 tmp]# chown :666 1

[root@nfs01 tmp]# ll

total 0

-rw-r--r-- 1 666 666 0 Jan  4 14:53 1 

 

 

 

 

 

 

chattr修改文件特殊权限属性  

所支持的文件系统包括:ext2ext3ext4xfs

一般要求内核版本不低于2.2,不能保护 / /tmp /dev /var目录

chattr 只能由root用户使用

+ : 在原有参数设定基础上,追加参数

- :在原有参数设定基础上,移除参数

= :更新为指定参数设定

A :文件或目录的 atime (access time)不可被修改(modified),可以有效预防例如手提电脑磁盘I/O错误的发生

a :只允许追加  不能删不能清空;

c :即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。

i :文件加锁  不能追加不能删不能清空   ;对目录

s :保密性地删除文件或目录,即硬盘空间被全部收回

u :与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion.

文件加锁优化 /etc/passwd ,/etc/shadow,/etc/group,/etc/gshaw,/set/inittab

chattr 参数  文件

chattr +i   ,   mv /usr/bin/chattr   /oldboy  移动命令

 

 

lsattr查看文件特殊权限属性  

显示文件扩展属性

[root@nfs01 tmp]# lsattr 1 

----i--------e- 1   e是表示该文件为可执行文件

 

 

 

split文件分割  

参数:-b:值为每一输出档案的大小,单位为 byte

-C:每一输出档中,单行的最大 byte 数。

-d:使用数字作为后缀。

-l:值为每一输出档的列数大小。

split -l 1000 -d test.txt new_test.txt --verbose 加上-d,使用数字后缀;加上--verbose,显示分割进度

split -b 100k -d test.txt new_test.txt  //每个100K按字节大小分割

split -l 1000 test.txt new_test.txt  //文件一共4545行,按每个文件1000行分割,那么生成5个文件

cat命令合并以上分割文件

cat new_test.txt* > merge_file.txt

 

 

paste文件合并  

参数:  -d 指定分隔符

-s  将数列变成行

1左右合并

 cat上下合并    cat 1.txt 2.txt

paste 1.txt 2.txt

paste -sd '=\n' 1.txt  1=2 下行2=3    回车轮流使用

 

 

 

sortascii码大小排序升序第一列排序

参数:  -u压缩相同行

-t指定分隔符  -t:以:为分隔符

-k指定区域  sort -k2 1.txt 按照第二列 排序 默认空格分隔符

-b 忽略每行前面开始出的空格字符。

-c 检查文件是否已经按照顺序排序。

-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。

-f 排序时,将小写字母视为大写字母。

-i 排序时,除了040176之间的ASCII字符外,忽略其他的字符。

-m 将几个排序好的文件进行合并。

-M 将前面3个字母依照月份的缩写进行排序。

-n 依照数值的大小排序。

-o<输出文件> 将排序后的结果存入指定的文件。

-r 以相反的顺序来排序。

+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

--help 显示帮助。

--version 显示版本信息。

$ cat testfile      #testfile文件原有排序 

test 30 

Hello 95 

Linux 85

$ sort testfile #使用sort命令重排后的结果如下

Hello 95 

Linux 85 

test 30

 

 

 

 

tee读取标准输入的数据,并将其内容输出成文件  

参数:-a追加重定向

多重重定向 ls |tee dir.txt 屏幕显示并且重定向给dir.txt  

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。可以用于既想看到标准输出,又想将标准输出保存到文件中的情况

ls | tee test

pwd | tee -a 2

 

 

 

exportfs文件挂载NFS  

参数:nfs-utils这个包一起安装的

-a 全部挂载或者全部卸载

-r 重新挂载

-u 卸载某一个目录

-v 显示共享目录况

exportfs -arv //不用重启nfs服务,配置文件就会生效

假设在第一次配置nfs的共享目录,之后需要新增、更改某些机器或共享的目录;

首先需要更改配置文件,然后重启NFS服务,但如果远程客户端正在使用NFS服务,正在挂载着,如果你需要先停止nfs服务,那远程的客户端就会挂起,就会很大的影响,造成服务异常,进程异常,有很大可能导致系统坏掉

nfs服务不能随便重启,要重启,就需要先去服务器上,把挂载的目录卸载下来

在卸载目录的时候,若是在当前目录下去卸载会提示umount.nfs4: /mnt: device is busy

方法一:退出该目录后,再去卸载

方法二:在目录下卸载的时候,加 -l 选项,表示 lazy 懒惰的意思

在卸载目录后,在重启nfs服务

若是挂载了很多台机器,那么每台机器都需要去卸载,就会很麻烦,降低了工作效率

方法:使用exportfs命令,重新加载下

 

B机器客户端,卸载目录

[root@hf-01 ~]# umount /mnt/

然后在A机器服务端,使用exportfs -arv命令,重新使配置文件生效

验证,在A机器上的/etc/exports配置文件中,在增加一行,把 /tmp 目录单独共享给192.168.202.131 这个IP

vim /etc/exports,在配置文件中加入,/tmp 192.168.202.131(rw,sync,no_root_squash)

然后在A机器服务端执行exportfs -arv命令

B机器客户端showmount -e看是否生效——>并没有重启nfs服务,就已经生效

B机器客户端挂载,将 tmp目录 挂载到 mnt 目录下

现在在B机器客户端,查看到的/mnt/目录就是192.168.202.130IP下的tmp目录

再到A机器上查看tmp目录,会看到两个目录下的文件内容会一样的

这时在B机器客户端的mnt目录下创建文件,并查看目录下的文件,能看到新建的1212.txt文件的属主和属组都是root

这时再到A机器服务端查看tmp目录,会看到1212.txt文件的属主和属组也是root

这就是因为在A机器服务端的配置文件中,使用了no_root_squash ,所以root用户不受约束,在B机器上到挂载点下,到共享目录下,就可以像在本地磁盘使用root用户一样,是不受限制的(通常情况下,不限制root用户的比较多)

 

 

 

 

watch监控命令周期性执行程序

参数: -n1刷新时间1

watch -n1 ls

Every 1.0s: ls                                                           Fri Jan  4 19:16:12 2019

 

 

zip压缩命令  

zip -r mydata.zip mydata #压缩mydata目录

 

unzip解压缩

unzip wwwroot.zip直接解压到当前目录

unzip mydata.zip -d mydatabak  解压到指定目录

 

 

 

 

scp远程安全拷贝命令基于ssh服务

参数:-P端口

-r目录

-p保持属性

-l 限速

全量拷贝

scp -P 52113 /etc/hosts oldboy@10.0.0.61/tmp 真实用户 

hosts复制到tmp

scp -P 52113 -rp oldboy@10.0.0.61/tmp  /etc/复制文件夹  

 

sftp远程基于ssh服务

参数:不支持目录

sftp -oPort=52113 oldboy@10.0.0.61  连接sftp真实用户 

/home/oldboy目录

连接成功后

put /etc/host 上传/etc/host/home/oldboy 上传

put /etc/host /tmp/ 上传到指定/tmp目录  未固定目录有权限就可以切换

mkdir /tmp/ett可创建目录

ls可执行命令

get hosts下载到当时连接之前的目录

get hosts /home 下载到指定目录

 

 

curl上传下载数据到服务器

参数:支持httpftppop3

-o下载文件到指定目录

-O保存具体文件

-C断点续传

-d发送表单编码数据

-u指定用户名密码

-s静音模式。不输出任何东西

-I显示服务器及相应状态

curl so.com -o 1.txt

curl http://www.linux.com

curl http://www.linux.com >> linux.html

curl -O http://www.linux.com/hello.sh  接具体文件

curl -o /dev/null -s -w %{http_code} www.linux.com测试网页返回值

curl -x 192.168.100.100:1080 http://www.linux.com指定proxy服务器以及其端口

curl -c cookiec.txt  http://www.linux.com保存httpresponse里面的cookie信息

curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http://www.linux.com模仿浏览器

curl -O -u 用户名:密码 ftp://www.linux.com/dodo1.JPG

curl -O ftp://用户名:密码@www.linux.com/dodo1.JPG

curl -I love8384.com

 

 

at 命令定时任务

参数:at 23:00

at> 执行的指令

退出at命令 ctrl+d

-l查看定时任务

atrm 3删除定时任务

[root@db01 ~]# at -l  

3       2019-04-02 23:00 a root

 

 

setfacl设置文件访问控制列表ACL

参数:-m, --modify=acl 更改文件的访问控制列表

  -M, --modify-file=file 从文件读取访问控制列表条目更改

  -x, --remove=acl 根据文件中访问控制列表移除条目

  -X, --remove-file=file 从文件读取访问控制列表条目并删除

  -b, --remove-all 删除所有扩展访问控制列表条目

  -k, --remove-default 移除默认访问控制列表

      --set=acl 设定替换当前的文件访问控制列表

      --set-file=file 从文件中读取访问控制列表条目设定

      --mask 重新计算有效权限掩码

  -n, --no-mask 不重新计算有效权限掩码

  -d, --default 应用到默认访问控制列表的操作

  -R, --recursive 递归操作子目录

  -L, --logical 依照系统逻辑,跟随符号链接

  -P, --physical 依照自然逻辑,不跟随符号链接

      --restore=file 恢复访问控制列表,和“getfacl -R”作用相反

      --test 测试模式,并不真正修改访问控制列表属性

  -v, --version           显示版本并退出

setfacl -m u:omc:rwx hhh  为文件授权用户

setfacl -m g:omc:r-w test   为文件授权组

setfacl -Rm u:omc:rwx hhh/ 为文件夹授权用户

 

 

getfacl查看文件acl内容

getfacl hhh

 

 

 

 

 

二、centos6.7常用配置文件

 /etc/ssh/sshd_config 远程登录ssh配置

允许root通过远程登录

PermitRootLogin yes

修改配置文件后要重启 sshd服务  service sshd restart

 

 

/etc/redhat-release  系统内核版本详细信息

CentOS release 6.7 (Final)

 

 

 

/var/log/wtmp  登陆日志文件 

Cent登陆日志文件   /var/log/wtmp  二进制文件   wtmp: data

 

 

 

centos 环境变量/etc/profile/etc/bashrc~/.bash_profile~/.bashrc的区别

/etc/profile

该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行。也就是说这个文件对每个shell都有效,用于获取系统的环境信息。

该变量将会对Linux下所有用户有效,并且是“永久的”。

编辑/etc/profile文件,添加CLASSPATH变量

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效

/etc/bashrc

为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。也就是说,当用户shell执行了bash时,运行这个文件。

~/.bash_profile

每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行~/.bashrc文件

改变量仅会对当前用户有效,并且是“永久的”。

编辑guok用户目录(/home/guok)下的.bash_profile

 vi /home/guok/.bash.profile

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

修改文件后要想马上生效要运行source /home/guok/.bash_profile不然只能在下次重进此用户时生效。

~/.bashrc

该文件存储的是专属于个人bash shell的信息,当登录时以及每次打开一个新的shell,执行这个文件。在这个文件里可以自定义用户专属的个人信息。。

/etc/profile 中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile 中的变量,他们是"父子"关系.

 

/dev/null/dev/zero的区别

/dev/null  黑洞,你可以向它输出任何数据

/dev/zero输出,你可你用它来初始化文件。该设备无穷尽地提供0

 

 

/etc/sysconfig/network-scripts  网卡信息配置

centos6的网卡重启方法:service network restart

centos7的网卡重启方法:systemctl restart network 

ifdown eth0    关闭eth0

ifup eth0  启动eth0

网卡配置文件ONBOOT=yes   开机自启动

网卡可配置多个ip  

ifconfig eth1:0 10.0.0.2/24 up

ifconfig eth1:1 10.0.0.3 netmask 255.255.255.0 up   别名ip  虚拟ip 重启失效   

ifconfig eth1:0 down  关闭

ip addr add 10.0.0.13/24 dev dth1:3 添加辅助ip

ip addr  查看

ip addr del 10.0.0.13/24 dev dth1:3 删除辅助ip   重启失效   支持双网卡聚合

 

/etc/yum.repos.d     软件仓库yum配置文件

xxx.repo配置文件

-y 安装

yum install    

 

 

 

/etc/sysconfig/i18n 区域语言设置配置文件

18ninternationalization的缩写,意思指in之间有18个字母。可以使linux系统支持国际化信息显示。就是支持多种字符集的转换,避免出现乱码。同一时间i18n只能是英文和一种选定的语言,例如英文+中文、英文+德文、英文+韩文等等。locale环境变量

第一行表示当前系统的语言环境变量设置,这里是zh_CN.UTF-8

第二行表示系统支持哪些字符集,没有设置的语言字符集类型会出现乱码

第三行表示系统终端字符的字体,设置的是latarcyrheb-sun16

LANG="zh_CN.GB18030" 

SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en" 

SYSFONT="latarcyrheb-sun16"

 

 

 

/etc/crontab /var/spool/cron定时任务配置文件区别

/var/spool/cron/这个目录是以账号来区分每个用户自己的执行计划

-rw-------. /var/spool/cron/root

-rw-------. /var/spool/cron/user1

-rw-------. /var/spool/cron/user2

*/1 * * * *  ls />>/opt/crontab-e 2>&1

/etc/crontab系统执行计划,需要在五个*后面加上用户

*/1 * * * * root  ls />>/opt/crontab-e 2>&1

服务重启

/etc/init.d/crond restart

service crond restart

 

 

 

/etc/init.d软件服务脚本配置文件

service httpd start其实是启动了存放在/etc/init.d目录下的脚本

/etc/init/nfs start

/etc/init/nfs restart

/etc/init/nfs stop

 

 

/etc/inittab 系统运行级别配置文件

id:5:initdefault:

表示当前缺省运行级别为5(initdefault)启动后进入图形界面,设为3则进入字符终端界面录

Runlevel 0是让init关闭所有进程并终止系统。

Runlevel 1是单用户模式,只能系统管理员进入,在该模式下处理在有登录用户时不能进行更改的文件,

Runlevel 2是允许系统进入多用户的模式,但并不支持文件共享,这种模式很少应用。

Runlevel 3是最常用的运行模式,主要用来提供真正的多用户模式,也是多数服务器的缺省模式。

Runlevel 4一般不被系统使用,

Runlevel 5是将系统初始化为专用的X Window终端。

Runlevel 6是关闭所有运行的进程并重新启动系统

 

 

 

/etc/hosts系统host配置文件

本地主机名解析

cat /etc/hosts

127.0.0.1   localhost web01 localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.1.5 lb01

172.16.1.6 lb02

 

 

/etc/resolv.conf显示系统DNS

修改网卡中dns配置,和这配置文件,修改配置需重启服务  /etc/init.d/network restart

[root@nfs01 media]# cat /etc/resolv.conf

; generated by /sbin/dhclient-script

search localdomain

nameserver 10.0.0.2

 

 

 

 

/app/logs 文件夹apache访问日志

可保存7

find /app/logs/ -type f -name "*.log"-mtime  -7 #-7表示最近7

方法一:find /app/logs/ -type f -name "*.log"-mtime +7 |xargs rm -f

方法二rm -f $( find /app/logs/ -type f -name"*.log" -mtime +7)

 

 

 

/etc/login.defs创建用户配置信息

定义创建用户需要的配置信息,家目录  uid gid范围 用户密码有效期

 

 

/etc/defaule/useradd添加用户参数

添加用户调用参数默认配置文件

 

 

/etc/rc.sysinit    /etc/rc.d系统初始化脚本

配置文件初始化Linux系统, 系统启动时所做的各种配置

获得网络环境。

挂载设备。

开机启动画面 Plymouth (代替了以往的 RHGB)

判断是否启用 SELinux

显示开机过程中的欢迎画面。

初始化硬件。

用户自定义模块的加载。

配置内核的参数。

设置主机名。

同步存储器。

设备映射器及相关的初始化。

初始化软件磁盘阵列 (RAID)

初始化 LVM 的文件系统功能。

检验磁盘文件系统 (fsck)

设置磁盘配额 (quota)

重新以可读写模式挂载系统磁盘。

更新 quota (非必要)

启动系统虚拟随机数生成器。

配置机器(非必要)。

清除开机过程中的临时文件。

创建 ICE 目录。

启动交换分区(swap)。

将开机信息写入 /var/log/dmesg 文件中。

 

 

 

/etc/profile.d用户登录加载脚本

所有用户加载的环境变量

应用程序所需的启动脚本,其中包括了颜色、语言、lessvimwhich等命令的一些附加设置

 

 

/etc/services所有系统服务

记录网络服务名和它们对应使用的端口号及协议

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、centos6.7常用知识原理

.开头文件为隐藏文件 ls –a查看

 

 

批量安装无人值守软件

 cobbler    kickstart(自动创建用户、密码、优化)

 

 

虚拟机网络模式

 nat本地网络代理

桥接模拟成网卡在路由下自动获取

 

 

centoswindows文件互传

小文件

lrzsz 工具 rz  sz  上传下载  rz -y 覆盖   sz下载接文件名

大文件

Winscp软件,Windows客户端安装后直接ssh连接centos上传下载

 

 

linux文件时间属性 accessmodifychange

stat命令获取文件的详细信息、这里也可以看到文件的inode信息(同ls -i

Access : 文件最近一次被访问的时间

Modify: 文件内容最近一次被修改的时间

Change: 文件属性最近一次被改变的时间

https://blog.csdn.net/cheryll/article/details/77863158

 

Linux文件类型

普通文件(regular file ) 就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ],例如 [-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:

纯文本档(ASCII):这是Linux系统中最多的一种文件类型, 称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这一种文件类型。 举例来说,你可以下达『 cat ~/.bashrc 』就可以看到该文件的内容。 (cat 是将一个文件内容读出来的指令)

二进制文件(binary):,我们的系统其实仅认识且可以执行二进制文件(binary file) Linux当中的可执行文件(scripts, 文字型批处理文件不算)就是这种格式的 举例来说,我们经常使用的 cat 命令就是一个binary file

 

数据格式文件(data) 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的Linux在使用者登入时,都会将登录的数据记录在 /var/log/wtmp那个文件内,该文件是一个data file,他能够透过last这个指令读出来! 但是使用cat时,会读出乱码 因为它是属于一种特殊格式的文件。

 

目录(directory) 就是目录 第一个属性为 [ d ],例如 [drwxrwxrwx]

连接文件(link) 就是类似Windows系统底下的快捷方式! 第一个属性为 [ l ](英文L的小写),例如 [lrwxrwxrwx]

 

设备与装置文件(device) 与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下!通常又分为两种:

 

区块(block)设备档 :就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等就是! 你可以随机的在硬盘的不同区块读写,这种装置就是成组设备!你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]

 

字符(character)设备文件:亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!这些设备的特色就是『一次性读取』的,不能够截断输出。 举例来说,你不可能让鼠标『跳到』另一个画面,而是『滑动』到另一个地方啊!第一个属性为 [ c ]

 

数据接口文件(sockets) 既然被称为数据接口文件, 想当然,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket来进行数据的沟通了。第一个属性为 [ s ] 最常在/var/run这个目录中看到这种文件类型了。

 

数据输送文件(FIFO, pipe) FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFOfirst-in-first-out的缩写。第一个属性为[p]

 

 

 

常见dell服务器

2010-2013   1u  R410  R610   2u  R710

2014-2016   1u  R420  R439   R620   R630     2u  R720 R730

 

 

centos通配符

| 管道符  实现命令组合

* 通配符 任意字符如查看硬盘ls -l /dev/sda*      /dev/cdrom 光驱mount /dev/cdrom /mnt 挂载到目录

? 通配符 单个字符  ls ?.txt

[]  通配符指定字符[0-9]   [135]

两个命令之间分隔符

# 注释

~ 当前用户家目录

- 上一次的路径

$ 变量

/ 路径分隔符   ,根目录

> 输出重定向   > 1.txt  清空1.txt

>> 追加内容,输入输出追加重定向    cat >> 123.txt <<EOF

<< "追加输入重定向 cat >>/1.txt <<xxx   I like linux   xxx"

< 输入重定向

2>> 错误追加重定向 

2> 错误重定向   0输入1输出2错误输出

&>正确错误都收集   echo  666  &>a.txt    或者echo 666 >a.txt 2>&1

2>&1 的意思是将标准错误重定向到标准输出

ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1

ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;

ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

' 所见即所得

" 变量置换

` 解析命令

{} 序列  可以接字母    备份  cp a.txt{,.bak}  echo {1..10}     ,  mkdir /data/{11,22}/data -p

! 取反

&&并且

|| 或者

..上一级目录

.当前目录大文件

 

 

 

linux中的内部命令和外部命令

内部命令:也称shell内嵌命令

外部命令:存放在一个文件中,使用时需要去文件中查找,这些文件被定义在$PATH

[root@nfs01 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

 

 

硬盘RAID阵列

硬件RAID卡有缓存速度快,不建议使用软件raid

多合加成无冗余挂全丢速度块   

只能2块盘大小按小算速度慢 

至少3块盘多和减一奇偶校验备份容量速度一般 

10 至少4个盘损失1/2  支持损坏2块盘 01的组合

 

 

 

常用环境变量

一般为大写

HOME用户主目录

SHELL正在使用解释器名称

HISTSIZE输出历史命令记录条数

HISTFILESIZE保存的历史命令记录条数

MAIL邮件保存路径

LANG系统语言

TMOUT连接超时变量

RANDOM生成随机数字

PS1解释器bash的提示符   [root@xzwj data]#      [\u@\h \W]\$     配置文件/etc/profile

PATH定义解释器搜索用户执行命令的路径

EDITOR用户默认文本编辑器

 

 

 

 

常用转义字符

反斜杠(\):使反斜杠后面的一个变量变为单纯的字符串

单引号(''):转义其中所有的变量为单纯的字符串

双引号(""):保留其中的变量属性,不进行转义处理

反引号(` `):把其中的命令执行后返回结果

我们先定义一个名为PRICE 的变量并赋值为5,然后输出以双引号括起来的字符串与变量信息

[root@lynchj tmp]# PRICE=5

[root@lynchj tmp]# echo "Price is $PRICE"

Price is 5

接下来,我们希望能够输出:Price is $5,即价格是5 美元的字符串内容,但碰巧美元符号与变量提取符号合并后的$$作用是显示当前程序的进程ID 号码,于是命令执行后输出的内容并不是我们所预期的

[root@lynchj ~]# echo "Price is $$PRICE"

Price is 3767PRICE

要想让第一个$乖乖地作为美元符号,那么就需要使用反斜杠(\)来进行转义,将这个命令提取符转义成单纯的文本,去除其特殊功能

[root@lynchj ~]# echo "Price is \$$PRICE"

Price is $5

而如果只需要某个命令的输出值时,可以像命令这样,将命令用反引号括起来,达到预期的效果。例如,将反引号与uname -a 命令结合,然后使用echo 命令来查看本机的Linux 版本和内核信息

[root@lynchj tmp]# echo `uname -a`

Linux lynchj.com 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

 

 

 

U盘引导安装centos

安装UltraISO 

centos镜像,启动  选择 写入硬盘映像,写入方式 usb+hdd+

U盘启动 

TAB键将最下面的

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

改为 vmlinuz initrd=initrd.img linux dd quiet

查看U盘启动盘的名称比如:sdasdbsdc  pslabel一列会显示Centos7等字样的

重启后到第三步界面按下TAB

vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet 

改为  vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb1 quiet   pssdb1就是你看到的启动盘名称

 

 

 

 

内存

写入数据到内存,缓冲区buffer   

内存读取数据,缓存区cache

memcahced   纯内存       

redis  内存加硬盘 

网站优化 硬盘与内存使用比例优化

 

 

LANG系统语言字符集

环境变量,永久改变/etc/profile或者~/.bashrc 同时修改crt字符集

字符集修改        echo "LANG=en_US"> /etc/sysconfig/i18n 

en_US.UTF-8

zh_CN.UTF-8

 

 

 

 

常用快捷键

ctrl+c 终止当前任务

ctrl+d 退出当前用户环境 

ctrl+l 清屏 

ctrl+a 光标移动到开头  home  

ctrl+e 光标移动到结尾

ctrl+u清楚光标前命令

ctrl+k清除光标后命令  

ctrl+r  搜索命令 

ctrl+s 挂起 

ctrl+q 解除挂起

esc +. 上一条执行命令的目录

tab键,连续按3下,命令路径补全

 

 

误操作提示

cp -i 提示  

系统默认将危险命令创建成别名进行 -i别名提示操作 

\或者绝对路径未调用别名

或者unalias掉别名(重启失效) 

 

 

crt批量管理服务器

使用克隆回话,交互窗口 命令批量下发

 

 

主机名修改

修改变量,修改配置文件,修改hosts文件

1hostname  xxxxx

2vi /etc/sysconfig/network        hostname  

3vi/etc/hosts   永久修改 三步

或者

1setup  > dns

2hostname  xxxxx  或者重启   永久修改 两步

 

 

 

常用文件目录

根目录下的binsbinusr目录下的binsbin,这四个目录都是用来保存系统命令的。bin目录下的命令普通用户和root用户都可以执行,但是sbin下的命令只有root用户可以执行。

/bin binary的简写主要放置一些系统的必备执行档例如catcpchmod dfdmesggzipkilllsmkdirmoremountrmsutar等。

 

/usr/bin 主要放置一些应用软体工具的必备执行档例如c++g++gccchdrvdiffdigduejectelmfreegnome* gziphtpasswdkfmktoplastlesslocalem4makemanmcopyncftp newaliasesnslookup passwdquotasmb*wget等。

 

/sbin主要放置一些系统管理的必备程式例如cfdiskdhcpcddumpe2fsckfdiskhaltifconfigifup ifdowninitinsmodlilolsmodmke2fsmodprobequotacheckrebootrmmod runlevelshutdown等。

 

/usr/sbin放置一些网路管理的必备程式例如dhcpdhttpdimapin.*dinetdlpdnamednetconfignmbdsambasendmailsquidswaptcpdtcpdump

/dev 设备

/etc 二进制软件包配置文件默认路径,软件启动程序

/boot存的是启动相关的文件,该目录下不要乱存东西;包含grub.conf启动引导

/dev设备文件保存目录

/home普通用户的家目录

/lib系统库保存目录

/mnt系统挂载目录

/media挂载目录

/root超级用户的家目录

/tmp临时目录

/proc直接写入内存的,虚拟文件系统,内存虚拟目录系统映射

/sys直接写入内存的,虚拟文件系统

/var系统相关文档内容

/var/log/messages  系统日志文件

/var/log/secure  登录日志

/var/spool/clientmqueue 邮件临时目录

/proc/interrupts  查看中断文件

/etc/fstab  硬盘文件系统开机自动挂载文件

/etc/profile 全局环境变量配置文件

 

 

 

 

 

系统启动引导过程

bios>bios boot>hard drive>mbr 0柱面0磁道1扇区前446byte>cat /etc/grub.conf >系统内核kernel>启动init进程

 

 

 

 

必要系统服务

network  rsyslog   sysstat 系统性能组件 

sshd  crond 定时任务      优化开机启动

chkconfig --list |grep 3:on|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash

 

chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash

 

 

文件列表详细属性

-i显示inode total占用空间

1、索引节点号相当于身份证

211个字符  1文件类型,2-9文件权限,11selinux标示

d目录 -普通文件(纯文本,二进制,数据格式)  l链接文件 b块文件

r表示read,读取权限,代表数字4

w表示write,写入权限,代表数字2

x表示execute,执行权限,代表数字1   -没权限0   用户权限位  用户组权限位  其他用户权限  

3、硬链接的数量  访问入口  ln     ln -s 软链接   多文件名指向同一个inode

4、拥有者,所属主    父母

5、文件或目录所属的组    家庭

6、文件或目录的大小

789、月日时分,文件修改时间 对应mtime

10、文件名   不算文件属性不在文件inode ,在上级目录的block

[root@nfs01 ~]# ll -i

total 1002116

143765 drwxr-xr-x  3 root root       4096 Dec 14 12:25 1

143769 drwxr-xr-x  2 root root       4096 Dec 14 13:01 12

143836 -rw-r--r--  1 root root 1024000000 Dec 14 19:14 1Gb.file

143839 -rw-r--r--  1 root root         38 Dec 19 11:45 1.log

143781 -rw-r--r--  1 root root        148 Dec 14 18:03 1.tar

143783 drwxr-xr-x  3 root root       4096 Dec 14 18:10 23

 

 

创建文件系统

创建inode  中包含文件属性包含实体指针,无文件名    centos6   256字节,相同的互为硬链接,一个文件不同入口

创建block  文件的数据内容,一般1k,2k,4k

文件指向inode指向block

 

 

文件、目录权限

用户权限   组权限  其他用户权限    文件所属用户  文件所属组

文件权限

-rw-r--r-- 1 root root

r读取文件    w写入文件 如追加   x执行文件 vi    文件的删除权限在上级目录block

目录权限

-rw-r--r-- 1 root root

r浏览目录 ls  w增加、删除修改目录内文件名需要x    x进入目录权限 cd dir

 

 

 

 

 

 

文件权限与属性 SUIDSGID & SBIT

当一个具有执行权限的文件设置SetUID权限后,用户执行这个文件时将以文件所有者的身份执行。passwd命令具有SetUID权限,所有者为rootLinux中的命令默认所有者都是root

只有可执行的二进制程序才可以设置SetUID

所有者必须对欲设置SetUID的文件具备 可执行(x) 权限

命令执行过程中,其它用户获取所有者的身份(灵魂附体)

SetUID具有时间限制,即完成该程序执行后就消失

设置SetUID

chmod 4xxx < file-name >

chmod u+s < file-name >

取消SetUID

chmod xxx < file-name >

chmod u-s < file-name >

chmod u+s /usr/bin/touch    touch增加SetUID属性,新建文件的所有者为root了,说明在执行touch的时候,用户自动升级为root

SetGID也可以设置目录的相关SetGID权限

针对文件

可执行的二进制文件

命令执行者(即所属组)对该文件具备 x 权限

执行时,执行者被所属组灵魂附体

权限只在执行过程中有效

针对目录:

普通用户对目录具备rx权限,才可以进入到该目录

普通用户在此目录中的有效组会变成此目录的所属组

如普通用户对该目录具备w权限,新建文件的所属组为该目录的所属组

设置SetGID

chmod 2xxx

取消SetGID

chmod xxx

我们此处以locate命令进行讨论:

locate查询命令,比find要快很多,为什么?因为其实搜索的数据库而非整个硬盘:

[root@niesh ~]# ll /usr/bin/locate

-rwx--s--x. 1 root slocate 40496 6  10 2014 /usr/bin/locate

[root@niesh ~]# ll /var/lib/mlocate/mlocate.db

-rw-r-----. 1 root slocate 6306909 7  30 19:15 /var/lib/mlocate/mlocate.db

我用普通用户进行locate查看:

[niesh@niesh root]$ locate mlocate.db

/usr/share/man/man5/mlocate.db.5.gz

去掉locates权限:

[root@niesh ~]# chmod g-s /usr/bin/locate

[root@niesh ~]# ll /usr/bin/locate

-rwx--x--x. 1 root slocate 40496 6 10 2014 /usr/bin/locate

[niesh@niesh root]$ locate mlocate.db

locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 权限不够

也就是:当执行locate命令时,普通用户niesh自动升级为slocate的组成员

SBITStick Bit,粘滞位

只对目录有效,普通用户对该目录有wx权限,若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作(因为普通用户对目录具有w权限),包括其它用户建立的目录/文件;但若赋了SBIT,则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录

设置SBIT

chmod 1xxx < dir-name >

chmod o+t < dir-name >

取消SBIT

chmod xxx < dir-name >

chmod o-t < dir-name >

/tmp为例:查看/tmp的权限:

[niesh@niesh tmp]$ ll -d /tmp/

drwxrwxrwt. 8 root root 4096 7 30 19:40 /tmp/

会看到,/tmp目录的权限other部分为rwt,这个t就是我们设置的粘滞位接下来,我们用其它用户创建两个文件:

 

[Jimmy@niesh tmp]$ touch test-file

[Jimmy@niesh tmp]$ mkdir test-dir

[Jimmy@niesh tmp]$ ll

总用量 0

drwxrwxr-x. 2 Jimmy Jimmy 6 7  30 19:44 test-dir

-rw-rw-r--. 1 root  Jimmy 0 7  30 19:44 test-file

切换到另外一个用户niesh:

 

[niesh@niesh tmp]$ ll

总用量 0

drwxrwxr-x. 2 Jimmy Jimmy 6 7  30 19:44 test-dir

-rw-rw-r--. 1 root  Jimmy 0 7  30 19:44 test-file

niesh用户下,删除/tmp目录下的文件:

 

[niesh@niesh tmp]$ rm -rf test-dir/ test-file

rm: 无法删除"test-dir/": 不允许的操作  ,无法删除!然后,我们切换到root,去掉/tmp的粘滞位:

 

[niesh@niesh tmp]$ su -

密码:

上一次登录:日 7 30 19:43:21 CST 2017pts/0

[root@niesh ~]# chmod o-t /tmp/

[root@niesh ~]# ll -d /tmp/

drwxrwxrwx. 9 root root 4096 7  30 19:48 /tmp/

最后,切换到普通用户niesh,再次删除/tmp下的文件:

 

[niesh@niesh root]$ rm -rf /tmp/test-dir/ /tmp/test-file

[niesh@niesh root]$ ll /tmp/

总用量 0

 

 

 

 

正则表达式

一、基础正则

1 ^word  开头 ls -l |grep "^d"  查询当前目录下的目录    ls -l |grep "^-"查询当前目录下的文件。

2word$ 结尾,ls -F |grep "/$"查询当前目录为文件加标识符以斜线结尾的是目录。

3^$空行

4.代表任意一个字符

5\转义字符 只代表本身

6*重复0个或多个前面的一个字符,o*匹配没有o,1个或多个o

7.*所有

8[abc]匹配集合内任意一个字符  [0-9]

9[^abc]匹配不包含^后的任意一个字符

10a\{n,m\} 重复nm 次,前一个重复的字符

\{n,\}重复至少n 次,前一个重复的字符

\{n\}重复n 次,前一个重复的字符

\{,m}\

11./ 目录及目录本身

12./* 目录下的东西

13\转译字符如  ls -a|grep "."    .是正则表达式 代表任意一个字符  ls -a|grep "\."

14.* 所有  sed  grep  awk

 

 

 

centos支持的文件格式

在系统内核下,目录下有支持格式列表

uname –a

find / -type d -name 2.6.32-573.el6.x86_64

/lib/modules/2.6.32-573.el6.x86_64/kernel/fs/

 

 

 

 

 

 

 

系统分区

fdisk工具,小于2t

parted工具,大于2t 

fdisk -cu /dev/sda 进入分区n创建p打印w保存 +10M

创建swap分区,mkswap /dev/sdb2   free swapon/dev/sdb2 free

保存后partprobe /dev/sda  通知系统内核

parted /dev/sdb

parted /dev/sdb mklabel gpt   Yes                  # msdos

parted /dev/sdb mkpart primary 0 10 Ignore

parted /dev/sdb mkpart primary linux-swap 11 21 Ignore

parted /dev/sdb mkpart logical ext4 22 32 Ignore

parted /dev/sdb p

 

 

后向引用

输出ip地址 

ifconfig|sed -nr 's#^.*dr:(.*)  B.*$#\1#gp'    \1有引用()内容

 

 

开机自启动

所在目录/etc/rc.d /etc/init.d/ chkconfig –list 查看所有开机启动项,通过命令ntsysv  setup进入 可以配置开机服务

chkconfig --list sshd查看sshd启动情况

chkconfig --level 3 sshd off只关闭3运行级别 也可以345  

/etc/init.d/sshd start  ssh服务开机自启动

创建自启动

1/etc/init.d/oldboyd   vim可执行

chmod +x /etc/init.d/oldboyd

/etc/init.d/oldboyd start

2、脚本中包含#chkconfig: 2345 56 27  级别 启动56 关闭27 #description: oldboyd

3chkconfig --add oldboyd

 

 

 

 

 

 

 

 

linux工具体系

新手必会用黄色(8-15k)标记,老鸟必会黄色+红色(15-25K)标记

操作系统:Centos,Ubuntu,Redhat,suse,Freebsd

网站服务:nginx,apache,lighttpd,php,tomcat,resin

数据库:MySQL,MariaDB,PostgreSQL

DB中间件:maxscale,MyCat,atlas,cobar,amoeba,MySQL-proxy

代理相关:lvs,keepalived,haproxy,nginx,heartbeat

网站缓存:squid,nginx,varnish

NOSQL库:Redis,Memcached,MongoDB,HBase,Cassandra,CouchDB

存储相关:Nfs,FastDFS,Moosefs(mfs),Hadoop,glusterfs,lustre

版本管理:svn,git

监控报警:nagios,cacti,zabbix,munin,hyperic,mrtg,graphite

域名解析:bind,powerdns,dnsmasq

同步软件:scp,rsync,inotify,sersync,drbd

批量管理:SSH,Ansible,Saltstack,expect,puppet

虚拟化:kvm,xen

云计算:openstack,docker,cloudstack

内网软件:iptables,zebra,iftraf,ntop,tc,iftop

邮件软件:qmail,posfix,sendmail,zimbra

远程拨号:openvpn,pptp,openswan,ipip

统一认证:openldap

队列工具:ActiveMQ,RabbitMQ,Metaq,MemcacheQ,Zeromq

打包发布:mvn,ants,jenkins

测试软件:ab,JMeter,Webbench,LoadRunner,http_load,tcpcopy

带宽测试:smokeping

性能测试:dd, fio(IOPS测试),iozone(磁盘测试)

日志相关:rsyslog,Awstats,flume,storm,ELK(Elasticsearch+Logstash+Kibana)

搜索软件:Sphinx,Xapian,Solr

无人值守:kickstart,cobbler

软件安装:rpm,yum(设计rpm包定制及yum仓库构建)

大数据:HDFS,Hive,Hbase,Zookeeper,Pig,Spark,Mahout,flume,sqoop

开发语言:Shell,Python,go

 

 

 

 

 

高并发数据实时同步  

inotify +rsync  sersync+rsync 文件级别

mysdql oracle mongodb第三方软件同步

程序双写直接写两台服务器

业务逻辑读写分离,备读不到,读主

drbd软件是基于文件系统级别block,备份节点数据不可用

NFS集群,方案整合双写主存储,备存储用inotify sersync rsync ,备没有找主解决延迟问题

 

 

阿里云开源镜像站

https://opsx.alibaba.com/mirror

 

 

 

Linux系统cpu、内存、硬盘、网络监控

cpu性能监控

1vmstat虚拟内存统计命令,查看CPU的负载情况

[root@nfs01 ~]# vmstat 2 3

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 1  0      0 862808  24596  32520    0    0     6     1    8   11  0  0 100  0  0

 0  0      0 862776  24596  32548    0    0     0     0   11   12  0  0 100  0  0

 0  0      0 862776  24596  32548    0    0     0     0    9   10  0  0 100  0  0

Procs(进程)

r:  运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1

等待IO的进程数量。

Memory(内存)

swpd      使用虚拟内存大小,如果swpd的值不为0,但是SISO的值长期为0,这种情况不会影响系统性能。

free        空闲物理内存大小。

buff        用作缓冲的内存大小。

cache      用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si  每秒从交换区写到内存的大小,由磁盘调入内存。

so 每秒写入交换区的内存大小,由内存调入磁盘。

注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IOCPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合siso,如果free很少,但是siso也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。因为linux总是先把内存用光

 

IO

bi 每秒读取的块数

bo          每秒写入的块数

注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPUIO等待的值也会越大。

system(系统)

in  每秒中断数,包括时钟中断。

cs 每秒上下文切换数。

注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy:         内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa          IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id  空闲时间百分比。

 

2sar命令

[root@nfs01 ~]# sar -u 3 5

Linux 2.6.32-573.el6.x86_64 (nfs01)     01/08/2019      _x86_64_        (1 CPU)

01:27:21 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle

01:27:24 PM     all      0.00      0.00      1.67      0.00      0.00     98.33

01:27:27 PM     all      0.00      0.00      1.67      0.00      0.00     98.33

01:27:30 PM     all      0.00      0.00      1.67      0.00      0.00     98.33

01:27:33 PM     all      0.00      0.00      1.67      0.00      0.00     98.33

01:27:36 PM     all      0.00      0.00      1.67      0.00      0.00     98.33

Average:        all      0.00      0.00      1.67      0.00      0.00     98.33

对上面每项的输出解释如下:

 %user列显示了用户进程消耗的CPU 时间百分比。

 %nice列显示了运行正常进程所消耗的CPU 时间百分比。

 %system列显示了系统进程消耗的CPU时间百分比。

 %iowait列显示了IO等待所占用的CPU时间百分比

 %steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作

 %idle列显示了CPU处在空闲状态的时间百分比。

 这个输出是对系统整体CPU使用状况的统计,每项的输出都非常直观,并且最后一行Average是个汇总行,是上面统计信息的一个平均值。

 需要注意的一点是:第一行的统计信息中包含了sar本身的统计消耗,所以%user列的值会偏高一点,不过,这不会对统计结果产生多大影响。

 在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致 了整体CPU使用率不高,而应用缓慢 现象的发生

 针对这个问题,可以对系统的每个CPU分开查询,统计每个CPU的使用情况:

sar -P 0 3 5   第一个cpu采样3秒采样5

这个输出是对系统的第一颗CPU的信息统计,需要注意的是,sar中对CPU的计数是从0开始的,因此,“sar -P 0 3 5”表示对系统的第一颗CPU进行信息统计,“sar -P 4 3 5”则表示对系统的第五颗CPU进行统计。

怀疑CPU存在瓶颈,可用 sar -u sar -q 等来查看

怀疑内存存在瓶颈,可用 sar -Bsar -r sar -W 等来查看

怀疑I/O存在瓶颈,可用 sar -bsar -u sar -d 等来查看

 

3iostat命令输出CPU和磁盘I/O相关的统计信息

[root@nfs01 ~]# iostat

Linux 2.6.32-573.el6.x86_64 (nfs01)     01/08/2019      _x86_64_        (1 CPU)

 

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

           0.02    0.00    0.20    0.01    0.00   99.77

 

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda               0.42         9.95         1.26     124928      15866

iostat  -c  参数,只显示系统CPU的统计信息

avg-cpu: 总体cpu使用情况统计信息,对于多核cpu,这里为所有cpu的平均值。重点关注iowait值,表示CPU用于等待io请求的完成时间。

Device: 各磁盘设备的IO统计信息。各列含义如下:

Device: sdX形式显示的设备名称

tps: 每秒进程下发的IO读、写请求数量

KB_read/s: 每秒从驱动器读入的数据量,单位为K

KB_wrtn/s: 每秒从驱动器写入的数据量,单位为K

KB_read: 读入数据总量,单位为K

KB_wrtn: 写入数据总量,单位为K

iostat -x -k -d 1 2。每隔1S输出磁盘IO的详细详细,总共采样2

 

4uptime

[root@nfs01 ~]# uptime

 13:53:47 up  3:34,  1 user,  load average: 0.00, 0.00, 0.00

uptime是监控系统性能最常用的一个命令,主要用来统计系统当前的运行状况,输出的信息依次为:系统现在的时间、系统从上次开机到现在运行了多长时间、系统目前有多少登陆用户、系统在一分钟内、五分钟内、十五分钟内的平均负载

以上这些命令只能查看CPU是否繁忙,负载是否过大,但是无法知道CPU为何负载过大,因而,判断系统CPU出现问题后,要结合topps等命令进一步检查是由那些进程导致CPU负载过大的。引起CPU资源紧缺的原因可能是应用程序不合理造成的,也可能是硬件资源匮乏引起的,所以,要具体问题具体分析,或者优化应用程序,或者增加系统CPU资源。

 

内存性能监控

1free

free命令还可以实时监控内存的使用状况。

-s参数可以在指定的时间段内不间断的监控内存的使用情况:

-b表示以千字节(也就是1024字节为单位)来显示内存使用情况。

 free -b -s 5

 

2watch+ free组合使用

watch -n 3 -d free

-n 指定重复执行的时间, -d 表示高亮显示变动  

 

3vmstat

vmstat中重点关注的是swpdsiso行,从这个输出可以看出,此系统内存资源紧缺,swpd占用了900M左右内存,siso占用很大,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。  

 

4sar -r命令组合

所在目录/etc/rc.d /etc/init.d/ chkconfig –list 查看所有开机启动项,通过命令ntsysv  setup进入 可以配置开机服务

chkconfig --list sshd查看sshd启动情况

chkconfig --level 3 sshd off只关闭3运行级别 也可以345  

 

磁盘I/O性能监控

1sar -d命令组合

10:20:01 AM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util

10:30:01 AM    dev8-0      0.05      0.04      0.72     14.45      0.00      1.35      0.42      0.00

10:40:01 AM    dev8-0      0.19      4.48      1.19     30.56      0.00      1.46      0.86      0.02

DEV表示磁盘设备名称。

 tps表示每秒到物理磁盘的传送数,也就是每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求。

 rd_sec/s表示每秒从设备读取的扇区数(1扇区=512字节)。

 wr_sec/s表示每秒写入设备的扇区数目。

 avgrq-sz表示平均每次设备I/O操作的数据大小(以扇区为单位)。

 avgqu-sz表示平均I/O队列长度。

 await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。

 svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。

 %util表示一秒中有百分之几的时间用于I/O操作。

LinuxI/O请求系统与现实生活中超市购物排队系统有很多类似的地方,通过对超市购物排队系统的理解,可以很快掌握linuxI/O运行机制。比如:

avgrq-sz类似与超市排队中每人所买东西的多少。

avgqu-sz类似与超市排队中单位时间内平均排队的人数。

await类似与超市排队中每人的等待时间。

svctm类似与超市排队中收银员的收款速度。

 %util类似与超市收银台前有人排队的时间比例。

对以磁盘IO性能,一般有如下评判标准:

 正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。

 await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

 %util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。  

 

2iostat d命令组合

通过“iostat d”命令组合也可以查看系统磁盘的使用状况  

 

3vmstat –d命令组合

通过“vmstat d”组合也可以查看磁盘的统计数据  

选择适合自己的RAID存取方式,最后,在系统级别上,可以选择适合自身应用的文件系统,必要时使用裸设备提高读写性能

 

网络性能监控

1ping

time值显示了两台主机之间的网络延时情况,如果此值很大,则表示网络的延时很大,单位为毫秒。在这个输出的最后,是对上面输出信息的一个总结,packet loss表示网络的丢包率,此值越小,表示网络的质量越高。  

 

2netstat –i检测网络接口状况

[root@nfs01 ~]# netstat -i

Kernel Interface table

Iface       MTU Met    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0       1500   0     1608      0      0      0     1098      0      0      0 BMRU

eth1       1500   0       95      0      0      0       87      0      0      0 BMRU

lo        65536   0       12      0      0      0       12      0      0      0 LRU

Iface表示网络设备的接口名称。

 MTU表示最大传输单元,单位字节。

 RX-OK/TX-OK表示已经准确无误的接收/发送了多少数据包。

 RX-ERR/TX-ERR表示接收/发送数据包时产生了多少错误。

 RX-DRP/TX-DRP表示接收/发送数据包时丢弃了多少数据包。

 RX-OVR/TX-OVR表示由于误差而遗失了多少数据包。

 Flg表示接口标记,其中:

 L:表示该接口是个回环设备。

 B:表示设置了广播地址。

 M:表示接收所有数据包。

 R:表示接口正在运行。

 U:表示接口处于活动状态。

 O:表示在该接口上禁用arp

 P:表示一个点到点的连接。  

 

3sar n组合显示系统的网络运行状态

sar -n DEV 2 3

通过“-n”选项可以指定4个不同类型的开关:DEVEDEVSOCKFULLDEV显示网络接口信息,EDEV显示关于网络错误的统计数据,SOCK显示套接字信息,FULL显示所有三个开关。

IFACE表示网络接口设备。

 rxpck/s表示每秒钟接收的数据包大小。

 txpck/s表示每秒钟发送的数据包大小。

 rxkB/s表示每秒钟接收的字节数。

 txkB/s表示每秒钟发送的字节数。

 rxcmp/s表示每秒钟接收的压缩数据包。

 txcmp/s表示每秒钟发送的压缩数据包。

 rxmcst/s表示每秒钟接收的多播数据包。 

排查网络问题经常用到的命令还有traceroute,主要用于跟踪数据包的传输路径,还有nslookup命令,主要用于判断DNS解析信息

 

 

 

 

网站访问原理http协议过程

1、用户访问网站流程框架

2DNS解析原理

3TCP/IP三次握手原理

4http协议原理www服务请求过程,请求,报文细节

5、大规模网站集群架构细节

6http协议原理www服务的响应过程

7TCP/IP四次挥手过程原理

 

 

echo $?返回值

执行完命令后执行echo $0返回值为0

说明上条命令执行成功

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、centos6.7常用软件

 

 

vim文本编辑器

进入编辑模式aio

进入末行模式:

退出返回命令模式esc

vi +3  test.txt  直接进入第三行编辑

命令模式

dd删除,5dd删除光标下的5行,

yy复制整行,5yy复制光标出开始的5行,  .重复上一次操作

n显示搜索命令定位到的下一个字符,

N显示搜索命令定位的上一个字符,

u撤销上一步操作,

p将之前删除或者复制的内容粘贴。

G跳最后一行

gg跳到第一行   22gg跳到22 

0行首

1行末

u撤销

ctrl+r回退

 

末行模式:

:w保存

:q退出

:q!强制退出

:wq!强制保存退出

:set nu 显示行号,

:set nonu不显示行号,

:整数是跳转到该行,

:!df -h命令是直接执行命令,

:s/one/two将当前光标所在行第一个one替换成two

:s/one/two/g将光标所在行的所有one替换成two

:%s/one/two/g将全文中所有one 替换成two

?从下至上搜索字符

/从上至下搜索字符  

 

 

 

iproute2套装工具

网络命令工具包

net-tools

iproute2

arp -na

ip neigh

ifconfig

ip link

ifconfig -a

ip addr show

ifconfig --help

ip help

ifconfig -s

ip -s link

ifconfig eth0 up

ip link set eth0 up

ipmaddr

ip maddr

iptunnel

ip tunnel

netstat

ss

netstat -i

ip -s link

netstat -g

ip maddr

netstat -l

ss -l

netstat -r

ip route

route add

ip route add

route del

ip route del

route -n

ip route show

vconfig

ip link

ip addr add 192.168.0.193/24 dev wlan0  lable eth0:1添加ip地址  辅助ip

ip addr show wlan0  查看ip地址

ip addr del 192.168.0.193/24 dev wlan0 删除ip地址

ip route show  列出路由表条目

ip route get 114.114.114.114  列出路由

ss  命令

参数:-t tcp

  -a      所有

  -l       ss -l列出所有打开的网络连接端口

  -s      显示 Sockets 摘要

  -p     进程

  -n      不解析服务名称

  -r      解析服务名称

  -m    显示内存情况

ss netstat 效率对比

time netstat an 效率低

time ss  -ar  效率高

 

 

 

 

 

 

.sh 脚本

#!/bin/bash   脚本声明使用哪种SHELL来执行

$0对应当前脚本程序名称

$#对应总共有几个参数

$*对应所有位置参数

$?对应上一次命令执行返回值

$1$2$3、对应第N个位置的参数值

&表示后台执行

文件测试语句,逻辑测试语句,整数值比较语句,字符串比较语句 [ 条件表达式 ]

 

文件测试参数

-d测试文件是否为目录

-e测试文件是否存在

-f判断是否为一般文件

-r测试当前是否有权限读取

-w测试当前是否有权写入

-x测试当前是否有权执行

&&与运算  [ -e /dev/cdrom ] && echo "Exist" 判断cdrom是否存在,若存在输出exist

||或运算  执行失败后执行后面命令  [ $USER = root ] || echo "user" 如果用户不是root输出user

!非运算 测试结果取相反值 [ ! $USER = root ] || echo "administrator"

 

整数比较运算符

-eq是否等于

-ne是否不等于

-gt是否大于

-lt 是否小于

-le是否等于或小于

-ge是否大于或等于 

free -m  查看内存

free -m | grep Mem:  查看内存查找Mem

free-m | grep Mem: | awk '{print $4}'只保留第四列

FreeMem=`free -m | grep Mem: | awk '{print $4}'`FreeMem定义命令执行返回值

FreeMem=`free -m | grep Mem: | awk '{print $4}'` | echo $FreeMem  输出FreeMem变量的值

[ $FreeMem -lt 1024 ] $$ echo "Insufficient Memory" 变量FreeMem小于1024 成立输出内存不足

字符串比较运算符

=字符串是否相同

!=是否不同

-z是否为空

[ -z $String ]判断是否定义了这个变量

[ $LANG !="en.US"] && echo "not en.us"LANG不是英语en.US时输出不是英语

流程控制语句

if条件测试语句  if>then>fi     if>then>else>fi   if>then>elif>then>else>fi

for条件循环语句  for>do>done  for 变量名 in 取值文件     for 用户名 in 列表文件

while条件循环语句

case条件测试语句

 

 

 

tree目录树结构软件

tree -a 显示所有

tree -d 仅显示目录

tree -L n n代表数字..表示要显示几层...

tree -f 显示完整路径..

tree -L 4 >dirce.doc即可生成UTF8格式的文档..我们也可以在windows 下查看

[root@nfs01 yum.repos.d]# tree

.

├── CentOS-Base.repo

├── CentOS-Debuginfo.repo

├── CentOS-fasttrack.repo

├── CentOS-Media.repo

└── CentOS-Vault.repo

 

 

MegaCli工具集查看raid信息

管理维护硬件RAID软件,可以查看当前raid卡的所有信息:raid卡的型号,raid的阵列类型,raid 的磁盘状态;可以对raid进行管理:在线添加磁盘,创建磁盘阵列、删除阵列等 

1】查raid级别

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL

2】查raid卡信息

/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL

3】查看硬盘信息

/opt/MegaRAID/MegaCli/MegaCli64 -PDList -aALL

4】查看raid卡日志

/opt/MegaRAID/MegaCli/MegaCli64 -FwTermLog -Dsply -aALL

5】显示Raid卡型号,Raid设置,Disk相关信息

/opt/MegaRAID/MegaCli/MegaCli64 -cfgdsply -aALL

6】显示所有逻辑磁盘组信息

/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -LALL -aAll

7】在线添加磁盘

/opt/MegaRAID/MegaCli/MegaCli64 -LDRecon -Start -r5 -Add -PhysDrv[1:4] -L1 -a0

8】创建阵列,不指定热备

/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -a0

9】创建一个 raid5 阵列,由物理盘 2,3,4 构成,指定阵列的热备盘是物理盘5

/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdAdd -r5 [1:2,1:3,1:4] WB Direct -Hsp[1:5] -a0

10】指定第 5 块盘作为全局热备

/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0

11】指定第 5 块盘为某个阵列的专用热备

/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Set [-Dedicated [-Array1]] [-EnclAffinity] [-nonRevertible] -PhysDrv[1:5] -a0

12】删除全局热备

/opt/MegaRAID/MegaCli/MegaCli64 -PDHSP -Rmv -PhysDrv[1:5] -a0

13】删除阵列

/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -L1 -a0

14】将某块物理盘下线/上线

/opt/MegaRAID/MegaCli/MegaCli64 -PDOffline -PhysDrv [1:4] -a0

15】将某块物理盘上线

/opt/MegaRAID/MegaCli/MegaCli64 -PDOnline -PhysDrv [1:4] -a0

16】阵列创建完后,查看初始化同步块的进度

/opt/MegaRAID/MegaCli/MegaCli64 -LDInit -ShowProg -LALL -aALL

以动态可视化文字界面显示

/opt/MegaRAID/MegaCli/MegaCli64 -LDInit -ProgDsply -LALL -aALL

17】查看阵列后台初始化进度

/opt/MegaRAID/MegaCli/MegaCli64 -LDBI -ShowProg -LALL -aALL

以动态可视化文字界面显示

/opt/MegaRAID/MegaCli/MegaCli64 -LDBI -ProgDsply -LALL -aALL

18】查看物理磁盘重建进度

/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ShowProg -PhysDrv [1:5] -a0

以动态可视化文字界面显示

/opt/MegaRAID/MegaCli/MegaCli64 -PDRbld -ProgDsply -PhysDrv [1:5] -a0

磁带状态的变化,从拔盘,到插盘的过程中:

Device |Normal|Damage|Rebuild|Normal

Virtual Drive |Optimal|Degraded|Degraded|Optimal

Physical Drive |Online|Failed –> Unconfigured|Rebuild|Online

19】查看电池信息

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -aAll

20】查看充电状态

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’

21】显示适配器个数

/opt/MegaRAID/MegaCli/MegaCli64 -adpCount

22】显示适配器时间

/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetTime –aALL

23】显示所有适配器信息

/opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aAll

24】显示BBU状态信息

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL

25】显示BBU容量信息

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL

26】显示BBU设计参数

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuDesignInfo -aALL

27】显示当前BBU属性

/opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL

28】查看磁盘缓存策略

/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L0 -a0

/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -L1 -a0

/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -a0

/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -Cache -LALL -aALL

/opt/MegaRAID/MegaCli/MegaCli64 -LDGetProp -DskCache -LALL -aALL

29】设置磁盘缓存策略

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WT|WB|NORA|RA|ADRA -L0 -a0

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached|-Direct -L0 -a0

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -EnDskCache|-DisDskCache -L0 -a0

 

 

ipmitools查看硬件信息工具

查看ipmitool这个安装包是否安装

# rpm -ql ipmitool

安装ipmitool

#yum install ipmitool –y

 

 

sosreport命令用于收集系统配置及架构信息并输出诊断文档

安装yum install sos ,需要root权限来执行

sosreport  生成报告

 

 

rsync数据镜像备份工具

大文件断点,多小文件卡进程

支持ssh、支持vpnrsync -az --delete --exclude "file10" /null/ /xx/

rxinke  备份工具  定时备份 cron+rsync  实时备份 sersync+rsync  inotify+rsync

服务端

1、查看rsync是否安装, rpm -aq rsync

服务端配置文件 /etc/rsyncd.conf  默认不存在   

uid = rsync

gid = rsync

use chroot = no

max connections = 200

timeout = 300

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[backup]

path = /backup

ignore errors

read only = false

list = false

hosts allow = 172.16.1.0/24  #two only one

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password/

2、新增用户rsync    useradd rsync -s /sbin/nolongin -M 虚拟用户不建立家目录

3、创建密码文件/etc/rsync.password/

内容rsync_backup:oldboy、修改权限chmod 600 /etc/rsync.password

4、启动服务  rsync --daemon   、检查ps -ef |grep rsync|grep -v grep     进程为root

5、创建对应目录mkdir /backup    ,为目录授权  chown rsync.rsync /backup

查看netstat -lntup |grep 873      lsof -i :873

6、加入开机自启动echo "/usr/bin/rsync --daemon">>/etc/rc.local

客户端

1、创建密码文件/etc/rsync.password/ 、内容oldboy

2、修改权限chmod 600 /etc/rsync.password

rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password  推送

rsync -avz /backup/ rsync://rsync_backup@172.16.1.41/backup/ --password-file=/et.passwordc/rsync.password  推送

rsync -avz --exclude={a,b} /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password  排除 ab不推送

本地目录末加包含里面内容    不加包含目录名和内容

客户端命令参数

-v  详细模式输出

-z   压缩  --compress-level=NUM改变压缩等级

-a   归档模式保持所有文件属性  等于 -rtopgDL

-r   递归模式

-t  保持文件时间信息

-o  保持文件属性

-p  保持文件权限

-g  保持文件组属性

-P  显示进度信息

-D 保持设备文件信息

-L  保留软链接

--delete  目录一致无差异备份

--bwlimit=RATE 限速

rsync -vzrtopg /etc/hosts /mnt 相当于复制

rsync -avz --delete /tmp1/ /mnt/ 同步tmp1  mnt多的删除

远程服务器定时   速度慢ssh参数优化 服务器端  /etc/ssh/sshd_config  GSSAPIAuthentication no  UseDNS no

rsync -avz /etc/hosts -e 'ssh -p 22' root@172.16.1.31:/mnt      ssh  key 免密码

服务器客户端备份  daemon    873 

 

 

 

 

NFS软件集群Moosefs(mfs)GlusterFSFastDFS文件系统

软件集群Moosefs(mfs)GlusterFSFastDFS文件系统

服务端

1rpm -aq nfs-utils rpcbind 软件是否安装   yum install nfs-utils rpcbind -y

2/etc/init.d/rpcbind start先启动rpc    检查/etc/init.d/rpcbind status netstat -lntup |grep rpc  启动111端口  查看rpc列表 rpcinfo -p localhost

3/etc/init.d/nfs start 启动nfs 检查查看rpc列表 rpcinfo -p localhost   nfs主端口2049  查看进程 ps -ef|egrep ""rpc|nfs""

4chkconfig nfs onchkconfig rpcbind on   ls /etc/rc.d/rc3.d/|grep -E ""nfs|rpc""

5、创建配置文件  /etc/exports     共享的目录   共享的地址  权限 /data 172.16.1.0/24(rw,sync)   /etc/init.d/nfs reload 平滑重启

rw:读写  ro:只读  sync:同步写入安全影响性能  async写缓存快不安全   all_squash任意客户端访问都压缩成nfsnobody账号身份  anonuid 指定用户  anongid 指定组)

实际完整配置/var/lib/nfs/etab

6、创建对应目录  mkdir /data -p    ,chown -R nfsnobody.nfsnobody /data 目录授权  检查showmount -e 172.16.1.31

服务端内核优化  读写缓冲区大小

/proc/sys/net/core/rmem_max    

/proc/sys/net/core/rmem_default

/proc/sys/net/core/wmem_max

/proc/sys/net/core/wmem_default

 

cat >>/etc/sysctl.conf<<EOF

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.wmem_max = 16777216

net.core.rmem_max = 16777216

EOF

sysctl -p   内核优化打印

客户端

1rpm -aq nfs-utils rpcbind 软件是否安装   yum install nfs-utils rpcbind -y

2/etc/init.d/rpcbind start先启动rpc   

3chkconfig rpcbind on 设置开机自启动chkconfig --list rpcbind

4、检查showmount -e 172.16.1.31

5、挂载mount -t nfs 172.16.1.31:/data /mnt   df -hcat /proc/mounts

6、自动挂载echo ""mount -t nfs 172.16.1.31:/data /mnt"" >> /etc/rc.local,    /etc/fastb 挂载不行 在网络服务之前可以开启netsf 自启动

 客户端cat /proc/mounts  umount -lf /mnt强制卸载, mount 挂载参数nouid ,noexec不执行,noatime不开启时间戳,ro只读,rw可写,nodiratime不目录时间戳,remount文件只读恢复,rsync bug重启,单用户模式mount -o rw,remount /  ,nodev非设备,intr防止锁死  exportfs -rv 相当于/etc/inti.d/nfs reload 加载配置生效

mount -t nfs -o bg,hard,intr,rsize=131072,wsize=131072,nosuid,noexec,noatime,nodev  172.16.1.31:/data/ /mnt

 

 

 

 

 

 

 

 

 

 

screen终端切换后台执行命令防止中断  

参数:-A  将所有的视窗都调整为目前终端机的大小。

-d <作业名称>  将指定的screen作业离线。

-h <行数>  指定视窗的缓冲区行数。

-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。

-r <作业名称>重新连接会话screen -r 1811.pts-3.nfs01

-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。

-s  指定建立新视窗时,所要执行的shell

-S <作业名称>  指定screen作业的名称。

-v  显示版本信息。

-x  恢复之前离线的screen作业。

-ls--list  显示目前所有的screen作业。

-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

安装yum install screen  -y

[root@nfs01 tmp]# screen -ls

There is a screen on:

        1748.pts-0.nfs01        (Attached)

1 Socket in /var/run/screen/S-root.

 

 

 

 

 

 

 

 

inotify文件系统监测,实现实时备份  

其他软件sersync,lrsyncd等,监控磁盘blockinode文件变化

1、实现客户端到rsync服务器的文件目录推送

2、在客户端上配置安装inotify,监测/proc/sys/fs/inotify/是否存在有代表系统内核支持,监测rpm -qa inotify-tools,安装wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

再安装yum install inotify-tools –y

3、使用命令inotifywait,实现对目录的监听 

-m  监听

-d  后台运行

-r 子目录监控

-e 监控事件增删改

access访问

modify修改

attrib属性变化

close_write写入之后关闭

close关闭

open文件打开

move移动

create创建

delete删除

unmount卸载

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create,delete /backup 监控创建删除

04/01/19 18:25 /backup/1

4、当监控到变化后实现对变化文件进行推送,创建同步脚本inotify.sh/server/scripts

#!/bin/bash

Path=/data

Ip=172.16.1.41

/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $Path \

| while read file

do

cd $Path &&\

rsync -az ./ --delete rsync_backup@$Ip::nfsbackup --password-file=/etc/rsync.password &

done

优化脚本

#!/bin/bash

Path=/data

Ip=172.16.1.41

/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $Path \

| while read file

do

if [ -f $file ];then

rsync -az $file --delete rsync_backup@$Ip::nfsbackup --password-file=/etc/rsync.password

else

cd $Path &&\

rsync -az ./ --delete rsync_backup@$Ip::nfsbackup --password-file=/etc/rsync.password

fi

done

执行脚本sh inotify.sh 或者sh –x inotify.sh

生成文件测试for n in `seq 10` ; do touch stu$n; sleep 1; donedata目录下

实现推送文件到服务器nfsbackup目录

创建开机启动服务vim /etc/init.d/syncd

#!/bin/bash

#chkconfig: 2345 38 46

. /etc/init.d/functions

if [ $# -ne 1 ];then

usage; $0 {start|stop}

exit 1

fi

case "$1" in

start)

/bin/bash /server/scripts/inotify.sh &

echo $$ >/var/run/inotify.pid

if [ `ps -ef|grep inotify|wc -l` -gt 2 ];then

action "inotify service is started" /bin/true

else

action "inotify service is started" /bin/false

fi

;;

stop)

kill -9 `cat /var/run/inotify.pid` >/dev/null 2>&1

pkill inotifywait

sleep 1

if [ `ps -ef|grep inotify|grep -v grep|wc -l` -eq 0 ];then

 action "inotify service is stopped" /bin/true

else

action "inotify service is stopped" /bin/false

fi

;;

*)

usage; $0 {start|stop}

exit 1

esac

chmod +x /etc/init.d/syncd

chkconfig --add syncd

ps -ef |grep inotify查看是否启动成功

参数优化

/proc/sys/fs/inotify目录下参数

max_queued_events 默认16384 队列可容纳的事件数量(单进程)echo 655350 >

max_user_watches 默认8192命令可见识的文件数量echo 655350 >

max_user_instances 默认128可运行waitwatch命令的进程数

重启失效可以放到vi /etc/rc.local  

echo 655350 >/proc/sys/fs/inotify/max_queued_events

echo 655350 >/proc/sys/fs/inotify/max_user_watches

优缺点

并发太大会有延迟

调用rsync单进程调用单并发  后面加&优化

 

 

 

 

 

sersync文件系统监测  

支持配置文件管理,真正守护进程,失败定时重传,第三方http接口调用更新cdn缓存,多线程

配置文件confxml.xml和主程序可规划目录bin放主程序config放配置文件log放日志

<filter start="false">

    <exclude expression="(.*)\.svn"></exclude>

    <exclude expression="(.*)\.gz"></exclude>    排除监控文件falsetrue

 

<inotify>

    <delete start="true"/>

    <createFolder start="true"/>

    <createFile start="false"/>    监控的情况删除创建等

 

  <sersync>

    <localpath watch="/opt/tongbu">    同步原目录

        <remote ip="127.0.0.1" name="tongbu1"/>    同步服务器端ip地址及模块172.16.1.41 nfsbackup

        <!--<remote ip="192.168.8.39" name="tongbu"/>-->

        <!--<remote ip="192.168.8.40" name="tongbu"/>-->

    </localpath>

 

    <rsync>

        <commonParams params="-artuz"/>     调整-avz

        <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>  调整true  用户rsync_backup密码修改成   /etc/rsync.password

        <userDefinedPort start="false" port="874"/><!-- port=874 -->  默认端口

        <timeout start="false" time="100"/><!-- timeout=100 -->   客户端超时

        <ssh start="false"/>

 

    <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->  失败日志目录

chmod +x /application/sersync/bin/sersync  加执行权限

参数-d:启用守护进程模式

参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍

c参数-n: 指定开启守护线程的数量,默认为10

参数-o:指定配置文件,默认使用confxml.xml文件

参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块

参数-m:单独启用其他模块,使用 -m socket 开启socket模块

参数-m:单独启用其他模块,使用 -m http 开启http模块

不加-m参数,则默认执行同步程序

/bin/sersync/sersync2 -d -r -n 8 -o /bin/sersync/confxml.xml  启动服务

放入/etc/rc.local   写好注释

 

 

ssh数据加密通信远程登录  

两个服务功能sftp-serverssh服务(scp

修改监听端口Port

ssh -p 52113 oldboy@10.0.0.61  指定端口指定用户

vi /etc/ssh/sshd_config

是否允许密码为空用户登录PermitEmptyPasswords

是否允许root用户登录PermitRootLogin

优化连接速度是否对远程主机反向解析UseDNS no

优化连接速度GSSAPIAuthentication no

ListenAddress 0.0.0.0 监听ip地址

centos连接ssh密钥文件,客户端/root/.ssh/known_hosts

错误提示Connection refused ,防火墙,端口错误,服务没开,no route to host 防火墙

/etc/init.d/sshd restart 重启ssh服务

/etc/init.d/sshd reload

/etc/ssh/sshd_config 配置文件

cp /etc/ssh/sshd_config{,.ori}

sed -ir  ’13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no’ /etc/ssh/sshd_config

13行插入

批量管理实例

1、创建用户及密码

useradd oldgirl

echo 123456|passwd --stdin oldgirl

id oldgirl

su - oldgirl

2、管理机创建密钥对

ssh-keygen -t dsa   回车

生成在用户对应家目录/home/oldgirl.ssh/ 隐藏目录

id_dsa 钥匙  私钥id_dsa.pub 公钥

非交互创建密钥对

echo -e “\n”|ssh-keygen -t dsa -N””

分发发送公钥命令到客户端,可以手动复制权限要600,重命名为authorized_keys

ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.41

ssh-cooy-id -i .ssh/id_dsa.pub “-p 52113 oldboy@172.16.1.41”

查询41ip地址

ssh oldgirl@172.16.1.41 /sbin/ifconfig eth0

生成脚本批量查询

#!/bin/sh

if [ $# -ne 1 ];then

  echo "USAGE:/bin/sh $0 ARG1"

  exit 1

fi

for n in 8 31 41

do

 echo ========172.16.1.$n==========

 ssh  oldgirl@172.16.1.$n "$1"

done

 

sh chaxun.sh "/sbin/ifconfig eth0"

sh chaxun.sh "cat /etc/redhat-release"

发送host到客户机

scp -P52113 hosts oldgirl@172.16.1.31:/etc/hosts

会提示没有权限

企业实现ssh方案

1、直接 root ssh key

条件允许root ssh登录

2sudo提升权限实现拷贝没有权限的用户

visudo oldgirl 加入只允许有/usr/bin/rsync 权限

oldgirl ALL=(ALL) NOPASSWD: /usr/bin/rsync

echo oldgirl ALL=  NOPASSWD: /usr/bin/rsync>>/etc/sudoers

visudo -c

scp -P52113 hosts oldgirl@172.16.1.31:~ 先传到家目录

ssh -P52113 -t oldgirl@172.16.1.31 sudo rsync ~/hosts /etc/hosts   远程sudo -t 或者注释掉配置文件中Defaults    requiretty生成批量分发脚本

fenfa.sh 脚本

#!/bin/sh

./etc/init.d/functions

for n in 8 31 41

do

 scp -P52113 ~/hosts oldgirl@172.16.1.${n}:~ >/dev/null 2>&1&&\

 ssh -P52113 -t oldgirl@172.16.1.$n sudo rsync ~/hosts /etc/hosts >/dev/null 2>&1

 if [$? -eq 0 ]:then

   action "fenfa hosts 172.16.1.$n" /bin/true

  else

   action "fenfa hosts 172.16.1.$n" /bin/false

  fi

done

 

ssh -P52113 -t oldgirl@172.16.1.$n sudo rsync /etc/hosts /etc/hosts_$(date +%F-%H-%M-%S).ori

最好备份分发机源文件

复制任何文件进行分发

#!/bin/sh

if [ $# -ne 2 ];then

  echo "USAGE:/bin/sh $0 ARG1 ARG2"

  exit 1

fi

. /etc/init.d/functions

for n in 8 31 41

do

 scp  ~/$1 oldgirl@172.16.1.${n}:~ >/dev/null 2>&1&&\

 ssh  -t oldgirl@172.16.1.$n sudo rsync ~/$1 $2 >/dev/null 2>&1

 if [ $? -eq 0 ];then

   action "fenfa hosts 172.16.1.$n" /bin/true

  else

   action "fenfa hosts 172.16.1.$n" /bin/false

  fi

done

3、利用suid来实现拷贝

scp -P52113 hosts oldgirl@172.16.1.31:~先传到家目录

利用rsync推送,先到客户机为rsync授权 chmod u+s `which rsync`

scp -P52113 hosts oldgirl@172.16.1.31 rsync ~/hosts /etc/hosts

通过rsycnssh通道模式进行文件分发,增量加密分发

rsync -avz hosts -e ‘ssh -p 52113’ oldgirl@172.16.1.41:~

 

 

 

expect   自动交互工具批量分发安装软件

yum install -y expect

rpm -qa expect

安装包含工具mkpasswd 随机生成密码-l 生成位数

非交互生成密钥及实现批量分发管理

1、先决条件客户机创建用户及密码,并且为用户创建sudo权限

所有机器为root情况下执行

useradd oldgirl8889

echo 123456|passwd --stdin oldgirl8889

id oldgirl8889

echo oldgirl8889 ALL=  NOPASSWD:  ALL >>/etc/sudoers

visudo -c

su - oldgirl8889

 

2、创建公钥分发exp自动脚本,创建自动复制文件脚本,创建yum 安装命令脚本,并且为三个文件进行授权

chown -R oldgirl8889.oldgirl8889 /home/oldgirl8889/*

 

 

fenfagongyao.exp

#!/usr/bin/expect

if { $argc != 2 } {

 send_user "usage: expect fenfa_sshkey.exp file host\n"

exit

}

 

 

#define var

set file [lindex $argv 0]

set host [lindex $argv 1]

set password "123456"

#spawn scp /etc/hosts root@10.0.0.142:/etc/hosts

#spawn scp -P52113 $file oldboy@host:$dir

spawn ssh-copy-id -i $file "oldgirl8889@$host"

expect {

          "yes/no" {send "yes\r";exp_continue}

          "*password" {send "$password\r"}

}

expect eof

 

exit -onexit {

send_user "good bey!\n"

}

 

#script usage

#example

 

 

auto_deploy.sh

#!/bin/sh

. /etc/init.d/functions

#1.product key pair

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

 if [ $? -eq 0 ];then

action "create dsa $ip" /bin/true

else

action "create dsa $ip" /bin/false

exit 1

fi

 

#2.dis pub key

for ip in 8 31 41

do

expect fenfagongyao.exp ~/.ssh/id_dsa.pub 172.16.1.$ip >/dev/null 2>&1

if [ $? -eq 0 ];then

action  "$ip" /bin/true

else

action  "$ip" /bin/false

fi

done

 

#3.dis fenfa scripts

for n in 8 31 41

do

scp  -rp ~/scripts oldgirl8889@172.16.1.$n:~

done

#3.install service

for m in 8 31 41

do

ssh -t  oldgirl8889@172.16.1.$m sudo /bin/bash ~/scripts/install.sh

done

 

 

 

 

服务安装脚本/scripts/install.sh

yum install httpd -y

 

执行sh -x auto_deploy.sh

 

 

 

 

 

 

 

 

 

 

saltstack   自动化运维工具

ll /etc/yum.repos.d/ 检查是否安装epel

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

阿里云epel

安装yum install salt-master -y

客户机端安装yum install salt-minion -y

设置开机启动chkconfig salt-master on

客户端开机启动chkconfig salt-minion  on

修改管理配置文件vim /etc/salt/master ,删除注释,注意空格,file_root 修改下面的

file_roots:

  base:

- /srv/salt

 

 

 

pillar_roots:

  base:

    - /srv/pillar

启动管理端服务

/etc/init.d/salt-master start

 

修改客户端配置文件

vim /etc/salt/minion

 

master: 172.16.1.61

#id  修改为id: web     注意空格,id是自己的标识

 

启动服务端

/etc/init.d/salt-minion start

 

管理端执行salt-key 显示上线主机

salt-key -A

目标  模块  参数

salt '*' test.ping  测试主机在线

salt-key -d xxx  删除主机

salt-key -D删除全部主机

salt '*' cmd.run 'df -h' 查询主机硬盘

mkdir /srv/{salt,pillar}创建两个文件夹管理机

salt下创建host_file.sls文件分发host

 

/etc/host:

  file.managed:

    - source: salt://files/hosts

    - user: root

    - group: root

- mode: 644

 

salt '*' state.sls host_file

 

salt-cp '*' /etc/hosts /etc/   批量分发hosts到其他主机etc

 

salt '*' cron.list_tab root 查询所有主机root用户的定时任务

 

同步定时任务脚本/srv/salt/目录下创建脚本 crontab.sls

/usr/sbin/ntpdate times.aliyun.com >>/dev/null:

  cron.present:

    - user: root

    - minute: '*/5'

 

salt '*' state.sls crontab  执行命令

 

删除计划任务  创建  del_cron.sls

 

/usr/sbin/ntpdate times.aliyun.com >>/dev/null:

  cron.absent:

    - name: /usr/sbin/ntpdate times.aliyun.com >>/dev/null

 

salt '*' state.sls 'del_cron'

 

 

 


 

 

 

nginx服务器web

安装pcre库,支持rewrite模块伪静态重写

yum install pcre pcre-devel -y

rpm -qa pcre pcre-devel

yum install openssl openssl-devel -y

yum -y install gcc gcc-c++ autoconf automake make

创建www用户   useradd www -s /sbin/nologin -M

安装nginx  http://nginx.org/en/download.html 下载以前的一个稳定版

切换目录nginx-1.6.3,执行./configure --help可以查看要编译安装的内容

编译安装内容

./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/app/nginx-1.6.3/

 

echo $? 0 编译成功

make   进行编译

make install 进行安装

ln -s /application/nginx-1.6.3/ /application/nginx  做软连接用于升级后期维护方便

/application/nginx/sbin/nginx -t   执行检查查看语法是否正确配置文件是否正确

/application/nginx/sbin/nginx  执行启动

/application/nginx/sbin/nginx  -V 查看版本机器编译安装参数

编译安装方法

/application/nginx/sbin/nginx  -s reload重启  加入/etc/rc.local 自启动

/application/nginx/sbin/nginx -s stop 停止服务

或者直接yum 安装

www目录进行授权   用户和组为www   chown -R www.www html

 

 

nginx.conf

 

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include extra/*.conf;

}

 

 

 

 

 

 

 

worker_processes auto;进程数量

events模型连接数

虚拟主机基于域名、ip、端口

server {

        listen       80;

        server_name  1.com;

        location / {

            root   html/1;

            index  index.html index.htm;

        }  

    }

 

    server {

        listen       80;

        server_name  2.com;

        location / {

            root   html/2;

            index  index.html index.htm;

        }

    }

增加参数autoindex on; server模块里面自动列表,不返回403,用于下载

增加参数include extra/*.conf; 可以外部调用server标签配置文件

别名www不加www,监控多台主机www1  www2等用于监控

添加配置到conf 增加主机检测   并发连接数等

server {

    listen       8000;

    location / {

    stub_status on;

    access_log off;

 }

}

 

错误日志配置  ,错误日志可以配置等级不要太高默认就好太高产生大量磁盘消耗

error_log /var/log/nginx/error.log;

 

访问日志放到http标签

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

日志格式

access_log  /var/log/nginx/access.log  main;日志目录

 

 

轮询切割日志

cut_nginx_log.sh

cd /application/nginx/logs

/bin/mv access.log acess_$(date +%F -d '-1day').log

/application/nginx/sbin/nginx -s reload

 

location语法列表模块,地址精确匹配

~区分匹配大小写   ~*不区分大小写 !取反

等号优先匹配

server {

        listen       80;

        server_name  2.com;

        location / {

           return 401;

        }

        location = / {

           return 402;

        }

        location /documents/ {

           return 403;

        }

        location ^~ /images/ {

           return 404;

        }

        location ~* \.(gif|jpg|jpeg)$  {

           return 500;

        }

       }

 

 

curl -s -o /dev/null -I -w "%{http_code}\n" 2.com 测试返回值

=精确匹配>^~匹配字符串不做正则匹配检查>~*正则匹配>/documents常规字符串优先匹配正则>/ 默认匹配      匹配优先级

 

rewrite伪静态实现模块,地址重写需要pcre支持

rewrite ^/(.*) http://2.com/$1 permanent;

尾部匹配规则redirect  302临时重定向  permanent201永久重定向,使用alias标记必须使用last标记,使用proxy_pass要使用break标记

 

 

网站密码验证,认证文件,认证地址

server {

        listen       80;

        server_name  2.com;

        location / {

        auth_basic "xzwj";

        auth_basic_user_file /application/nginx/conf/htpasswd;

 

        root html/www;

        index index.html;

         }

       }

 

htpasswd  -cb /application/nginx/conf/htpasswd xzwj xzwj   htpasswd命令生成用户密码文件

 

nginx互联phpnginx配置文件加入

location ~ .*\.(php|php5)?$ {

        root html/www;

        fastcgi_pass 127.0.0.1:9000;

        fastcgi_index index.php;

        include fastcgi.conf;

       }

指向本地php9000端口502检查端口

echo "<?php phpinfo(); ?>" >test_info.php  测试页面

测试数据库

test_mysql.php

 

<?php

     $link_id=mysql_connect('localhost','root','666666') or mysql_error();

     if($link_id){

              echo "mysql successful by xzwj!";

     }

     else{

              echo mysql_error();

     }

?>

 

图片文件夹上传目录与nfs同步

查询本地id www

uid=505(www) gid=505(www) groups=505(www)

nfs服务器创建用户

useradd -u 505 www

vi /etc/exports 修改nfs配置文件

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=505,anongid=505)加入权限

chown -R www.www /datadata授权

/etc/init.d/rpcbind status客户端www服务器需要安装rpcbind nfs-utils

rpm -qa rpcbind nfs-utils

客户端加入

/etc/init.d/rpcbind startvi /etc/rc.local自启动

客户端把uploads目录文件复制备份走

挂载mount -t nfs 172.16.1.31:/data/nfs-www /application/nginx/html/www/wp-content/uploads/

加入vi /etc/rc.local

cp -a tmp/* uploads/文件复制回来

 

伪静态wordpress

wordpress后台配置固定链接xzwj/%post_id%.html

nginx配置文件location中加入

try_files $uri $uri/ /index.php?q=$uri&$args;

 

 

 

 

 

vsftpd服务器ftp

yum install vsftpd -y

vim /etc/vsftpd/vsftpd.conf 配置文件

启动ftp服务:service vsftpd start

查看ftp服务状态:service vsftpd status

重启ftp服务:service vsftpd restart

关闭ftp服务:service vsftpd stop

修改配置文件

anonymous_enable=YES 允许匿名用户登录FTP

anon_upload_enable=YES               #打开匿名用户的上传权限

anon_mkdir_write_enable=YES       #打开匿名用户创建目录的权限

anon_other_write_enable=YES        #打开匿名用户删除和重命名的权限(如需要,需自己添加)  anon_umask=022                            #匿名用户的掩码(如需要,需自己添加,含义:如umask022,这时创建一个权限为666的文件,文件的实际权限为666-022=644

anon_root=/var/ftp/pub   设置匿名用户默认目录   对应目录需要设置权限755

 

 

modprobe ip_nat_ftp  错误:    连接超时    错误:    读取目录列表失败    重启失效

修改/etc/sysconfig/iptables-config文件   IPTABLES_MODULES=""   修改为:IPTABLES_MODULES="ip_nat_ftp"

 

设置启动配置:chkconfig  vsftpd on

 

 

mysql数据库服务器

上传软件包,软件目录解压

新增mysql用户useradd -s /sbin/nologin mysql -M

解压tar -xzvf mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

mv mysql-5.5.62-linux-glibc2.12-x86_64/* /application/mysql-5.5.62 移动到软件安装目录

ln -s /application/mysql-5.5.62 /application/mysql

chown -R mysql.mysql /application/mysql  mysql授权用户

cd /application/mysql

./scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data/ --user=mysql   执行安装设置安装目录,设置数据存储目录  ,设置用户

bin/mysqld_safe  启动文件,修改目录/usr/local  /application

cd /application/mysql/bin

sed 's#/usr/local/#/application/#g' mysqld_safe |grep /usr/local

sed -i  's#/usr/local/#/application/#g' mysqld_safe

cp /application/mysql/support-files/my-small.cnf /etc/my.cnf 复制配置文件

/application/mysql/bin/mysqld_safe --user=mysql  启动    进入mysql

修改路径

export PATH="/application/mysql/bin:$PATH"    修改路径 放入vi /etc/profile     . /etc/profile重新加载

输入mysql直接进入  设置环境变量或者cp -a /application/mysql/bin/* /usr/local/sbin/

cd /application/mysql/

sed -i 's#/usr/local/#/application/#g' support-files/mysql.server 编辑server文件

cp support-files/mysql.server /etc/init.d/mysqld  复制到init.d

chmod +x /etc/init.d/mysqld  加权

/etc/init.d/mysqld  stop  停止服务

/etc/init.d/mysqld  start 启动服务

错误日志/application/mysql/data/机器名.err

chkconfig --add mysqld加入开机自启动

mysql错误

1、删除重新创建数据库,初始化数据

2mysql数据目录授权,或者mysql数据文件损坏

3、检查主机名对应主机ip解析

4/tmp目录权限问题 chmod -R 1777 /tmp/

默认root没有密码需要设置密码mysqladmin -uroot password 123456

mysql -uroot -p123456登录

mysqladmin -uroot -p123456 password 666666 修改密码

进入mysqlshow databases;查看现有的库

drop database test;删除库

create database wordpress;新建库wordpress

select user();查看当前用户

system whoami  sql外执行命令

select user,host from mysql.user;查询用户

grant all on wordpress.* to wordpress@'localhost' identified by '123456';创建用户

grant all on *.* to xzwj@'%' identified by '123456' with grant option;可以创建远程连接方便管理库

drop user wordpress@'localhost';删除用户

show grants for wordpress@'localhost';显示用户权限

flush privileges;刷新权限生效

 

数据库迁移

mysqldump -uroot -p666666 wordpress -B |gzip>bak.sql.gz导出数据库

scp bak.sql.gz root@10.0.0.51:/tmp 推送

gzip -d bak.sql.gz 解压

新数据库创建用户root密码mysqladmin -uroot password 123456

mysql -uroot -p666666 </tmp/bak.sql 导入数据库

mysql -uroot -p666666 -e "show databases"查看确认

mysql -uroot -p666666 -e "use wordpress;show tables;"

grant all on wordpress.* to wordpress@'172.16.1.%' identified by '123456';创建可远程访问的库管理

flush privileges;刷新权限生效

修改vim wp-config.php

/** MySQL主机 */

define('DB_HOST', '172.16.1.51');

use wordpress; 切换表

show tables;查看表

select * from xzbl_posts\G;竖向显示内容

 

 

启动服务:/application/mysql/bin/mysqld_safe --user=mysql

查看服务状态:lsof -i :3306

 

重置root密码

/etc/init.d/mysqld stop

/etc/init.d/mysqld start --console --skip-grant-tables

mysql

use mysql;

update user set password=password('123455')where user='root';

exit

 

 

php服务器

通信基于fastcginginx

安装php语言所依赖的库devel,扩展库

yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel -y

yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y

手动安装wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz解压进入目录

./configure --prefix=/usr/local/libiconv

make

make install

rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel libiconv-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel  检查

 

变更阿里镜像源后执行安装

yum install libmcrypt-devel -y

yum -y install mhash

yum -y install mcrypt

rpm -aq mcrypt mhash libmcrypt-devel 检查

php-5.5.32.tar编译安装  ,指定php路径,指定mysql安装目录指定用户wwwnginx一样,开启enable-fpm fastcgi

./configure \

--prefix=/application/php5.5.32/ \

--with-mysql=/application/mysql/ \

--with-pdo-mysql=mysqlnd \

--with-iconv-dir=/usr/local/libiconv \

--with-freetype-dir \

--with-jpeg-dir \

--with-png-dir \

--with-zlib \

--with-libxml-dir=/usr \

--enable-xml \

--disable-rpath \

--enable-bcmath \

--enable-shmop \

--enable-sysvsem \

--enable-inline-optimization \

--with-curl \

--enable-mbregex \

--enable-fpm \

--enable-mbstring \

--with-mcrypt \

--with-gd \

--enable-gd-native-ttf \

--with-openssl \

--with-mhash \

--enable-pcntl \

--enable-sockets \

--with-xmlrpc \

--enable-soap \

--enable-short-tags \

--enable-static \

--with-xsl \

--with-fpm-user=www \

--with-fpm-group=www \

--enable-ftp \

--enable-zip \

--enable-opcache=no

如果没有安装mysql--with-mysql=mysqlnd替代--with-mysql=/application/mysqlphp自带连接工具

其他需要mysql相关包场景

--enable-mysqlnd \

--with-pdo-mysql=mysqlnd \

--with-mysql=mysqlnd

make常见错误,找不到共享库目录,加载共享库错误

创建链接ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/

编辑文件vi /etc/ld.so.conf加入/application/mysql/lib/目录使用ldconfig生效

make找不到phar文件

创建文件touch ext/phar/phar.phar

make -j多核cup同时

make

make install  编译时间长可以到虚拟机或者其他命令编译

ln -s /application/php5.5.32/ /application/php

两个配置文件php.ini-development  php.ini-production  对比 diff php.ini*  vimdiff php.ini*

cp php.ini-production /application/php/lib/php.ini

修改进程配置文件

/application/php/etc目录下php-fpm.conf.default

cp php-fpm.conf.default php-fpm.conf

启动/application/php/sbin/php-fpm进程    加入/etc/rc.local 自启动

默认端口9000     lsof -i:9000

ps -ef |grep php-fpm

 

 

 

Apache服务器

安装环境支持压缩yum install -y  zlib zlib-devel apr-util apr prce libtool gcc-c++libxml2-devel pcre-devel openssl-devel expat-devel && yum -y groupinstall "Development Tools"

下载依赖包apr

wget http://mirrors.cnnic.cn/apache/apr/apr-1.6.5.tar.gz

wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.6.1.tar.gz

tar xf apr-util-1.6.1.tar.gz &&tar xf apr-1.6.5.tar.gz

下载Apachehttps://mirrors.tuna.tsinghua.edu.cn/apache/httpd/

httpd-2.4.38.tar.gz 

解压3个文件到目录复制文件到安装目录

编译安装apr

cd /tools/apr-1.6.5/

 ./configure --prefix=/usr/local/apr

make && make install

 

编译安装apr-util

cd /tools/apr-util-1.6.1/

 ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make&&make install

 

编译安装Apache

cd /app/apache2.4.38

./configure --prefix=/app/apache2.4.38 --enable-deflate --enable-expires --enable-headers --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

make&&make install

 

ln -s /app/apache2.4.38/ /app/apache

cd /app/apache

 

配置文件/app/apache/conf/httpd.conf

开启虚拟主机,取消掉注释Include conf/extra/httpd-vhosts.conf

ServerName 127.0.0.1:80

Options Indexes FollowSymLinks 取消列目录

Options FollowSymLinks

 

配置vi conf/extra/httpd-vhosts.conf 

<Directory "/app/apache/htdocs">

    Options Indexes FollowSymlinks

    AllowOverride All

    Require all granted

    </Directory>

 

<VirtualHost *:80>

    ServerAdmin 150242163@qq.com

    DocumentRoot "/app/apache/docs/html/www"

    ServerName www.1.com

    ServerAlias 1.com

    ErrorLog "logs/1.com-error_log"

    CustomLog "logs/1.com-access_log" common

</VirtualHost>

 

<VirtualHost *:80>

    ServerAdmin 150242163@qq.com

    DocumentRoot "/app/apache/docs/html/blog"

    ServerName www.2.com

    ServerAlias 2.com

    ErrorLog "logs/2.com-error_log"

    CustomLog "logs/2.com-access_log" common

</VirtualHost>

语法检查/app/apache2.4.38/bin/apachectl -t

/app/apache2.4.38/bin/apachectl start  启动服务

/app/apache2.4.38/bin/apachectl graceful 平滑重启

 

 

 

 

 

 

 

五、centos6.7企业案例

 

 

配置文件在Windows系统编辑,导致执行命令失败

Windows系统中换行符为^M,如果没有在保存的时候选择Unix换行符$DOS并存导致支持追加命令时候不能自动换行

yum install dos2unix -y 

dos2unix  file 命令

替换Windows换行符   对应命令unix2dos

或者追加之前执行

echo >> file    之后在追加

 

 

 

 

虚拟机网卡启动不来

克隆机器网卡无法启动

Device eth0 does not seem to be present, delaying initialization

清除/etc/sysconfiig/network-scritps/ifcfg-eth0 下的HWADDR UUID

清空/etc/udev/rules.d/70-persistent-net.rules,reboot重启

 

 

 

root密码丢失

重置root管理密码

centos6

1、光盘引导选第三项,  挂载到光盘引导 修改/etc/passwd  root 密码x 删除

2、开机倒计时 按回车,修改内核e 编辑init 1回车保存,b引导进入单用户模式  修改 passwd root

centos7

1、按下”e”键之后,找到“LANG=zh_CN.UTF-8”这句,在这句后面加上“init=/bin/sh,然后按Ctrl+x

2、挂载文件系统为可写模式:mount o remount,rw /

3、执行passwd命令

4、如果之前系统启用了selinux,必须执行以下命令,否则将无法正常启动系统:touch /.autorelabel。然后执行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启就OK了。

 

 

 

 

-bash-4.1$  出错

/etc/skel新用户配置文件目录,用户环境变量

1、文本放到skel 新建用户时先复制到 /home/用户

2、统一初始化用户环境变量

3-bash-4.1$    家目录环境变量丢失 cp /etc/skel/.bash*~/  . 用该用户复制到当前目录退出重新进入

 

 

 

 

定时网站备份加邮件推送

1、在rsync备份服务器配置rsync

2、客户端打包目录tar zcvfh /backup/backup_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /var/www/html /app/logs

打包后执行推送rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

创建文件原md5文件md5sum /backup/backup_$(date +%F).tar.gz >/backup/flag_$(date +%F).log

删除find /backup/ -type f -mtime +7 \(-name "*.log" -o -name "*.tar.gz" \) |xargs rm -f

客户端创建脚本mkdir -p /server/scripts vim bak.sh

3、加入定时任务

脚本内容

IP=$(ifconfig eth1|awk -F "[ :]+" 'NR==2 {print $4}')

Path=/backup

if [ $(date +%w) -eq 0 ]

then

   Time="week_$(date +%F_%w -d "-1day")"

else

   Time=$(date +%F -d "-1day")

fi

mkdir $Path/$IP/ -p

 

cd / &&\

tar zcfh $Path/$IP/backup_$Time.tar.gz var/spool/cron/root etc/rc.local etc/sysconfig/iptables var/www/html app/logs &&\

md5sum $Path/$IP/backup_$Time.tar.gz >$Path/$IP/flag_$Time.log &&\

rsync -az $Path/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password &&\

find /backup/ -type f -mtime +7 \( -name "*.log" -o -name "*.tar.gz" \) |xargs rm –f

服务端创建脚本mkdir -p /server/scripts vim chk_and_del.sh

Path=/backup

if [ $(date +%w) -eq 0 ]

then

   Time="week_$(date +%F_%w -d "-1day")"

else

   Time=$(date +%F -d "-1day")

fi

 

LANG=en

find /backup -type f -name "*${Time}*.log"|xargs md5sum -c >>$Path/${Time}_result.log

mail -s "$Time bak result " 150242163@qq.com <$Path/${Time}_result.log

find /backup/ -type f -mtime +180 ! -name "*week*_6*" |xargs rm -f

邮件服务器vim /etc/mail.rc

set from=test_centos@163.com smtp=smtp.163.com smtp-auth-user=test_centos smtp-auth-password=centos67 smtp-auth=login

test_centos@163.com  whh22971178

 

 

 

fstab自动挂载文件出错

磁盘被手动挂载之后都必须把挂载信息写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘。

vi /etc/fstab  挂载文件如果出错 mount -o remount rw /修正

修改fstab  要确认mount -a  参数defaults包括、rw,suid,dev,exec,auto,nouser,async

 

 

apache错误(.htaccess pcfg_openfile)访问403异常

查看配置文件均无问题,而在error.log文件中,给出了类似这么几行提示

[Tue Oct 26 12:42:58 2010] [crit] [client 8.8.8.8] (13)Permission denied: /cicro/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

[Tue Oct 26 12:42:59 2010] [crit] [client 8.8.8.8] (13)Permission denied: /cicro/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

[Tue Oct 26 12:42:59 2010] [crit] [client 8.8.8.8] (13)Permission denied: /cicro/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable

刚开始认为是/cicro/.htaccess 文件权限导致的,结果发现根本无此文件,接着创建了一个/cicro/.htaccess文件,错误仍然继续, 经过分析,不是缺少这个文件导致的错误,因为没有此文件,是不会影响web访问的。

经过仔细分析,发现了问题的根源,如果日志提示是其它目录的.htaccess不可读取,一般是因为上级目录的权限或者属主用户组错误。目录的正确权限应该为755,不过权限不是apacheroot目录,而是存放程序文件的主目录,由此将问题定位到了/cicro这个目录上,查看cicro目录的权限,发现了问题的实质!

drw-rw-rw   9 root root  4096 10-26 13:03 cicro

这个权限真是有意思,不知道是误操作还是别人在练习命令,改回755应该就好了。

chmod -R 755 /cicro

其实linuxroot创建的目录,默认权限都是755,可能忽略了这个

 

 

数据备份未在业务低峰期操作导致服务无法访问

对数据库等大文件备份时要对备份速度做限制,避免影响正常业务

 

软件升级

生产环境任何软件上线流程,先从测试环境升级-idc测试环境-idc正式环境

遵循软件上线流程,测试环境先实验

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

六、centos6.7安全防护

 

 

隐藏内核版本号

系统内核版本

/etc/issue   

/etc/issue.net  两个文件

 

 

 

远程连接限制

通过ssh服务限制连接服务器的ip地址,设置成只监听内网ip地址

/etc/ssh/sshd_config

#ListenAddress 0.0.0.0

 

 

 

ssh篡改入侵

防止ssh登录入侵

用密匙登录,不用密码登录

单管理机vpn登录,内网ip管理服务器

防火墙封闭ssh,指定源地址限制,放通局域网和管理

开启ssh只监听内网ip

不给服务器外网ip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

七、centos6.7优化

 

 

SElinux 关闭安全防火墙

修改配置文件/etc/selinux/config

改成disabled 重启之后生效 

getenforce 查看状态

setenforce 0 关闭服务 ,临时生效

sed -i 's/SELInux=enforcing/SELINUX=disabled/' /etc/selinux/config   

grep SELINUX=disabled /etc/selinux/config

setenforce 0

getenforce

 

 

 

关闭iptables防火墙

系统内核版本

/etc/init.d/iptables stop    关闭服务执行两次

/etc/init.d/iptables stop

chkconfig iptables off 永久关闭

 

 

 

精简开机启动服务

只保留必要系统服务

chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash

export LANG= en_US.UTF-8

chkconfig --list

 

 

 

 

提权普通用户可以sudo

xzwj用户加入sudo

useradd xzwj

\cp /etc/sudoers /etc/sudoers.ori

echo "xzwj ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers

tail -l /etc/sudoers

visudo -c

 

 

字符集调整防止乱码

xzwj用户加入sudo

cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori

echo 'LANG="en_US.UTF-8"' >/etc/sysconfig/i18n  

source /etc/sysconfig/i18n

echo $LANG

 

 

 

 

 

时间同步

增加阿里云时间同步服务器到定时任务

echo '#time sync by xzwj at 20181113 ' >> /var/spool/cron/root

echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >> /var/spool/cron/root

echo '*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com &>/dev/null' >> /var/spool/cron/root

crontab -l

 

 

 

命令行安全优化连接超时历史记录

优化文件/etc/profile

TMOUT=300

HISTSIZE=5

HISTFILESIZE=5

./etc/profile

 

 

增加文件描述符

进程打开文件数目

echo '*        - nofile 65535'>>/etc/security/limits.conf

tail -1  /etc/security/limits.conf

 

 

 

内核优化  tcp参数优化配置

/etc/sysctl.conf  修改配置配置   /sbin/sysctl –p执行生效

Squid服务器优化

vim /etc/sysctl.conf

net.ipv4.tcp_syncookies=1

net.ipv4.tcp_tw_reuse=1

net.ipv4.tcp_tw_recycle=1

net.ipv4.tcp_fin_timeout=30

net.ipv4.tcp_keepalive_time=1200

net.ipv4.ip_local_port_range=1024 65000

net.ipv4.tcp_max_syn_backlog=8192

net.ipv4.tcp_max_tw_buckets=5000

net.ipv4.tcp_syncookies=1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookie来处理,可防范少量的SYN攻击。默认为0,表示关闭。

net.ipv4.tcp_tw_reuse=1 表示开启重用。允许将TIME-WAIT套接字重新用于新的TCP连接。默认为0,表示关闭。

net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT套接字的快速回收。默认为0,表示关闭。

net.ipv4.tcp_fin_timeout=30 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_keepalive_time=1200 表示当keepalive启用时,TCP发送keepalive消息的频度。默认是2小时,这里改为20分钟。

net.ipv4.ip_local_port_range=1024 65000 表示向外连接的端口范围。默认值很小:3276861000,改为102465000

net.ipv4.tcp_max_syn_backlog=8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets=5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数 字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000

 

ApacheNginx服务器优化

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1024 65000

 

 

邮件服务器优化

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 5000 65000

kernel.shmmax = 134217728

 

 

 

安装常用软件工具

联网后yum 安装

yum install tree lrzsz telnet nmap lsof rsync update upgrade  nfs-utils rpcbind nc -y 

修改 /etc/yum.conf  keepcache=1可缓存安装包到

/var/cache/yum/$basearch/$releasever   复制出来建立自己的软件包

 

 

 

hosts文件统一优化

所有服务器所有hosts统一配置

scp -P52113 hosts oldgirl

cat>>/etc/hosts<<EOF

127.0.0.1   localhost nfs01 localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.16.1.5 lb01

172.16.1.6 lb02

172.16.1.7 web02

172.16.1.8 web01

172.16.1.51 db01 db01.etiantian.org

172.16.1.31 nfs01

172.16.1.41 backup

172.16.1.61 m01

EOF

 

 

 

 

 

八、centos6.7习题

 

 

根据端口查询对应服务

lsof 或者netstat

1lsof -i tcp:52113

2netstat -lntup |grep 52113

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

(2)如果ID没有那么把IDcontent写入文件result.txt中。

分析:误区,此题看似简单,其实并不容易,好多学生,在文件没有比对完 就做实际判断并操作,得到的结果是不对的。此题能够自己不去g,可以清晰的完成下来,在写脚本,编程方面基本就过关了

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

01 ydds

02 jeacen

03 kuqi

04 maidong

05 yazhe

06 maliao

07 xiaofan

 

2、使用编写好的ett.sh脚本实施测试

[root@oldboy ~]# sh ett.sh 03 'linux' IDlist.txt

[root@oldboy ~]# mysql -S /data/3306/mysql.sock -e "select * from oldboy.oldboy "

+------+---------+

| id   | content |

+------+---------+

|    3 | linux   |

+------+---------+

[root@oldboy ~]# sh ett.sh 06 'oldboy' IDlist.txt

[root@oldboy ~]# mysql -S /data/3306/mysql.sock -e "select * from oldboy.oldboy "

+------+---------+

| id   | content |

+------+---------+

|    6 | oldboy |

+------+---------+

[root@oldboy ~]# sh ett.sh 08 'oldboy' IDlist.txt

[root@oldboy ~]# cat result.txt

08 oldboy IDlist.txt

提示:我的上文测试的mysql没有密码。

 

3、实际脚本内容

[root@oldboy ~]# cat ett.sh

#!/bin/sh

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

# Purpose: script

# USER          YYYY-MM-DD – ACTION

# Oldboy        2011-01-07 – Created

# QQ:49000448   老男孩       mail:49000448@qq.com

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

status=0

IdArray=($(cat $3|awk '{print $1}'))

for ((i=0; i<`echo ${#IdArray[*]}`; i++))

do

 if [ $1 -eq ${IdArray[$i]} ] ;then

         mysql -S /data/3306/mysql.sock -e "DROP DATABASE IF EXISTS oldboy;"

         mysql -S /data/3306/mysql.sock -e "create database oldboy;create table oldboy.oldboy(id int,content varchar(100))"

         mysql -S /data/3306/mysql.sock -e "insert into oldboy.oldboy values($1,'$2')"

        let status+=99;

         exit

 fi

done

 

if [ $status -ne 99 ];then

 echo "$1 $2 $3" >./result.txt

fi

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

 

 

编写一个程序,接收两个参数IDcontent

(1)如果这ID在文件IDlist.txt中有,那么在数据库中插入一条记录。

1、假设IDlist.txt为如下内容

[root@oldboy ~]# cat IDlist.txt

 

 

 

 

544              

traceroute返回星  Windows  tracert 能返回

搭建yum仓库定制rpm