1,linux小功能
1.1,如何创建一个linux回收站
方法1:mkdir /tmp/trash_tmp 建立一个回收站目录方法2: 建立回收站: mkdir -p ~/.trash 然后在~/.bashrc中加入:
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
alias rm=trash其中mv -i表示提示是否需要覆盖文件。 其中没有做的是不能讲内容恢复到原来地点,需要记录删除时的这种信息。
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/*
}
方法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用户性crontab中:
today=`date '+%Y%m%d'`
[ ! -d $today ] && mkdir $today
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个字符(包括空格):
:(){ :|:& };:注释如下:
:() # 定义函数,函数名为":",即每当输入":"时就会自动调用{}内代码其中函数名“:”只是简化的一例,实际实现时可以随意设定,一个较易理解(将函数名替换为“forkbomb”)的版本如下:
{ # ":"函数开始标识
: # 用递归方式调用":"函数本身
| # 并用管道(pipe)将其输出引至...(因为有一个管道操作符,因此会生成一个新的进程)
: # 另一次递归调用的":"函数
# 综上,":|:"表示的即是每次调用函数":"的时候就会生成两份拷贝
& # 调用间脱钩,以使最初的":"函数被杀死后为其所调用的两个":"函数还能继续执行
} # ":"函数结束标识
; # ":"函数定义结束后将要进行的操作...
: # 调用":"函数,"引爆"fork炸弹
forkbomb(){ forkbomb|forkbomb & } ; forkbomb解决:可以修改配置文件/etc/security/limits.conf来限制可生成的最大进程数来避开这枚炸弹。
1.6 如何实现并行脚本
我们可以用ping命令编写脚本来查询一组IP地址,检查他们是否属于活动状态。顺序式程序#!bin/bash其中-c表示将发送echo的分组数量限制为2.由于这是顺序式程序,所以很慢。并行式程序
# 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
#!bin/bash并行的方法是将循环体放入( )&中。( )中的命令作为子shell来运行,而&会将其置入后台。这样for循环中执行了多个后台进程,要想等到所有的子进程结束之后再终止脚本,就要使用wait命令。将wait放在脚本最后,它就会一直等到所有的子脚本进程全部结束。
# 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