码迷,mamicode.com
首页 > 其他好文 > 详细

每日一题20180326

时间:2018-03-26 22:32:17      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:cpu   文件属性   脚本   root   hello   数据   file   查找文件   之间   

一、问题

1.1 统计脚本执行时间

如何统计脚本执行的时间?

1.2 让rm命令失效

要求用命令rm删除文件时提示如下禁止使用rm的提示,并使该效果永久生效。

[root@oldboy oldboy]# rm -f passwd
Do not use rm command.

1.3 删除文件

删除/tmp/oldboy/下除passwd以外的其他文件。

1.4 打印

请打印/etc/passwd文件中的第2-5行

1.5 调换列

调换passwd文件里root位置和/bin/bash位置?即将所有的第一列和最后一列位置调换?

例:

默认:root:x:0:0:root:/root:/bin/bash
修改后:/bin/bash:x:0:0:root:/root:root

1.6 替换

把/tmp/oldboy目录及其子目录下所有以扩展名.txt结尾的文件中包含oldgirl的字符串全部替换为oldboy。

1.7 查找

查找/tmp/oldboy下所有7天以前以log结尾的大于1M的文件移动/tmp下

二、答案

2.1

技术分享图片

# 说明
# real指命令从开始到结束的时间
# user指用于执行进程所花费的时间
# sys指在内核中执行系统调用所花费的时间,进程使用CPU的时间

2.2

echo 'alias rm="echo Do not use rm command."' >> /etc/profile
source /etc/profile

思路:通过设置rm别名实现

2.3

准备数据:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
cp /etc/passwd /tmp/oldboy/
touch /tmp/oldboy/tmp{1..5}.txt
touch /tmp/oldboy/tmp{1..5}.log
tree /tmp/oldboy/

技术分享图片

答案:

# 使用xargs
find /tmp/oldboy/ -type f ! -name passwd | xargs rm -f
# 使用find参数
find /tmp/oldboy/ -type f ! -name passwd -exec rm -f {} \;

分析:

-type f 指定只查找文件
-name passwd 指定查找名为passwd,加!表示排除passwd
xargs 多行转1行
rm -f 强制删除

find的-exec参数
{} \;   这是固定写法

2.4

技术分享图片

# awk
awk 'NR>1 && NR<6{print NR, $0}' /etc/passwd
# sed
sed -n '2,5p' /etc/passwd
# head/tail
head -5 /etc/passwd | tail -4

分析:

# awk
NR是awk的内置变量表示行数
# sed
参考 sed速查手册

2.5

awk -F: '{print $7FS$2FS$3FS$4FS$5FS$6FS$1}' /etc/passwd

分析:

FS是awk的内置变量表示列之间的分隔符

2.6

准备数据:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
touch /tmp/oldboy/{1..2}.txt
touch /tmp/oldboy/{1..2}.log
echo 'hello oldgirl' > /tmp/oldboy/1.txt
echo 'hello oldgirl' > /tmp/oldboy/2.txt
echo 'hello oldgirl' > /tmp/oldboy/1.log
echo 'hello oldgirl' > /tmp/oldboy/2.log
find /tmp/oldboy/ -type f | xargs -I {} cat {}

技术分享图片

find /tmp/oldboy/ -type f | xargs sed -i 's/oldgirl/oldboy/g'

技术分享图片

分析:使用sed的替换功能

2.7

模拟环境:

rm -rf /tmp/oldboy
mkdir /tmp/oldboy
dd if=/dev/zero of=/tmp/oldboy/test1.log bs=1k count=1023
dd if=/dev/zero of=/tmp/oldboy/test2.log bs=1k count=1024
dd if=/dev/zero of=/tmp/oldboy/test3.log bs=1k count=1025
dd if=/dev/zero of=/tmp/oldboy/test4.log bs=1k count=1025

touch /tmp/oldboy/test3.log -m -d '20180101'

技术分享图片

答案:

find /tmp/oldboy/ -type f -name '*.log' -size +1M -mtime +7 -exec mv {} /tmp \;

技术分享图片

分析:

# 查看文件的时间
stat test1.log
atime 文件最近访问的时间
mtime 文件的内容最近修改的时间
ctime 文件属性最近修改的时间
当文件的目录被修改或文件的所有者、权限等被修改时ctime也会更新
# 修改文件的时间 mtime
touch test1.log -m -d '20180101'

技术分享图片

三、参考

每日一题20180326

标签:cpu   文件属性   脚本   root   hello   数据   file   查找文件   之间   

原文地址:https://www.cnblogs.com/okokabcd/p/8654145.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!