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改成數就行