马哥教育M28-24天、
1.使用nmcli创建bond, team ,bridge bond nmcli connection add con-name bond0 type bond ifname bond0 mode active-backup nmcli connection add type bond-slave ifname eth2 master bond0 nmcli conncetion add type bond-slave ifname eth3 master bond0 nmcli connection up bond-slave-eth2 nmcli connection up bond-slave-eth3
cat /proc/net/bonding/bond0 查看bond状态 lsmod |grep bonding
team
nmcli connection add con-name team0 type team ifname team0 config '{"runner":{"name":"activebackup"}}'
nmcli connection add type team-slave ifname eth2 master team0
nmcli connection add type team-slave ifname eth3 master team0
nmcli connection modify team0 ipv4.addresses 8.8.8.9/24
teamdctl team0 state
bridge nmcli connection add type bridge con-name br0-con ifname br0-con ifname ipv4.method manual ipv4.addresses 8.8.8.6/24 nmcli connection add type bridge-slave ifname eth2 master br0-con nmcli connection add type bridge-slave ifname eth3 master br0-con nmcli connection up br0-con brctl show
hostname ping x.x.x.x ping -c1 只ping一个包 ping -w1 错误后仅重试1s ping -s 60000 指定一个包大小 ping -f 思考:在禁Ping情况下,实际是icmp包协议被禁止,但是可以通过tcp协议方式去Ping不会关闭的某些端口如80,443等-- 实用工具:tnsping 工作在windows下(可以测试网络稳定性和丢包率); hping3; nmap(只能实现一次全网所描,不能测试网络稳定性和丢包率)
ftp lftp lftpget http:// ftp://
wget -P 指定下载目录,默认下载到运行程序的当前目录 -O 指定文件名,默认与原文件名一致 --limit-rate=xx(K,M,G) 下载速度 -c 断电续传 -q 静默下载
links --dump 只看文字 --source 看源码
curl
进程管理
root --> cat --> /etc/shadow
ps BSD方式 a 所有用户在所有终端上运行的前台进程 x 当前用户运行的所有进程(包括前台进程和后台daemon) ax 所有用户运行的所有进程 aux 所有用户运行的所有进程,结果中显示用户名 f 显示父子进程关系 -C 用进程名进行过滤
axo 配合
o 自定义输出列
%cpu %mem pid uid gid cmd comm tty(显示终端名,如?,表示daemon后台进程) ruser (命令发起人) euser 命令的真正执行人 state
k 排序或--sort
VSZ:虚拟内存集,线性内存,表示操作系统承诺内存集 RSS:常驻内存集,实际分配内存
UNIX方式 -e 显示所有进程 -f 显示完整格式 -ef -eF 以更完整格式显示所有进程 -efH 显示父子进程关系 -eo 自定义显示结果:ps -eo %cpu,%mem,pid,nice,pri,stat,comm
nice值
-20~19 数字越小,优先级越高
renice -n #(-20~19) pid
nice -n #(-20~19) -# command
查看方式 ps axo nice
pgrep -u UID/USERNAME 基于执行程序的用户名进行搜索 -U 实际发起者 (考虑命名有u+s权限,实际生效者可变) -t 终端名 -P 查看子进程
pidof 进程名 查询对应进程名的PID
uptime top htop(epel)
[epel]
name=centos69 epel
baseurl=http://x.x.x.x/fedora-epel/$releasever/$basearch
gpgcheck=0
马哥教育M28-二十五天、 vmstat r:可运行进程 b:处于不可中断睡眠状态的进程个数
swpd:当前虚拟内存的已使用空间
free :物理内存的剩余空间,直至不够用时,才会使用虚拟内存
buffer/cache:用于缓存的内存总量
si: 表示内存从swap读入的总量
so:表示从内存写出到swap的总量
bi:表示内存从硬盘读入的总量
bo:表示从内存写出到硬盘的总量
in: 每秒中断的速率
cs:进程切换速率
us: 用户空间时间
sy:内核空间,系统空间
id:空闲时间
wa:等待时间
st: 被虚拟机偷走的时间
vmstat -s 详细查看内存信息 vmstat 1 1
iostat
pmap pid (经常用来查看内存泄漏问题,进程单个程序占用内存大小异常或者查看文件描述符数量异常情况)
pmap -x pid
ls -l /proc/pid/fd |wc -l
kill
-0 无作为,可以用来单纯判断进程是否运行 >dev/null;echo $?
-1 -HUP:强制进程重读配置文件(在无需关闭进程前提下实用)
-2 -INT: 终止正在运行的进程,相当于ctrl+c
-3 -QUIT:相当于ctrl+
-9 -KILL :强制正在运行的进程 (exit)
-18 恢复后台睡眠进程
-19 暂停进程到后台睡眠
-15 -TERM:终止正在运行的进程(默认)(先释放资源再停止,可能阻塞信号)
killall 进程名
pkill
-u 用户名 杀死指定用户所运行的所有进程
pkill -t pts/1 杀死指定终端上运行的所有进程
进程的前后台
ctrl+z 将运行在前台的进程暂停,或kill -19 PID
bg 将在当前终端上暂停的进程,放入后继续运行,或kill -18 PID
fg 将在当前终端上暂停的或在当前终端上后台运行的进程,放入前台继续运行
使进程不再依附于终端在后台运行(与终端剥离shell) nohup command &>/dev/null screen; screen -S ; screen -sl ;screen -r (command&);(command&)
*并行运行多条命令: vim all.sh sh1& sh2& sh3&
(sh1&);(sh2&)
{sh1& sh2& sh3&}
马哥M28-第二十六天、
at hh:mm 未来某一时间点运行一次的计划任务 atq 或 at -l 列出指定队列中等待运行的作业 at -c 队列序号 查看指定序号队列的详细信息 atrm 队列序号 或 at -d 队列序号 删除指定序号的队列 echo wall 123 |at 20:00
at 20:00 << EOF
wall hello EOF
at 20:00 -f at.txt
at的任务是否运行依赖于atd服务 centos : service atd start centos : systemctl start atd.service
限制用户不能使用at配置计划任务 当仅/etc/at.deny存在时,写入deny的用户不能配置at 当/etc/at.allow存在时/etc/at deny失效,只有写在allow中的用户才能配置at,当/etc/at.allow和/etc/at.deny都不存在时,仅有root才能配置at
cron /etc/crontab 系统级计划任务 (必须严格区别个人计划任务) 00 07 1,15 * 3 root /root/naozhong.sh 仅能通过root定义,不过可以以普通用户的身份去执行计划任务中的命令。 日志/var/log/crond
特殊的日期表达方式: @reboot Run once after reboot 当下次启动计算机时,启动到crond服务时运行该计划。 @yearly 0 0 1 1 * @annually 0 0 1 1 * @monthly 0 0 1 * * @weekly 0 0 * * 0 @daily 0 0 * * * @hourly 0 * * * *
centos7:单用户启动 1.grub:linux16 最后加上空格rd.break 按ctrl+x 2.mout -o remout,rw /sysroot 3.vim /sysroot/etc/crontab centos6:单用户启动解决循环重启任务 1.grub: kernel 最后空格+1 先ESC加到主界面 再b启动 2.vim /etc/crontab
/etc/crontab 是系统级计划任务的主配置文件 --> /etc/cron.d 是系统计划任务的扩展配置文件目录,其中的所有都应该是按crond的格式编写,每一个文件都会生效 --> /etc/cron.d/0hourly 01 * * * * root run-parts /etc/cron.hourly 又用run-parts命令,扩展到了/etc/cron.hourly目录,其中的所有脚本均会在每小时的01分执行
crontab crontab -e [-u username] crontab -l crontab -r 直接该用户的crontab文件,所以所有计划全删除,如只需删除某条,直接crontab -e 编辑删除该行即可 crontab -i -r 功能同上,在删除前询问
限制用户不能使用crontab配置计划任务 当今当/etc/cron.deny 存在时(默认)写入deny的用户不能配置crontab,当/etc/cron.allow存在时/etc/cron.deny失效,只有写在allow中的用户才能配置crontab,当/etc/cron.allow以及/etc/cron.deny都不存在时,仅有root才能配置crontab
shell脚本编程进阶
判断某字符串是否为整数 num=1322; [[ "$num" =~ ^[0-9]+$ ]] && echo true $score -ge 60 -a $score -lt 80 $score -ge 60 -o $score -lt 80
随机生成16位包含数字、大小写字母、符号的密码 cat /dev/urandom |tr -dc 'a-zA-Z0-9_$@#?.' |head -c 12
练习:写一个×××系统,判断5个数字。
1 5 3 8 9
输入 第一个值。
输入 第二个值。
输入 第三个值。
输入 第四个值。
输入 第五个值。
每一步在输入完,都会判断,如果中了,则有输出结果:
第一次中输出 : First blood
第二次中输出 : Double kill
第三次中输出 :Triple kill
第四次中输出 :Quadra Kill
第五次中输出 :Penta Kill 以及 ACE!
一次也不中输出: Defeat!
1 #!/bin/bash
2 # ------------------------------------------
3 # Filename: lucky_dog
4 # Revision: 1.0
5 # Date: 2018-03-16
6 # Author: Hodge
7 # Email: 123@163.com
8 # ------------------------------------------
9 # Copyright: 2018 Hodge
10 # License: GPL
11
12 cnt=0
13 #标记命中次数
14 for i in `seq 1 5`
15 do
16 echo "第$i次判断"
17 read -p 'please input your num:' num_by_usr
18 num_judge=$[$RANDOM%3]
19 echo " lucky_num is $num_judge"
20 flag=1
21 if [ $num_by_usr -eq $num_judge ]
22 then
23 cnt=$[$cnt+1]
24 flag=0
25 #若命中则下面输出,不命中不输出,防止不命中依然输出
26 fi
27 if [ $flag -eq 0 ]
28 then
29 case "$cnt" in
30 1)echo First blood;;
31 2)echo Double kill;;
32 3)echo Triple kill;;
33 4)echo Quadra kill;;
34 5)echo Penta kill ACE;;
35 esac
36 fi
37 done
38 if [ $cnt -eq 0 ]
39 then
40 echo "defeat"
41 fi
作业:
使用♥,利用for,显示出一个等腰三角形。 1、判断/var/目录下所有文件的类型 2、添加10个用户user1-user10,密码为8位随机字符 3、/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的输出为文件加stop,以S开头的输出为文件名加start,如K34filename stop S66filename start 4、编写脚本,提示输入正整数n的值,计算1+2+…+n的总和 5、计算100以内所有能被3整除的整数之和 6、编写脚本,提示请输入网络地址,如192.168.0.0,判断输入的网段中主机在线状态 7、打印九九乘法表 8、在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html 9、打印等腰三角形
- 探测局域网内的主机 172.18.250-254.X 能ping通显示并保存至/root/ip.log 要求并行探测提高效率
#/bin/bash #/使用 #!/bin/bash #---------------------------------- #Filename: pingbat #Revision: 1.0 #Date: 2018-03-21 #Author: sunxuefeng #Email: 15610366898@163.com #--------------------------------- #Copyright: 2018-03-21 sunxuefeng #License: GPL #--------------------------------- #批量并行ping网段主机的在线状态
function ping_ip(){
rpm -qa | grep sipcalc >>/dev/null
[ $? -ne 0 ] && yum -y install sipcalc
read -p "[请输入要检查的网段及子网,输入示例:192.168.1.0/24]:" ip_mask
echo "${ip_mask}" | grep -E -q "([0-9]{1,3}[.]){3}[0-9]{1,3}/[0-9]+"
if [ $? -eq 0 ];then
for i in $(sipcalc ${ip_mask} | grep Usable|egrep -o "[0-9.]+" | eval echo awk '{a[NR]=$0}END{split(a[1],b,".");split(a[2],c,".");for(i in b){if(b[i]!=c[i]){b[i]="{"b[i]".."c[i]"}"}};print b[1]"."b[2]"."b[3]"."b[4]}'
| tr " " "\n")
do
(
ping -c3 -w2 ${i} >/dev/null
if [ $? -eq 0 ];then
echo "${i} is alive"
else
echo "${i} is not alive"
fi
)&
done
else
clear
echo -e "\033[31m[输入不规范,请重新执行,输入示例:192.168.1.0/24]\033[0m"
fi
} ping_ip