进程管理,包括计划任务的各种使用方法,一种是一次性任务,周期性任务,
一次性任务用at实现
周期性任务用cron实现(crontab等
这两个任务都依赖于各自的服务,在centos7上对应 了atd这个服务
没有启动,就无法通过at来执行一次性任务的,cron也是要启动才能执行周期任务
如果不启动,设置了任务也是白设,设置开机就启动
在centos6不太一样,runlevel 启动模式
chkconfig atd on 等价于centos7 的systemctl enable atd
命令不太一样
周期性任务可以直接用crontab -e 创建
分钟(0-59) 小时(0-23)一月每日(1-31) 月(1-12)星期(0-6)(0跟7一样) /path/cmd(要执行的命令,最好把路径加上)
每天都两点半执行
** * 2 * * * /path/cmd
(每天2点每分钟执行命令60次)的含义是每的意思*
真正的每天2点执行是
计划任务也可以编辑/etc/crontab文件来实现,格式就是要加用户名
这个格式就是要加用户名,只适合管理员,普通用户打不开,所以一般用crontab -e(适用于所有人)
这个命令存到这个文件里
一定要确保时间是同步的,时间不准执行了,就是不对的
脚本三种常见的逻辑处理方式:
顺序执行,选择执行,循环执行
windows -a 取消 linux -c取消
一个小时点一下自动关机,bat脚本
windows计划任务
if语法
case 语法比较针对离散值,单个值
-c1ping 一次主机 -w2 2秒不返回结果,就认为ping不通(有时侯默认5秒ping不通,)
如果ping通,就是主机1是开机
如果ping不通,就显示主机1是出于维护状态(undergoing maintenance,编辑一个文件放在文件里(把维护的主机名放进去
如果既不是ping通也不是不通
就认为主机1已经当机了(意外当机 unexpectedly down,并且以非0 方式退出(exit1
循环,就是一个脚本重复执行多次,在执行的时候,这样的逻辑关系:
循环次数已经知道了,如(1+2+3。。。。100)
次数未知,但是我知道,什么时候满足什么条件退出,执行多少次也不知道
进入条件,上面时候执行循环,什么时候退出循环
与case对比,变量引用要加$符号,变量名就不用,列表中间空格隔开,列表决定了do几次,列表有几个,将执行多少次循环(列表有4个,就代表执行4次
执行第一次时,变量名对应的第一个字符串,name=wang
什么时候变量匹配到最后一个就结束了
把列表中的元素用空格隔开,分别执行
列表可以手工生成,用空格隔开
但是大部分情况下,不是手工生成的
10-2 ,以3 突进,10-20,以3突进
生成列表也可以用seq,列表不一定空格隔开,回车也行
2 3 10 从2开始到10 以3突进 命令要用反向引号
反向单引号=$(),还支持通配符
¥*是作为整体的,¥@是单个单个的
也支持位置变量
面试题经常问1到+100
用for循环怎么写
有些公司规定空格4个或者8个,或者tab键,但是tab键在不同的环境里距离不一样,所以有些企业就规定空格几个
脚本执行完后su是没有值的,因为时子进程,但是命令的话就要做初始
所以一般习惯就是在脚本里加unset 初始化变量
bash -n 检查语法,但是下面的格式又不好看,所以一般加-
文件的第17行,
多行重定向的方法
把王的口令改成magedu
创建100个用户,并且设置默认口令是passwd,判断是否存在,存在提示创建失败,不存在加命令magedu
这样条理更清晰
用创建用户的成功失败来判断,建议不用中文
按时间排序
arping可以测试网络中是否有跟你一样ip地址的主机
来实现一个网段的扫描
windows netstat -n
扫描地址
ctrl+c停止不了,速度太慢,如何快速执行,并行执行
&后台执行
并行执行
加wait表做完程序,退出,否则后台执行不退出
后台执行不会自动退出,要加一个回车才会取消
并行执行,
第一种把所有的东西放到一个脚本里
如果想要把ping通的主机保存到文件里,重定向到文件
统计每个地址能够访问就追加一个地址,+1,+1 累计能访问的主机有几个
i为0时,i++结果非真
因为i++是先i再+1,++i是先加1,所以刚才脚本要修改下