Linux编程细节2-脚本
2014-06-27 14:11
127 查看
1,linux小功能
1.1,如何创建一个linux回收站
方法1:mkdir /tmp/trash_tmp 建立一个回收站目录 vi /bin/trash 编辑一个文件 mv $@ /tmp/trash_tmp :wq保存退出 alias rm=/bin/trash添加别名 vi /etc/bashrc 在最后一行添加alias rm=/bin/trash chmod 755 /bin/trash chmod 777 /tmp/trash_tmp source /etc/bashrc 启用环境变量 如果要真的删除某个文件的时候用 /bin/rm -i file_name方法2:
建立回收站:
mkdir -p ~/.trash
然后在~/.bashrc中加入:
alias rm=trash alias rl='ls ~/.trash' alias ru=removeundo alias rc=cleartrash removeundo() { mv -i ~/.trash/$@ ./ } trash() { mv -i $@ ~/.trash/ } cleartrash() { read -p "clear sure? [y|n]" confirm [ $confirm == 'y' ] || [ $confirm == 'Y' ] && /bin/rm -rf ~/.trash/* }其中mv -i表示提示是否需要覆盖文件。
其中没有做的是不能讲内容恢复到原来地点,需要记录删除时的这种信息。
方法3:
或者更直接点:
alias rm='mv $@ ~/backup'
1.2 如何删除目录下一周内未访问过的所有的core文件
test -d /data && find /data -atime +7 -name '*core*'|xargs file| awk -F: '/LSB core file/ {system("rm -f "$1)}' > /dev/null 2>&1
1.3 清空/tmp/下的log和error文件
rm -fr /tmp/*log* /tmp/*error* > /dev/null 2>&1
1.4 脚本,每天创建一个目录
#/bin/bash today=`date '+%Y%m%d'` [ ! -d $today ] && mkdir $today用户性crontab中:
crontab -e 59 23 * * 0,1,2,3,4 /data/home/shellge/cwork/makeTodayDir.sh
1.5 fork炸弹
fork炸弹-维基百科以下程序段就是由Jaromil所作的在类UNIX系统的shell环境下触发fork炸弹的shell脚本代码,总共只用了13个字符(包括空格):
:(){ :|:& };:注释如下:
:() # 定义函数,函数名为":",即每当输入":"时就会自动调用{}内代码 { # ":"函数开始标识 : # 用递归方式调用":"函数本身 | # 并用管道(pipe)将其输出引至...(因为有一个管道操作符,因此会生成一个新的进程) : # 另一次递归调用的":"函数 # 综上,":|:"表示的即是每次调用函数":"的时候就会生成两份拷贝 & # 调用间脱钩,以使最初的":"函数被杀死后为其所调用的两个":"函数还能继续执行 } # ":"函数结束标识 ; # ":"函数定义结束后将要进行的操作... : # 调用":"函数,"引爆"fork炸弹其中函数名“:”只是简化的一例,实际实现时可以随意设定,一个较易理解(将函数名替换为“forkbomb”)的版本如下:
forkbomb(){ forkbomb|forkbomb & } ; forkbomb解决:可以修改配置文件/etc/security/limits.conf来限制可生成的最大进程数来避开这枚炸弹。
1.6 如何实现并行脚本
我们可以用ping命令编写脚本来查询一组IP地址,检查他们是否属于活动状态。顺序式程序
#!bin/bash # Filename:ping.sh for ip in 192.168.0.{1..255}; do ping $ip -c 2 &> /dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi done其中-c表示将发送echo的分组数量限制为2.由于这是顺序式程序,所以很慢。
并行式程序
#!bin/bash # Filename:ping.sh for ip in 192.168.0.{1..255}; do ( ping $ip -c 2 &> /dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi )& done wait并行的方法是将循环体放入( )&中。( )中的命令作为子shell来运行,而&会将其置入后台。这样for循环中执行了多个后台进程,要想等到所有的子进程结束之后再终止脚本,就要使用wait命令。将wait放在脚本最后,它就会一直等到所有的子脚本进程全部结束。
相关文章推荐
- Linux下Shell脚本编程简介
- Linux Bash Shell学习(七):shell编程基础——运行Shell脚本、function
- linux之脚本编程基础一
- Linux脚本(shell)编程(一) 简单入门HelloWorld
- linux脚本编程教程
- Linux下Shell脚本编程简介
- Linux脚本(shell)编程(六) 循环
- linux脚本编程
- shell脚本编程:Linux的自动化逻辑卷创建脚本
- Linux脚本(shell)编程(三) 文件操作
- linux脚本(shell)编程
- Linux脚本(shell)编程(二) 基本语法
- Linux脚本(shell)编程(一) 简单入门HelloWorld
- LINUX运营维护和脚本编程的问题分析与解答
- Linux脚本(shell)编程(六) 循环
- linux的shell脚本编程
- linux脚本(shell)编程
- Linux脚本(shell)编程(四) 判断条件
- linux运维初级班shell脚本编程测试及参考答案
- Linux脚本(shell)编程(四) 判断条件