linux笔记

嘿,你整理的这些Linux脚本笔记挺详细的啊。
上周有个客户问我怎么用case做参数解析,你这份正好可以参考。
不过我看了下,有几个地方可能得稍微调整下,免得新手用的时候踩坑。

关于case语句 你举的苹果香蕉例子写得很清楚。
但有个小细节得注意: bash case$fruitin "apple")echo"这是苹果";; "banana")echo"这是香蕉";; )echo"未知水果";; esac
这里有个小bug,最后一个默认分支前面多了个";"号,会报语法错误。
应该是直接写)开头。
我之前在2 02 2 年给新员工培训时差点被这个坑到。
另外,通配符的例子可以再补充个,比如用.jpg匹配所有jpg文件,这样更形象:
bash case$filenamein .jpg)echo"图片文件";; .txt)echo"文本文件";; )echo"其他类型";; esac
while循环部分 你写的输出1 -5 的例子很标准。
但优化版跳过奇数那个技巧挺好,可以再强调下: bash i=2 while((i<=1 00)) do echo $i ((i+=2 )) done
这比每次判断i%2 ==0要快不少。
不过要注意,如果你用let i+=2 ,变量前面还是得加$,比如let i+=2 是错的,得写成let i+=2 我2 02 3 年在上海某商场帮客户调试脚本时,就因为忘了加$踩了个大坑,差点搞砸服务器的定时任务。

死循环的例子 你写的死循环部分很实用,但有个地方可以更安全点: bash while : do read -p "输入q退出: " input if [[ $input == "q" ]];then break fi echo "你输入了: $input" done
这里用[[ $input == "q" ]]比直接[[$input==q]]更健壮,兼容性更好。
不过有个更稳妥的做法是加个计数器,比如: bash count=0 while : do ((count++)) if ((count>1 00));then echo "防止无限循环,已退出" break fi read -p "输入q退出: " input if [[ $input == "q" ]];then break fi echo "你输入了: $input" done
这样就算用户卡住按了Ctrl+D,也能在1 00次后退出,避免真死循环。

最后说点个人建议 你总结的部分很到位。
其实用case的时候,变量名前加$是个好习惯,虽然(())里可以省略,但写习惯了不容易出错。
比如: bash read -p "输入星期几: " day case $day in "Mon"|"Tue"|"Wed")echo"工作日";; "Thu"|"Fri")echo"快下班了";; "Sat"|"Sun")echo"周末";; esac
这种写法比直接用case day in更规范。
while循环里用(())确实更简洁,但算术运算时用let更直观,比如let i++比((i++))更容易看懂。

反正你看着办吧,这些是我用的时候总结的。
如果还有不清楚的随时问我,我最近刚好在整理运维培训资料,这些例子可以加进去。

linux怎么设置每2个小时自动重启一次,并且这个命令是开机启动

去年夏天,我在公司服务器上遇到了一个小麻烦。
服务器时不时地会卡死,重启是唯一解决办法。
我灵机一动,想到了利用Crontab来定时重启服务器。

那天下午,我坐在办公桌前,打开终端,输入“crontab -uroot -e”,开始编辑root用户的cron任务。
我按照格式,在文件的末尾添加了一行:“0 0 reboot”,意思是每天凌晨0点自动重启服务器。

编辑完保存退出后,我输入“crontab -l”查看了一下,确实看到了刚才添加的任务。
然后我又输入“service crond restart”重启了cron服务。

第二天早上,服务器准时在0点重启了。
从那以后,服务器再也没有卡死过。
但是,我突然想到,如果服务器遇到更复杂的问题,光靠定时重启能解决吗?等等,还有个事,我好像还没设置日志记录,服务器重启时到底发生了什么,还是个谜。

Linux文本处理三剑客:awk(结构化命令)

哎,这Linux下的awk脚本,真的是个神器啊。
记得有一年,我在一个数据分析的项目里,要用awk来处理成千上万的日志文件,那时候真的是深感受益。

那会儿,我就在用awk里的IF条件控制语句。
比如,我要找出所有访问量超过1 000的用户IP,就写了个IF条件,条件是访问量大于1 000。
这样,符合条件的IP就都输出来了。

然后呢,我还用了IF ELSE结构。
因为有些日志文件里没有访问量数据,我就用ELSE部分来处理这种情况,比如输出“未找到访问量数据”。

最复杂的要数IF ELSE IF了。
有一次,我需要根据用户等级来分类输出信息,用户等级分为普通用户、VIP和超级VIP。
我就在IF ELSE IF里写了好几个条件,来区分这三种等级的用户。

至于循环语句,那更是常用。
记得有一次处理日志,要计算每个IP的访问次数,我就用了一个For循环,从第一条记录开始,一直循环到文件末尾,每次循环处理一条记录,计数器加一,最后输出每个IP的访问次数。

还有那个While循环,虽然用得不多,但有一次处理一个特别长的文件,我就用While循环来逐行读取,直到文件末尾。

Break和Continue嘛,我通常是在处理大量数据时,遇到一些特殊条件需要跳出或跳过循环的时候用。
Exit则是在脚本出错或者完成特定任务后,用来结束整个程序的。

这块,我觉得awk真的是简化了文本处理的复杂性,让我这种脚本小白也能写出不错的脚本。
不过呢,说到底,这还是得自己多写多练,踩过不少坑才慢慢熟练起来的。