码迷,mamicode.com
首页 > 其他好文 > 详细

马哥教育第二十四至二十六天学习总结

时间:2018-03-18 20:10:53      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:进程管理 计划任务 shell进阶1

马哥教育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、打印等腰三角形

  1. 探测局域网内的主机
    172.18.250-254.X
    能ping通显示并保存至/root/ip.log
    要求并行探测提高效率

马哥教育第二十四至二十六天学习总结

标签:进程管理 计划任务 shell进阶1

原文地址:http://blog.51cto.com/12947626/2088241

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!