(3)xargs 不能操作文件名有空格的文件;
(4)exec参数是一个一个传递的,传递一个参数执行一次命令;xargs一次将参数传给命令,可以使用-n控制参数个数。
(5)exec文件名有空格等特殊字符也能处理;xargs不能处理特殊文件名shell脚本登录服务器,如果想处理特殊文件名需要特殊处理
综上,如果要使用的命令支持一次处理多个文件,并且也知道这些文件里没有带空格的文件,那么使用 xargs比较方便; 否则,就要用 exec了。
01 用shell脚本批量建立Linux用户
实现要求:创建用户student1到student50,指定组为student组!而且每个用户需要设定一个不同的密码!
脚本实现如下:
说明:
Linux下 Passwd有参数--stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.
所以linux下自动改变用户密码的办法就是:Echo 密码 |passwd –stdin 用户名
说明:
echo -n 不换行输出:
$echo -n "123"
$echo "456"
最终输出 123456
而不是
123
456
echo -e 处理特殊字符:\n 换行且光标移至行首
ok,就这么一个简单的脚本,就可以再系统里批量生成账号了。而且密码跟账号的名字一样。
这就是for do done语句用法。
02 编写shell脚本
将/usr/local/test目录下大于100k的文件转移到/tmp目录下:
03 通过apache访问日志access.log 统计IP和每个地址访问的次数辅助卡盟,按访问量列出前10名。
日志格式样例如下:
192.168.1.247 ---【02/jul/2010:23:44:59 + 8080 】 "GET /HTTP/1/1" 200 19
答案:
cat access.log | awk '{print $1}' |sort| uniq -c |sort -rn |head -10(uniq 参数说明:– c 显示输出中,在每行行首加上本行在文件中连续出现的次数。
sort参数说明:sort默认的排序方式是升序,-r 参数就会改变成倒叙;你有没有遇到过10比2小的情况。我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面喽。这也是sort的一贯作风。)
04 一台监控主机,一台被监控主机
被监控主机分区使用率大于80%,就发告警邮件。放到crontab里面shell脚本登录服务器,每10分钟执行一次。
a、 首先两台机器要建立服务器间的信任关系。
b、脚本:
05 监控主机的磁盘空间
当使用空间超过90%就通过发mail来发警告:
06 自动ftp上传
07 编写shell脚本,获取本机的网络地址。
比如:本机的ip地址是:
192.168.100.5/255.255.255.0
那么他的网络地址是:
192.168.100.1/255.255.255.0
IP地址也可这样获取:IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "
子网掩码:NETMASK= `ifconfig eth0 | grep "inet addr"|cut -f 4 -d ":"
08 某系统管理员需要每天做一定的重复工作,编制一个解决方案: