總結之前準備跳槽時練習的linux筆試題,其中有部分為騰訊和阿里巴巴的筆試題,本次分享一部分,後續將全部分享出來。
linux修改IP、gateway、dns、主機名
---修改ip地址---
即時生效:
# ifconfig eth0 192.168.1.155 netmask 255.255.255.0
重啟生效:
修改vi /etc/sysconfig/network-scripts/ifcfg-eth0
#需將BOOTPROTO改為static,即靜態IP
重啟network:service network restart或者/etc/init.d/network restart
---修改default gateway---
即時生效:
# route add default gw 192.168.1.1
重啟生效:
修改vi /etc/sysconfig/network-scripts/ifcfg-eth0
重啟network:service network restart或者/etc/init.d/network restart
---修改dns---
修改vi /etc/resolv.conf
修改後即時生效,重啟同樣有效
---修改host name---
即時生效:
# hostname test1
重啟生效:
修改vi /etc/sysconfig/network
網絡設備開啟與停止
#停用網絡設備
ifconfig eth0 down
#啟用網絡設備
ifconfig eth0 up
使的history命令顯示時間
HITTIMEFORMAT="%T-%m-%d %H:%M:%S"
export HITTIMEFORMAT
#重啟會失效
#可以寫入/etc/profile
修改linux主機的時區
複製相應的時區文件,替換系統時區文件;或者創建鏈接文件。時區文件在/usr/share/zoneinfo/,系統時區文件是/etc/localtime,使用命令:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
或者
rm -f /etc/localtime
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
使用tcpdump監聽主機IP為192.168.1.1,tcp端口為80的數據,同時將結果保存輸出到tcpdump.log,請寫出相應命令
# tcpdump tcp port 80andhost 192.168.46.128 –w/root/sss
用sed修改test.txt的23行test為tset
sed '23s/test/tset/g'
Linux內核的5個子系統
進程調度、內存管理、虛擬文件系統、網絡接口、進程間通信
交換分區與內存大小的關係
在內存小於2G的情況下,交換分區應為內存的2倍,超過2G的話,交換分區為物理內存加上2G
壓縮文件並保存到指定目錄
將當前目錄下的zzz文件打包到根目錄下並命名為zzz.tar.gz
#tar zcvf /zzz.tar.gz ./zzz
1、*.tar 用 tar –xvf 解壓
2、*.gz 用 gzip -d或者gunzip 解壓
3、*.tar.gz和*.tgz 用 tar –xzf 解壓
4、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5、*.tar.bz2用tar –xjf 解壓
6、*.Z 用 uncompress 解壓
7、*.tar.Z 用tar –xZf 解壓
8、*.rar 用 unrar e解壓
9、*.zip 用 unzip 解壓
解壓到指定文件夾
tar -zvxf test.tar.gz tmp/ # tmp/目錄需要先存在
定時任務 crontab
#crontab -e
* * * * *
分 小時 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command
(取值範圍,0表示週日、一般一行對應一個任務)
記住幾個特殊符號的含義:
“*”代表取值範圍內的數字,
“/”代表”每”,
“-”代表從某個數字到某個數字,
“,”分開幾個離散的數字
打開某個端口
vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
將當前目錄下大於1000k的文件移動到tmp文件夾下
find . -size +1000k -exec mv {} tmp/ \;
#方法二:
#!/bin/bash
for file in `ls /root`
do
if [ -f $file ]; then
if [ `ls -l $file|awk '{print $5}'` -gt 10000 ]; then
mv $file /tmp/
fi
fi
done
awk裡if語句的使用
有這麼個文件:
cat word.txt
12334:13510014336
12345:12334555666
12334:12343453453
12099:13598989899
12334:12345454545
12099:12343454544
要變成:
[12099]
12343454544
13598989899
[12334]
12343453453
12345454545
13510014336
[12345]
12334555666
審題:將第一列相同的列對於的第二列的值放在一起
cat word.txt |sort| awk -F : '{if($1!=tmp){tmp=$1;print "["$1"]"}print $2}'
#sort:將第一列值相同的行放在一起;
#第一列不相同則將第一列打出來,並將其對應的第二列的值也在其下方打出來
字符串拼接
$ var1=/usr;var2=/local;var3=$var1$var2;echo $var3
/usr/local
字符串逆序輸出
帶分隔符,如:
cat zifuchuan
a1 b2 c3 d4
awk '{for(i=NF;i>1;i--)printf ("%s ",$i);print $1}' file
# 這是最常用的命令,利用NF的降序輸出,把最後一個域作為第一個輸出,然後自減,最後輸出$1,這裡要注意的地方是printf,不能用print,
#因為print默認的ORS是換行,最後用print $1單獨輸出,既換行,又不會多個空格。
不帶分隔符如:
cat shuzi
12234546778
$ cat shuzi | awk -F "" '{for(i=NF;i>1;i--)printf ("%s",$i);print $1}' #可以發現NF之間的分隔符可以為""
87764543221
##注意:之前想使用以下代碼順便定義輸出的分隔符,發現並沒有什麼卵用。因為:OFS定義的是$1、$2...之間的分隔符
cat shuzi | awk -F "" 'BEGIN{OFS=""}{for(i=NF;i>1;i--)printf ("%s",$i);print $1}'
#如果需要定義每一個NF之間的分隔符,只需要這樣:
$ cat shuzi | awk -F "" 'BEGIN{OFS=":"}{for(i=NF;i>1;i--)printf ("%s:",$i);print $1}'
8:7:7:6:4:5:4:3:2:2:1
grep匹配多個字符
提取含word1或者word2
$ cat word
word1
word3
word2
$ cat word | grep -E "word1|word2"
word1
word2
也可以使用awk實現:
awk '/word1|word2/' word
提取含word1且含word2:
$ cat word
word1 word2
word3
word2
$ cat word |grep word1 | grep word2
word1 word2
lastlog、wtmp、utmp、message
1、有關當前登錄用戶的信息記錄在文件utmp中;======who命令
2、登錄記錄和退出紀錄在文件wtmp中;========w命令
3、最後一次登錄文件可以用lastlog命令察看;
4、messages======從syslog中記錄信息
5、btmp--記錄嘗試登陸但是失敗的用戶
#last命令往回搜索wtmp來顯示自從文件第一次創建以來登錄過的用戶
本次的分享就到這裡,後續我將把我全部的試題總結髮出來,敬請期待~大家可關注本頭條號或者收藏,以免遺忘~如果有問題可以在評論區提出~