linuxforseq
1. linux中for i in $(seq 1 ${eated} ) ——seq 1什么意思
# seq 1 10
1
2
3
4
5
6
7
8
9
10
是从1到10
seq 1 ${eated}是从1到${eated}
$()是返回结果
就是for循环,i从1开始,自增到${eated}
2. 老男孩Linux运维第三关考试题
1. 公司一开发人员申请对服务器 10 天的 oldboy 普通用户权限,如何操作?
答:useradd oldboy
passwd oldboy
usermod -e `date -d "10day" +%F` oldboy
chage -E "2019-04-11" oldboy20
2. 哪个文件中存放当闷明空前系统中用户密码信息?
答:/etc/shadow
3. 在/var/ sync/log 目录中查找更改时间在 5 日以前的文件井删除它们?
答:find /var/sync/log –type f -mtime +5|xargs rm –rf
find /var/sync/log –type f -mtime +5 –exec rm –fr {} \;
rm –rf $( find /var/sync/log –type f -mtime +5)
rm –rf ` find /var/sync/log –type f -mtime +5`
find /var/sync/log –type f -mtime +5 -delete
4. 在 11 月份内,每天早上 6 点到 12 点中,每隔 2 小时执行一次/usr/bin/httpd.sh 怎么实现?
答:crontab -e
00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh >/dev/null 2>&1
5. 有一个文件 nginx.log,请提取时间(HH:MM),文件内容如下:
183.250.220.178|-l[20/jul/2017:10:35:14 +0800]|POST /audiosearch/search
HTTP/1.1|200|54|-lDalvik/1.6.0(linux;U;Android 4,4,4;Konka Android TV 638
Build/KTU84P)|-l-[5.069|5.001,0.005|www.kuyun.com|8771|172.21.19.67:8084,172.21.19.66:8084]
答:awk -F'[ /]' 'NR==1{print $3}' /oldboy/oldfeng.txt
sed -nr 's#.*jul\/(.*) \+.*#\1#gp' /oldboy/oldfeng.txt
6. 把/dev/sdb1(xfs)分区挂载至/mnt/data 目录,并实现每次开机自动挂载?
答:mount /dev/sdb1 /mnt/data
/etc/fstab
/dev/sdb1 /mnt/data xfs defaults 0 0
7. 查找 file.log 文件中的包含关键字“hello world”的内容,及其上下两行的内容重定向保 存到 1.txt。请写出命令?
答:grep –C2 ‘hello word’ file.log >>1.txt
grep -A1 -B1 ‘hello word’ file.log >>1.txt
8. 用命令 ll -a 显示出文件的描述如下所示,由此可知文件的类型是什么?删除是否会丢失 文件本身的内容?(不考虑业务关联)
lrwxrwxrwx 1 root root 24 Aug 20 09:45 webroot -> /application/nginx/html/
答:软链接 不会
9. 某文件的组外成员的权限为只读,所有者有全部权限,组内的权限为读与写,则该文件 的权限用数字表示为什么?
答:rwxrw-r-- 764
10. 6 块 300g 的硬盘做 Raid5,新的设备总容量有多大?
答:1500G
11. 如何实现创建一个普通用户 user1,让它拥有和 root 一样的权限?
答:useradd user1
visudo 100g
user1 ALL=(ALL) 蚂瞎 ALL
不要密码 NOPASSWD:ALL
12. 如何将/data/logs 目录的权限赋给 web 用户和 users 组?
答:chown web.users /data/logs
13. 某槐蔽个服务器有 a.sh 脚本,用户权限为 644,需要执行什么命令,才可以执行./a.sh 命令
答:chmod a+x a.sh
14. 为了能在一个目录创建文件,必须具备哪些条件?
答:目录可写可执行
15. 假设你是系统管理员,现在在实际生产环境中需要增加一个新的用户账号 zheng,为新 用户设置初始密码,并删除用户账号 chang,请给出命令?
答:useradd zheng
passwd zheng
userdel chang
16. 如何查看当前登录用户,并知道自己的使用的账户名?
答:whoami
17. 请写出你所知道的文件系统类型(4 种以上)?
答:ext2(C5) ext3(C6) ext4(C6) xfs(C7) ntfs fat32
18. 批量创建 10 个以 oldboy 开头后缀 1-10 的用户并给他们设置密码为 123456?
答:for ((i=1;i<=10;i++));do useradd oldmonkey$i;echo '123456'|passwd --stdin oldmonkey$i;done
seq 10|sed -r 's#(.*)#useradd oldgirl\1;echo '123456'|passwd --stdin oldgirl\1#g'|bash
19. /var/www/html/是网站的发布目录,如何每天凌晨 0 点 30 对其进行自动备份,每次备份成按日期时间生成不同的备份包,写出操作步骤。
答:30 00 * * * /bin/tar zcf /opt/$(date +\%F+\%T).tar.gz /var/www/html/ &>/dev/null
20. 给磁盘分 6 个分区,请给出主分区、扩展分区、逻辑分区的组合分区方案。
答:3 主+1+3 个逻辑
2 主+1+4 逻辑
1 主+1+5 逻辑
[笔试考试试题理论部分]
1. 简述 raid0、raid1、raid5、raid10 的特点及应用场景?
答:0 数据不重要,对性能有要求
1 数据重要,性能要求不高
5 普通场景都在应用
10 高并发场景,数据性能都重要
2. 简述磁盘分区分区方式有哪些,他们的主要区别是什么?
答:fdisk
parted
由于分区表类型的不同,fdisk 只支持 2T 以内磁盘分区,且主分区最多可分 4 个
parted 因为支持 gpt 类型分区表因此,可支持 2T 以上磁盘分区
3. Linux 现连接一个新的存储(/dev/sdf,容量 2T)一个应用程序需要在/data 目录存储的 500G 的存储空间,需要哪些步骤,请描述。
答:第一步: fdisk /dev/sdf 进行分区
n p 默认 500G
w 保存
第二步: mkfs –t ext2 /dev/sdf1
第三步挂载: mount /dev/sdf1 /data
第四步: 永久挂载
4. 什么是 MBR?MBR 位于什么地方?占多少字节?
答:系统引导 0 磁头 0 磁道 1 扇区 前 446 字节
5. 简述 Linux 系统中磁盘分区时主分区、逻辑分区和扩展分区之间的关系?
答:分区时至少需 1 个主分区最多 4 个主分区
当分完主分区后,剩下的都为扩展分区
扩展分区只能有一个,不可以直接使用
需创建逻辑分区,即逻辑分区是在扩展分区基础上创建的
3. Linux脚本:for循环 {1..100}和$(seq 1 100)两种列表模式,什么区别
{x..y[..i]} 这种形式是bash内部的一种表达式,会生成一个空格分隔的数字序列字符串
$(cmd) 或 `cmd` 是bash的另一种表达式,表示把cmd的输出作为一个字符串
因此可见, 使用$(seq x y)的方式系统会启动一个新的进程运行cmd命令,相对于{x..y}的方式,速度上会有劣势,同时内存占用也会更多,此外还依赖/bin/seq命令的存在。
4. Linux shell for 循环和双层循环
Shell 脚本一直以来不是很入门,很多时候就是用到再查,发现自己有几个重复用比较高的点,还是记录一下,至少查的时候能少费点功夫~~
(1)列表for循环
Shell支持使用略写的计数方式,如{1..10},表示1到10的整数数字;
Shell还支持安规定的步数进行跳跃的方式实现列表for循环,例如计算1~100之内所有奇数的和。
i 按照2的增量增长,一直到增长到100。即实现100内奇数加和。还可以使用seq命令实现按2递增来计算1..100内的所有奇数之和。 for i in $(seq 1 2 100) ,seq 表示起始值为1,增量为2,结束条件值为100。
for循环除了数字列表,还可以生成字符串行表,如列出当前文件夹下的所有文件:
还可以传递命令行参数
$#表示传递的参数的个数;$@表示参数的列表。
(2) 类C风格的for循环
也称之为计次循环。 切记使用的是双括号。
上面的计算100以内奇数的和可以使用类C的for循环实现
通过for循环实现九九乘法表
5. Linux Shell:Shell循环语句
摘要: Linux , Shell
Shell中常用循环有 for , while
for循环只能用于 固定次数 的循环,因此不能无限循环和用于一些在后台守护进程一直运行的程序,语法语句如下
也可以写成一行,用 ; 分隔
取值列表内元素以空格隔开,如果元素带有空格则用引号包裹起来,例子如下
输出如下,可见循环到最后退出循环,引用变量依旧是最后一个取值列表元素
一行的写法
Shell的for循环也可以采用C语言的写法,注意是 双括号 ,用 分号; 间隔
一个简单例子
while循环语句结合条件测试使用,语法如下
举一个例子
在循环中使用条件测试实现复杂的逻辑,例如
也可以使用&&,||一行完成,省去if,fi
Shell的continue,break语句和Python一样,例子如下
break语句下输出4
continue语句下输出4 6 7 8 9 10
常见结合使用的循环体有 序列 , 数组 , 命令行传参 , 文件目录和文件
序列通过 seq 命令或者 {begin..end..step} 符号进行定义:
结合for循环使用案例
在Shell中使用小括号 () 定义数组,数组遍历使用 [@] 符号,防止元素有空格用双引号包起来,,例子如下
命令行传参遍历使用固定符号 $@ ,如果参数中有空格,用双引号括起来,例子如下
文件遍历使用 ls 命令,可以指定目录,以及通配符匹配
一个双重循环实现,注意 expr表达式中乘号要加转移符
(2)将某目录下大小大于阈值的文件移动到另一个文件
遍历循环一个目录,使用awk语法获得文件大小,将100m以上的文件移动到另一个文件夹
(2)指定开始日期和结束日期完成一个跑批任务
指定一个开始时间和结束时间,while从开始日期一直自增到结束日期循环结束,通过 date -d -01-01 1day' +%Y-%m-%d 自增一天
6. linux for 循环问题!!!
两种方法实现:
脚本:
#!/bin/bash
for i in $(seq 30);
do
if [ $i -lt 10 ] ;then
mkdir '0'$i
cp '0'$i* '0'$i/
else
mkdir $i
cp $i* $i/
fi
done
mkdir 00
cp 00* 00/
#end
C语言:
#include<stdio.h>
int main()
{ char cmd[64];
int i;
for(i=0;i<30;i++){
sprintf(cmd,"mkdir %02d\n",i);
system(cmd);
}
for(i=0;i<30;i++){
sprintf(cmd,"cp %02d* %02d/\n",i);
system(cmd);
}
return 0;
}
7. linux shell脚本下使用for循环 输出等边三角形 过任务的 求大神指点
#!/bin/bash
read -p "please input the longs:" long
for((i=1;i<=$long;i++))
do
for((j=$long;j>i;j--))
do
echo -n " "
done
for m in `seq 1 $i`
do
echo -n "+"
done
for((n=1;n<i;n++))
do
echo -n "+"
done
echo ""
done
long为你自己输入的边长,如果有规定长度,把$long改成数就行