1、现在有一个文件file1,写一条shell来查询出文件中空行的行号
grep -n ^$ filename
2、输出文件file2中以test为结尾的行内容
grep -n test$ filename
3、lampp的日志在/opt/lampp/logs,写一个shell脚本实现功能,当access_log的大小大于100k的时候讲文件备份并清空原log文件
#!/bin/sh
filename=/javashop/access_log.log
filesize=`ls -l $filename | awk '{print $5}'`
maxsize=$((1024*100))
DATE=$(date +%Y%m%d)
if [ "$filesize" -ge "$maxsize" ]
then
mv $filename /opt/lampp/logs/access_log_his$DATE.log
fi
4、讲3题的脚本增加到,每天6、12、18、24点执行。
#!/bin/sh
filename=/javashop/access_log.log
filesize=`ls -l $filename | awk '{print $5}'`
maxsize=$((1024*100))
while true
do
DATE=$(date +%Y%m%d)
time=`date | awk '{print $5}'`
if [ "$time -eq 06:00:00" ] || [ "$time -eq 12:00:00" ] || [ "$time -eq 18:00:00" ] || [ "$time -eq 24:00:00" ]
if [ "$filesize" -ge "$maxsize" ]
then
mv $filename /opt/lampp/logs/access_log_his$DATE.log
fi
fi
done
5、现在有一个java的配置文件app.properties,使用shell命令将配置文件中的http://www.besttest.cn/ 给替换为 http://127.0.0.1:8000/
sed -i 's/www.besttest.cn/127.0.0.1:8000/g' app.properties
6、使用一条shell命令,kill掉Apache的全部进程
ps -ef|grep apache|grep -v grep|awk '{print $2}'|xargs kill -9
7、写一个shell脚本,执行脚本会复制文件(arg1)到目标地址(arg2)如 ./copy_file.sh access.log/tmp/ 执行后将access.log 给 copy到/tmp 目录下
#!/usr/bash
cp $1 $2
sh tim.sh jb.sh /javashop/T/
8、写一个定时任务,每天0点备份mysql数据库的数据,并使用日期来做文件命名
00 0 * * * ~/dbcopy.sh
#! /bin/bash
mysqldump -cp --user=root --password='123' dbName | gzip > ~/db/dbName-`date +%Y%m%d%H`.sql.gz ;
9、使用shell,统计提供的apache的access.log中每个ip出现的次数,log格式如下
#!/bin/bash
#将28/Jan/2015全天的访问日志放到a.txt文本
cat access.log |sed -rn '/28\/Jan\/2015/p' > a.txt
#统计a.txt里面有多少个ip访问
cat a.txt |awk '{print $1}'|sort |uniq > ipnum.txt
#通过shell统计每个ip访问次数
for i in `cat ipnum.txt`
do
iptj=`cat access.log |grep $i | grep -v 400 |wc -l`
echo "ip地址"$i"在2015-01-28日全天(24小时)累计成功请求"$iptj"次,平均每分钟请求次数为:"$(($iptj/1440)) >> result.txt
done
面试题:
1、使用grep命令,显示server.log 文件中所有包含error的行,并显示行号。
cat server.log |grep -n ‘error’
2、查看一个端口是否被占用的命令是什么?如果被占用,如何查看改端口被哪个进程占用?
netstat -nlpt | grep port
如果有进程就是被占用,然后找到pid, ps -ef|grep pid可以看到哪个进程占用的
3、使用awk使用,打印/etc/hosts 文件中的所有ip地址。
awk '{print $1}' /etc/hosts
4、统计当前路径下,所有.log为后缀的文件个数。
ls |grep *.log|wc -l
5、使用shell命令,将当前目录所有文件中的“www.58.com”替换为“58.com”
sed -i "s/www.58.com/58.com/g " `
www.58.com -rl ./`
浙公网安备 33010602011771号