Linux命令随笔
--------------------------------------------------------------------
注:如果你對python感興趣,我這有個學習Python基地,里面有很多學習資料,感興趣的+Q群:895817687
--------------------------------------------------------------------1 Linux命令總結2 3 man ==命令幫助;4 help ==命令的幫助(bash的內置命令);5 ls ==list,查看目錄列表;6 -ld:查看目錄權限;7 -l:(long)長格式顯示屬性;8 -F:給不同的文件類型結尾加標識9 -p:給目錄加斜線10 -r:(reverse)反轉排序11 -t:按時間排序12 --color=auto 給輸出的不同類型文件加不同顏色13 -a:顯示隱藏文件14 ls -l --time-style=long-iso,顯示友好的長格式時間15 例子:16 [root@server oldboy]# ls -l --time-style=long-iso17 總用量 418 drwxr-xr-x 2 root root 4096 2015-12-18 20:25 oldboydir19 lrwxrwxrwx 1 root root 9 2015-12-18 21:03 oldboydir_soft_link -> oldboydir20 21 mkdir ==創建目錄22 -p:遞歸創建目錄23 vim ==相當于復雜的文檔編輯器24 =====================================================================================================================================================================================================25 echo "i am studying linux" >/>> oldboy.txt //后面跟一個大于號表示覆蓋,兩個大于號表示追加;26 echo ==打印輸出內容,配合“>”或“<<”可以為文件覆蓋及追加內容;27 -n:不換行輸出28 -e:解析轉義字符,\t tab \n回車 \b退格29 30 echo“31 boy32 girl33 ” >oldboy.txt34 實例如下:(2015/12/22)35 [test@server ~]$ echo "oldboy";echo "oldboy" 36 oldboy37 oldboy38 [test@server ~]$ 39 40 [test@server ~]$ echo -n "oldboy";echo "oldboy" //不換行輸出41 oldboyoldboy42 [test@server ~]$ 43 44 [test@server ~]$ echo -e "oldboy\toldgirl"45 oldboy oldgirl46 [test@server ~]$ 47 48 [test@server ~]$ echo -e "oldboy\noldgirl"49 oldboy50 oldgirl51 [test@server ~]$ 52 ====================================================================53 cat ==查看文件內容;54 -n:顯示行號55 特殊用法:增加多行內容56 [root@server data]# cat >/data/oldboy.txt<<EOF57 I am studying linux.58 EOF59 cp ==copy 相當于拷貝命令;例如:cp old.txt /tmp/60 cp -a/-r /etc/ /tmp 拷貝目錄/etc/到/tmp61 -a:相當于-pdr62 -r:遞歸,用于復制目錄;63 -p:保持屬性;64 cp='cp -i' -i:表示提示確認信息參數65 例:從當前目錄文件到另外目錄時,如果拷貝文件名相同,可使用/bin/、"\"取消是否覆蓋信息;66 [root@server /]# cp /mnt/test.txt /tmp67 cp: overwrite `/tmp/test.txt'? 68 [root@server /]# /bin/cp /mnt/test.txt /tmp //前面加/bin/可以取消是否覆蓋的提示信息;69 [root@server /]# \cp /mnt/test.txt /tmp/ //前面加"/"可以取消是否覆蓋的提示信息;70 mv ==移動目錄或文件,例如:mv /data /root71 pwd ==查看當前用戶所在目錄;72 73 rm ==remove 刪除文件或者目錄 -f強制,-r刪除目錄;74 生產場景盡量不要使用rm,如果非要用,一定要先cp等備份。75 76 替代方法:77 mv移動到一個臨時目錄,相當于回收站;78 find刪除79 find *****刪除80 find /root/data -type f -exec rm -f {} \; // -exec表示查找81 find /root/data -type f|xargs rm -f 82 find 查找-type !表示取反的意思;83 !:取反84 -a:表示and85 -o:(or)表示或者86 -maxdepth +數字:表示查找的深度87 -mtime:表示修改時間88 例:89 find /oldboy -maxdepth 1 -type d ! -name "oldboy" (其中-maxdepth跟tree -L 1可以這樣理解)90 91 例:在-type f前面加"!",表示執行命令時不查找以文件為結尾的文件;92 [root@server ~]# find /root/data/ ! -type f -name "*.txt"|xargs ls -ld93 94 使用find刪除例子1:95 [root@server data]# find /root/data/ -type f96 /root/data/zhurui.txt97 /root/data/zhurui2.txt98 /root/data/zhurui1.txt99 [root@server data]# find /root/data/ -type f -exec rm -f {} \;100 [root@server data]# ls101 [root@server data]# 102 103 使用find刪除例子2:104 [root@server data]# touch zhurui.txt zhurui1.txt zhurui2.txt105 [root@server data]# ls106 zhurui1.txt zhurui2.txt zhurui.txt107 [root@server data]# find /root/data/ -type f108 /root/data/zhurui.txt109 /root/data/zhurui2.txt110 /root/data/zhurui1.txt111 [root@server data]# find /root/data/ -type f|xargs rm -f112 [root@server data]# ls113 [root@server data]# 114 115 116 find刪除保留一個特定文件,其余都刪掉;117 [root@server data]# touch zhurui.txt zhurui1.txt zhurui2.txt zhurui3.txt zhurui4.txt118 [root@server data]# ls119 zhurui1.txt zhurui2.txt zhurui3.txt zhurui4.txt zhurui.txt120 [root@server data]# find /root/data/ -name "zhurui4.txt"121 /root/data/zhurui4.txt122 [root@server data]# find /root/data/ -type f -name "zhurui4.txt"123 /root/data/zhurui4.txt124 [root@server data]# find /root/data/ -type f ! -name "zhurui4.txt"|xargs rm -f125 [root@server data]# ls126 zhurui4.txt127 [root@server data]#128 129 head ==頭部,取文件的前N行,默認前10行,取前三行 -n 3130 簡寫就是-3131 例:132 [root@server data]# head -n 2 test.txt 133 test134 liyao135 tail ==尾巴,取文件的最后N行,默認最后10行,取最后三行 -n 3136 簡寫就是-3137 138 -f:跟蹤結尾139 例:140 tail -f /var/log/messages //跟蹤一個文件結尾的變化141 142 舉例:打印20-30的數字143 [root@server ~]# seq 100 >test1.txt //將1-100數字在test1.txt文件中列舉出來144 [root@server ~]# head -30 test1.txt //取文件的前30行145 [root@server ~]# head -30 test1.txt | tail -11 //首先取列舉出的數字前30行,接著取最后11行;146 20147 21148 22149 23150 24151 25152 26153 27154 28155 29156 30157 158 第二種方法:159 [root@server ~]# sed -n '20,30p' test.txt 160 20161 21162 22163 23164 24165 25166 26167 27168 28169 29170 30171 172 (1)awk 一門語言,過濾內容(取列)173 awk '{print $1}' 文件 //$1表示第一列,$2表示第二列....$NF(表示最后一列)174 awk -F "分隔符號" '{print $1}' 文件 //$1表示第一列,$2表示第二列175 $1表示第一列,$2表示第二列....$NF(表示最后一列)..$(NF-1)表示倒數第二列176 $0表示整行177 -F:awk多分隔符178 深入淺出三劍客之awk必殺技一例:http://oldboy.blog.51cto.com/2561410/950730179 深入淺出linux三劍客之sed必殺技一例:http://oldboy.blog.51cto.com/2561410/949365180 181 linux三劍客 老大182 例:183 [root@server test]# awk -F ":" '{print $1}' /etc/passwd184 [root@server test]# awk -F ":" '{print $2}' /etc/passwd185 [root@server test]# awk -F ":" '{print $1"="$2"="$3}' /etc/passwd186 [root@server test]# awk -F ":" '{print $(NF-1)}' /etc/passwd //表示篩選倒數第二列187 188 [root@server test]# awk '{if(NR<31 && NR>19) printf $1"\n"}' /root/test1.txt //"\n"表示回車 NR:代表行號 &&:代表and189 20190 21191 22192 23193 24194 25195 26196 27197 28198 29199 30200 201 [root@server test]# awk '{if(NR>19 && NR<31) printf $1"\n"}' /root/test1.txt 202 20203 21204 22205 23206 24207 25208 26209 27210 28211 29212 30213 214 例:215 [root@server ~]# echo "I am oldboy,myqq is 24731701">> oldboy.txt216 [root@server ~]# cat oldboy.txt217 I am oldboy,myqq is 24731701218 [root@server ~]# awk -F "[, ]" '{print $3" "$6}' oldboy.txt //光取第3跟第6列219 oldboy 24731701220 221 實例取IP地址:(2015/12/22號添加)222 [root@server test]# ifconfig eth0|awk -F '[: ]+' 'NR==2 {print $4 }' //[方框中的內容為目標前后分隔符]223 192.168.1.11224 [root@server test]#225 ==============================================================================================================226 227 228 229 (2)grep ***** ==擅長過濾,過濾器,把想要的或者不想要的分離開。盡量使用雙引號("");230 -v:表示排除231 -o:只匹配你想要的結果,必備參數232 -i:表示不區分大小寫;233 -E:<====> grep -E=egrep234 -n:打印行號235 --color=auto 給匹配到的字符串加顏色(不是正行)236 -a: 在二進制文件中,以文本文件的方式搜索數據;237 -c: 計算找到‘搜索字符串’的次數238 提示:-i -v為常用參數239 -A: After的意思,顯示匹配字符串及其后n行的數據240 -B: before的意思,顯示匹配字符串及其前n行的數據241 -C: 顯示匹配字符串及其前后各num行242 例1:243 [root@server zhu]# grep 3306 /etc/services 244 mysql 3306/tcp # MySQL245 mysql 3306/udp # MySQL246 [root@server zhu]# grep --color=auto 3306 /etc/services 247 mysql 3306/tcp # MySQL248 mysql 3306/udp # MySQL249 linux三劍客 老三250 251 252 參數介紹:253 -B:除了顯示匹配的一行之外,并顯示改行之前的num行254 例:255 [root@server ~]# grep 30 -B 10 test.txt 256 20257 21258 22259 23260 24261 25262 26263 27264 28265 29266 30267 -A:除了顯示匹配的一行之外,并顯示該行之后的num行268 例2:269 [root@server ~]# grep 20 -A 10 test.txt 270 20271 21272 22273 23274 24275 25276 26277 27278 28279 29280 30281 282 -C:除了顯示匹配的一行之外,并顯示改行之前后各num行283 例:284 [root@server ~]# grep 25 -C 5 test.txt 285 20286 21287 22288 23289 24290 25291 26292 27293 28294 29295 30296 grep "string" -B 10 297 298 例:文件如下,過濾文件中的空行299 [root@server ~]# cat oldboy.txt 300 oldboy301 302 oldooboy303 304 oldboooytxt305 方法1:306 [root@server ~]# grep -v "^$" oldboy.txt //這種方法最佳307 oldboy308 oldooboy309 oldboooytxt310 [root@server ~]# 311 312 方法2:313 [root@server ~]# grep "." oldboy.txt 314 oldboy315 oldooboy316 oldboooytxt317 [root@server ~]#318 方法3:319 [root@server ~]# sed '/^$/d' oldboy.txt 320 oldboy321 oldooboy322 oldboooytxt323 [root@server ~]#324 方法4:325 [root@server ~]# awk '/^[^$]/' oldboy.txt 326 oldboy327 oldooboy328 oldboooytxt329 [root@server ~]# 330 ==================================================================================================================331 332 333 (3)sed *****(strem editor) ==擅長取行、查找替換334 sed -n 335 過濾:sed -n '/過濾的內容/處理的命令' 文件336 -n:取消sed的默認輸出337 -i:改變文件內容338 “=”:等號表示行號339 處理的命令:p print打印,d delete刪除340 341 sed -n '20,30p' test.txt342 linux三劍客 老二 343 例1:344 [root@server data]# cat test.txt 345 test346 liyao347 oldboy348 [root@server data]# sed -n '/oldboy/p' test.txt ==>等價于grep "oldboy" test.txt349 oldboy350 [root@server data]# sed '/oldboy/d' test.txt ==>等價于 head -2 test.txt ==>等價于grep -v "oldboy" test.txt351 test352 liyao353 [root@server data]# 354 sed替換:*****355 例子2:356 [root@server ~]# sed -i 's#zhurui#oldboy#g' test.txt 357 s常說的查找并替換,用一個字符串換成另外一個358 g(global)與s聯合使用時,表示對當前行全局匹配替換(與下一個g意義不同)359 -i:修改文件內容360 "#"是分隔符,可以用/@=等替換;361 362 sed -r 's#(.*)#\1#g' +文件(oldboy.txt) //(.*)表示括號里的內容可以通過\1可以取出來;363 實例如下:364 [root@server ~]# echo "oldboy oldgirl"|sed -r 's#(.*) (.*)#\1 \2#g' 365 oldboy oldgirl366 [root@server ~]# 367 368 企業實例:369 第一種方法:370 [root@server ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*dr:(.*) Bc.*$#\1#g' 371 192.168.1.11372 [root@server ~]# 373 第二種方法:374 [root@server ~]# ifconfig eth0|sed -rn '2s#^.*dr:(.*) Bc.*$#\1#gp' 375 192.168.1.11376 [root@server ~]# 377 378 379 [root@server data]# sed -r 's#(zhu)#\1#g' oldboy.txt <====>sed -i 's#zhu#zhu#g' oldboy.txt380 zhu zhu381 zhu1 zhu382 zhu2 zhu383 384 (1)[root@server data]# find /root/data/ -type f -name "test.txt"|xargs sed -i 's#oldboy#oldgirl#g'385 (2)[root@server data]# find /root/data/ -type f -name "test.txt" -exec sed -i 's#oldboy#oldgirl#g' {} \;386 (3)[root@server data]# sed -i 's#oldgirl#oldboy#g' `find ./ -type f -name "test.txt"` //第三種方法優勢更大點387 388 例3:389 awk sed的過濾:都是過濾以d開頭的目錄390 [root@server ~]# ls -lF|awk '/^d/'391 drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/392 drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/393 drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/394 395 [root@server ~]# ls -lF|sed -n '/^d/p'396 drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/397 drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/398 drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/399 [root@server ~]# 400 401 [root@server ~]# ls -lF|grep '^d'402 drwxr-xr-x 2 root root 4096 12月 2 15:41 qq/403 drwxr-xr-x. 102 root root 4096 11月 27 16:57 test/404 drwxr-xr-x 7 root root 4096 12月 3 16:39 zhu/405 406 例4:過濾Ip地址:407 [root@server ~]# ifconfig eth0|sed -n '2p' //-n表示取消默認輸出,2p表示取第2行408 inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0409 410 411 412 413 414 yum ==linux里包管理器,寶珠解決依賴問題;415 例子:yum -y install tree -y 416 下載tree包,然后調用rpm命令安裝tree包417 如果需要依賴包,幫你下載幫你提前安裝;418 yum update -y ====等價于upgrade419 420 yum grouplist 里選包組, 然后yum groupinstall "包組" -y421 yum search 關鍵字或yum search all:升級補丁422 423 yum remove tree -y <======千萬不要用424 425 rpm -ivh(安裝、顯示輸出、人類可讀展示)426 rpm -ivh 包名.rpm(提前下載好)427 最大問題,依賴包問題不好解決;428 a---b---c---d429 例:430 [root@server oldboy]# rpm -qa tree //查詢本機已經有無安裝tree包 -qa431 tree-1.5.3-3.el6.x86_64432 [root@server oldboy]# 433 434 tree ==顯示目錄樹結構 435 -L:顯示層數436 -d:顯示目錄437 例:438 [root@server ~]# tree /root/zhu/ -Ld 1439 /root/zhu/440 ├── a441 ├── b442 ├── c443 ├── d444 └── e445 446 447 448 alias ==查看以及定義別名(外號、小名)449 例子:alias rm='echo"rm can not be used,please use mv"' //保護系統,禁止新手使用rm命令,使用mv命令;450 別名永久生效位置:root用戶:[root@server etc]# vim /root/.bashrc451 所有用戶都生效:/etc/bashrc或/etc/profile定義452 生效source /etc/profiles453 unalias ==取消別名454 seq sequence==seq序列455 -s 制定序列的分割符456 -w457 history ==打印用戶操作的歷史記錄458 ps -ef|grep ssh ==查看進程命令459 ss/netstat -lntup/-tulp|grep ssh ==查看端口是否工作 460 查看配置好的Ip:461 ifconfig462 ip add 463 hostname 查看主機名(uname -n)464 uname 打印系統信息 -r 內核 -m:查看32位還是64位 -n主機名465 whoami 查看當前用戶466 ##############################################################################################467 su 用戶角色切換468 su - 用戶名:-參數切換用戶環境變量469 實例:470 [root@server tmp]# su - oldboy -c "touch a.txt" //表示在不切換用戶前提下,使用-c選項使得在不切換的賬號情況下,執行操作471 [root@server tmp]# ls -l /home/oldboy/a.txt 472 -rw-r--r-- 1 oldboy incahome 0 Jan 2 22:50 /home/oldboy/a.txt473 [root@server tmp]# 474 參考文檔:http://oldboy.blog.51cto.com/2561410/1053606475 ##############################################################################################476 getenforce 檢查selinux狀態477 setenforce 設置SELINUX狀態 1啟用 0警告,不啟用478 例:479 方法1:480 [root@server selinux]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config481 [root@server selinux]# grep =disabled /etc/selinux/config482 SELINUX=disabled483 [root@server selinux]# cat /etc/selinux/config484 方法2:485 [root@server selinux]# getenforce486 Enforcing487 [root@server selinux]# setenforce488 usage: setenforce [ Enforcing | Permissive | 1 | 0 ]489 [root@server selinux]# setenforce 0 //關閉,警告490 [root@server selinux]# getenforce491 Permissive492 493 runlevel: //查看用戶所在系統運行級別494 init: 切換運行級別,后面接對應級別的數字;495 init 5 ==startx 切換桌面環境496 chkconfig 設置開機自啟服務497 chkconfig --list iptables498 499 diff 比較,接兩個文件500 vimdiff 高級比較,高亮顯示兩個文件內容區別501 例:502 [root@server ssh]# diff sshd_config sshd_config20151129.bak503 504 [root@server ssh]# vimdiff sshd_config sshd_config20151129.bak505 =============================================================506 507 which:查找命令所在的路徑,搜索范圍來自全局環境PATH變量對應的路徑;508 509 whereis:查找相關信息 -b :查二進制命令510 511 locate :從數據庫里查相關信息,新命令需提前updatedb更新數據庫512 513 例:514 [root@server ~]# whereis -b ifconfig515 ifconfig: /sbin/ifconfig516 find / -type f -name "mv"517 find / -type f -name "useradd"518 locate useradd519 ####################################################################################################520 history 顯示歷史記錄521 history -c:清空所有的歷史記錄522 history -d +多(#)行號:清空第#行;523 ####################################################################################################524 wget:下載的意思 wget http://url525 [root@server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo526 -O:指定文件改成什么什么樣子527 --spider 爬蟲,檢查網站是不是好的,不會下載只會檢查528 -T --timeout=seconds 超時時間529 --tries=10 指定重試的次數530 -q --quit 關閉輸出531 wget --spider --force-html -i bookmarks.html532 #################################################################################################### 2016/1/3號添加 533 皇帝:root 534 visudo =======vim /etc/sudoers 編輯sudo配置文件(vi /etc/sudoers) -c 檢查語法535 注意:配置用戶權限位置在配置文件98行位置(用98gg直接切換)536 537 538 臣民:539 sudo 調兵虎符,sudo配置文件授權之后,執行命令時需要命令前帶sudo540 sudo [參數選項] 命令541 -l:必須登錄用戶下面,查看root給當前用戶所分配的權限規則542 例:543 [oldboy@server ~]$ sudo -l544 用戶 oldboy 可以在該主機上運行以下命令:545 (ALL) /bin/touch, (ALL) /usr/sbin/useradd, (ALL) /bin/ls, (ALL) /bin/rm546 547 548 549 550 551 552 ####################################################################################################553 ifup eth0:打開網卡554 ifdown eth0:關閉網卡555 df -h =====> //以可讀的形式查看磁盤掛載信息 <=====>等價于cat /proc/mounts556 #####################################################################################################557 df -i:查看掛載的磁盤inode情況558 [root@server ~]# df -i559 Filesystem Inodes IUsed IFree IUse% Mounted on560 /dev/sda3 479552 59041 420511 13% /561 tmpfs 71261 1 71260 1% /dev/shm562 /dev/sda1 51200 38 51162 1% /boot563 [root@server ~]# 564 #####################################################################################################565 566 567 568 569 cat /proc/mount //設備掛載信息570 fsck -A ======> 磁盤檢查(不要檢查好的磁盤),卸載的狀態檢查。571 572 dmesg---內核打印的錯誤信息,例如硬件故障警告;573 574 [root@server profile.d]# crontab -l575 [root@server profile.d]# cat /var/spool/cron/root //定時任務所在路徑576 577 tar 打包具體參數,見視頻578 gzip/unzip zip壓縮解壓縮579 580 cut 切割,簡單的取列命令 581 -d:指定分隔符582 -f數字:表示取第幾列。-f3,6583 -c按字符取;584 585 wc 打印行號,字節數586 -l:顯示一個文件有多少行587 例子:588 589 [root@server ~]# wc -l /etc/services 590 10774 /etc/services591 [root@server ~]# 592 593 [root@server ~]# cat -n /etc/services|tail -1594 10774 iqobject 48619/udp # iqobject595 596 dumpe2fs - dump ext2/ext3/ext4 filesystem information597 598 12月10號599 chmod == change mode改變文件權限600 方法 1:數字修改方法601 chmod [數字組合] 文件名602 r 4603 w 2604 x 1605 - 0606 例: rw-rw-r-x 代表數字權限655607 608 方法2:字符權限修改方法609 chmod [用戶類型] [+ | - | =] [權限字符] 文件名610 rw-rw-r-x====>rwx--xr-x:611 例:chmod u+x,g=x test.sh612 613 umask默認值為022;614 查看umask值命令為:umask615 修改umask: umask 051616 例:617 如果umask值位051,則創建文件后權限位為多少?如果umask值中有奇數,奇數位有幾位對應有幾個1,必須是先減去umask值,再加上對應的幾個1。618 答:666 666619 - 051 - 051620 ----------(錯誤) + 11621 615 ---------(正確)622 626623 624 625 永久修改配置文件將配置信息填寫到/etc/profile中;626 vim /etc/profile627 12.14628 修改用戶屬組629 chown .adminuser /home/admins====chgrp adminuser /home/admins630 chown 用戶 文件或目錄 <====僅僅授權用戶631 chown :組 文件或目錄 <====僅僅授權用戶組632 等同于"chgrp 組 文件或目錄"633 chown 用戶:組 文件或目錄 <=====表示授權用戶和組。634 強調:635 1)其中的冒號“:”可以用點好“.”替代。636 2)要授權的用戶和組名,必須是Linux里實際存在的。637 638 639 ##########################################################################640 刪除用戶的命令:userdel -r oldboy //將oldboy家目錄一起刪除641 刪除用戶組的命令:groupdel incahome642 useradd oldboy -u +(uid號/用戶名)-g + (gid號/組名)643 userdel:644 所涉及到的文件:645 /etc/passwd--用戶賬號資料文件646 /etc/shadow--用戶賬號資訊加密文件647 /etc/group--用戶組資訊文件648 useradd 添加用戶 -u uid -g 指定所屬組 -s 登錄SHELL -M649 -c:設置備注信息650 -u:設置UID號651 -G:設置對于的屬組652 -s:設置對應的shell653 -d:設置相應的家目錄654 -e:指定用戶過期時間655 實例:656 8 [root@server ~]# useradd -c "HandsomeBoy" -u 806 -G root,oldboy,sa -s /bin/sh -d /oldboy6 oldboy6 657 9 ##注釋658 10 -c:設置備注信息659 11 -u:設置UID號660 12 -G:設置對于的屬組661 13 -s:設置對應的shell662 14 -d:設置相應的家目錄663 15 ###成果如下664 16 [root@server ~]# grep "oldboy6" /etc/passwd665 17 oldboy6:x:806:806:HandsomeBoy:/oldboy6:/bin/sh666 18 [root@server ~]# id oldboy6667 19 uid=806(oldboy6) gid=806(oldboy6) groups=806(oldboy6),0(root),512(sa),513(oldboy)668 669 例:670 [root@server ~]# echo 123456|passwd --stdin oldboy671 更改用戶 oldboy 的密碼 。672 passwd: 所有的身份驗證令牌已經成功更新。673 [root@server ~]# echo 123 >p.log674 [root@server ~]# passwd --stdin oldboy <p.log675 更改用戶 oldboy 的密碼 。676 passwd: 所有的身份驗證令牌已經成功更新。677 [root@server ~]# 678 679 #########################################################################680 usermod 用戶信息修改相關命令681 682 -l (login_name):變更用戶login時的名稱為login_name,其余信息不變、683 -L:凍結用戶密碼684 -U:取消凍結用戶的密碼,使之恢復登錄。實際同樣是修改/etc/shadow的內容685 usermod 修改用戶 -u uid,-g 指定所屬組,-s登錄SHELL,-e 指定用戶過期時間686 ##########################################################################687 chage 查看及修改用戶密碼相關信息688 -E,--expiredate過期時間,將賬號過期時間設為“過期時間”,日期寫法MM/DD/YY689 -I,--inactive失效密碼690 -l,--list 顯示賬號年齡信息691 -m,--mindays 最小天數692 -M,--maxdays 最大天數693 -W,--warndays 警告天數694 例:695 [root@server ~]# chage -l oldboy696 Last password change : Dec 31, 2015697 Password expires : Feb 29, 2016698 Password inactive : Mar 30, 2016699 Account expires : never700 Minimum number of days between password change : 7701 Maximum number of days between password change : 60702 Number of days of warning before password expires : 10703 [root@server ~]# chage -m 8 -M 61 -W 11 -I 31 oldboy <====>等價于passwd -n 8 -x 61 -w 11 -i31 oldboy命令也可以實現同樣功能,知識參數的寫法不同704 [root@server ~]# chage -l oldboy705 Last password change : Dec 31, 2015706 Password expires : Mar 01, 2016707 Password inactive : Apr 01, 2016708 Account expires : never709 Minimum number of days between password change : 8710 Maximum number of days between password change : 61711 Number of days of warning before password expires : 11712 713 #########################################################################714 passwd --stdin 非交互式設置密碼715 716 717 #########################################################################718 lsattr 查看特殊屬性。719 chattr 設置特殊屬性,例如: +i 不可變720 例:721 [root@server ~]# chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab 722 [root@server ~]# chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //解除鎖定723 [root@server ~]# lsattr /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //查看文件鎖定狀態724 [root@server ~]# mv `which chattr` /opt/oldboy //防止黑客找到文件,可以將配置文件移動到其他地方725 ##########################################################################726 解析命令:727 728 方法:反引號``或$() 等價于729 tar zcvf etc-`date +%F`.tar.gz /etc/<========>tar zcf var-$(date +%F).tar.gz /var/730 731 ###########################################################################732 2016年1月2號添加733 who show who is logged on734 w show who is logged on and what they are doing735 whoami 查看當前用戶736 需要會的:id,w,who,last,lastlog737 了解:users,groups,newgrp738 739 #####################################################740 tr命令741 #方法5:擴展如何將ls -l命令中的權限字符轉換為八進制?742 22 [root@server ~]# ll /etc/hosts|cut -c 2-10|tr "rwx-" "4210"|awk -F "" '{print $1+$2+$3 $4+$5+$6 $7+$8+$9}'743 23 644744 24 #知識點:1.tr字符替換的使用;2.cut -c截取字符;3.awk指定分隔符為空。745 746 ############################################################################################747 748 749 750 751 752 753 754 755 756 757 ps758 locate759 whereis760 export761 netstat(ss)762 ifconfig763 source764 ntpdate765 less 按屏(空格,page up/page down) 或按行(回車)查看文件766 more 按屏(空格)或按行(回車)查看文件(不能向上翻)767 ========================================================================768 /var/log/messages 系統日志769 /var/log/secure 系統安全日志770 /var/spool/clientmqueue 郵件臨時目錄771 /proc/interrupts 查看中斷文件772 /etc/fstab 磁盤文件系統開機自動掛載文件773 /etc/profile 全局的環境配置文件774 ========================================================================775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 絕對路徑:必須從/開始798 相對路徑:沒有從/開始799 800 快捷鍵:801 TAB 命令、路徑補全802 bash內置命令:用help命令查看幫助803 alias804 bg805 break806 cd807 continue808 declare809 echo810 eval811 exec812 exit813 export814 fg815 getopts816 hash, 817 help, 818 history, 819 jobs,820 kill, 821 let822 local, 823 logout, 824 mapfile,825 popd,826 printf, 827 pushd, 828 pwd, 829 read, 830 readonly, 831 return, 832 set, 833 shift, 834 shopt, 835 source, 836 suspend, 837 test, 838 times, 839 trap, 840 true, 841 type, 842 typeset,843 ulimit, 844 umask, 845 unalias, 846 unset, 847 848 849 850 851 852 853 特殊字符命令:854 >或1> 重定向,會清除文件里所有以前數據,增加新數據;855 >>或1>> 追加重定向,文件結尾加入內容,不會刪除已有的文件內容;856 <0 輸入重定向;857 <<0 追加輸入重定向;858 2>錯誤重定向859 2>>錯誤追加重定向860 ==============================================================861 1.標準輸入(stdin):代碼為0,使用<或<<數據流向從右向左862 2.標準輸出(stdout): 代碼為1,使用>或>>數據流向從左向右863 3.錯誤輸出(stderr):代碼為2,使用2>或2>>.864 865 箭頭的指向就是數據的流向;866 下面3種方法是等價的867 /dev/null 空設備 黑洞868 1) 1 >/dev/null 2 >/dev/null869 2) ***** 1>/dev/null 2>&1870 3) &>/dev/null871 872 873 874 875 ==================================================================876 通配符:(除了正則表達式以外的字符)877 * 通配符,代表任意(0到多個)字符*****878 ?通配符,代表任意1個字符879 ; 連續不同命令的分隔符*****880 # 配置文件注釋*****881 \ 讓一個有意義的字符,脫掉馬甲。882 ..上級目錄883 . 當前目錄 \.代表點號; 884 . 還代表隱藏文件885 '' 單引號,不具有變量置換功能,輸出是所見即所得。886 "" 雙引號,具有變量置換功能,解析變量后輸出。887 ``:里面放命令,才會執行,tab鍵上面的鍵,反引號,兩個``中間為命令,會先執行,等價于$()。``===$()888 | 管道(把前一個命令結果的輸出交給后一個程序繼續處理)889 ~ 用戶的家目錄,針對root環境~就代表/root。890 $ 變量前需要加的符號891 / 路徑分隔符號892 {} 生成字符或數字序列,類似seq,列舉的意思,一般搭配echo使用;893 !+字母:調出最近一次以此字母開頭的命令并執行;894 例:895 首先執行 mkdir stu{001..100}896 接著執行!m ======>mkdir stu{001..100}897 !!:表示使用最近一次操作的命令;898 ! 邏輯運算中的“非”(not)899 && 當前一個指令執行成功時,執行后一個指令900 || 當前一個指令執行失敗時,執行后一個指令901 >或1> 重定向,會清除文件里所有以前數據,增加新數據;902 >>或1>> 追加重定向,文件結尾加入內容,不會刪除已有的文件內容;903 <0 輸入重定向;904 <<0 追加輸入重定向;905 2>錯誤重定向906 2>>錯誤追加重定向907 cd -:表示回到所在目錄的上一級目錄;908 例:909 [root@server test]# pwd910 /root/test911 [root@server test]# cd /tmp/912 [root@server tmp]# cd -913 /root/test914 [root@server test]# pwd915 /root/test916 917 =====================================================================918 基礎正則表達式:一些特殊的符號 ,表示一些特殊的功能和作用919 . 單個任意字符920 * 重復前面任意0個或多個字符921 .* 匹配任意字符922 sed -i 's#(可以用正則匹配)#\1#g' oldboy.txt923 把前面正則匹配的括號內的結果,在后面用\1取出來操作。924 ^$:表示空行925 []:匹配指定范圍內任意單個字符;926 {n,m}:表示n-m次;927 \:讓一個正則表達式有意義的字符脫掉馬甲;928 ?:0或1個;929 +:重復前面1或多次;930 |:或931 ():分組932 [^]:表示取反933 ^;表示以什么什么開頭,例如:^d:表示以d開頭的文件934 $;表示以什么什么結尾,例如:/$:表示以/為結尾的,,oldboy$:以oldboy為結尾的935 5.擴展的正則表達式:ERE(egrep或grep -E)936 1)+ 重復一個或一個以上前面的字符。937 例:938 [root@server oldboy]# grep -Eo "go+d" oldboy.log 939 god940 good941 god942 goood943 2)? 匹配之前的項1次或者0次。944 例:945 [root@server oldboy]# grep -Eo "go?d" oldboy.log 946 god947 god948 gd949 [root@server oldboy]#950 951 [root@server oldboy]# grep -Eo "g?d" oldboy.log 952 d953 d954 d955 d956 d957 d958 d959 d960 d961 d962 gd963 [root@server oldboy]#964 3)| 用或的方式查找多個符合的字符串。965 例:966 [root@server oldboy]# grep -E "g?d|good" oldboy.log 967 I am oldboy teacher!968 I like badminiton ball,billiard ball and chinese chess!969 my blog is http://oldboy.blog.51cto.com.970 my god , i am not oldboy,but OLDBOY!971 good972 god973 goood974 gd975 4)() 找出“用戶組”字符串。976 例:977 [root@server oldboy]# grep -E "g(la|oo)d" oldboy.log 978 good979 [root@server oldboy]#980 981 ^;表示以什么什么開頭,例如:^d:表示以d開頭的文件982 例:983 [root@server etc]# ls -l|grep '^d' //匹配以"d"開頭的文件984 drwxr-xr-x. 3 root root 4096 11月 25 02:44 abrt985 drwxr-xr-x. 4 root root 4096 11月 25 02:46 acpi986 drwxr-xr-x. 2 root root 4096 11月 25 02:46 alsa987 drwxr-xr-x. 2 root root 4096 11月 25 02:44 alternatives988 drwxr-x---. 3 root root 4096 11月 25 02:46 audisp989 drwxr-x---. 3 root root 4096 11月 25 02:46 audit990 drwxr-xr-x. 2 root root 4096 11月 25 02:46 bash_completion.d991 drwxr-xr-x. 2 root root 4096 12月 2 22:06 blkid992 drwxr-xr-x. 2 root root 4096 3月 10 2015 chkconfig.d993 drwxr-xr-x. 2 root root 4096 11月 25 02:44 compat-openmpi-psm-x86_64994 drwxr-xr-x. 2 root root 4096 11月 25 02:45 compat-openmpi-x86_64995 996 $;表示以什么什么結尾,例如:/$:表示以/為結尾的,,oldboy$:以oldboy為結尾的997 例:998 [root@server etc]# ls -lF|grep "/$"999 drwxr-xr-x. 3 root root 4096 11月 25 02:44 abrt/
1000 drwxr-xr-x. 4 root root 4096 11月 25 02:46 acpi/
1001 drwxr-xr-x. 2 root root 4096 11月 25 02:46 alsa/
1002 drwxr-xr-x. 2 root root 4096 11月 25 02:44 alternatives/
1003 drwxr-x---. 3 root root 4096 11月 25 02:46 audisp/
1004 drwxr-x---. 3 root root 4096 11月 25 02:46 audit/
1005 drwxr-xr-x. 2 root root 4096 11月 25 02:46 bash_completion.d/
1006 ========================================================================
1007
1008
1009
1010
1011 環境變量:
1012 PATH 系統路徑變量,執行ls,cp等非內置命令時,系統會查找PATH里對應的路徑是否有,如果沒有就報告找不到該命令;
1013 當執行which cp來查看命令所在路徑的時候,也是從PATH變量去搜索。
1014
1015 臨時修改[root@server ~]# export PATH="/tmp:$PATH",永久修改前面臨時修改的命令放到/etc/profile下,使用source /etc/profile使得修改立刻生效。
1016
1017
1018
1019
1020
1021
1022
1023
1024 學習中遇到的命令:
1025 [root@server cron]# cat /etc/rc.local //開機啟動相當于windowsn開始菜單中啟動選項
1026
1027
1028 [root@server ~]# /etc/init.d/iptables stop //關閉防火墻
1029
1030 [root@server ~]# yum -y install lrzsz //安裝windows<===>linux之間傳輸文件的工具rz
1031
1032 [root@server ~]# >/etc/udev/rules.d/70-persistent-net.rules //解決vm克隆虛擬機后網卡不能啟用
1033
1034 [root@server ~]#echo ">/etc/udev/rules.d/70-persistent-net.rules" >/etc/rc.local
1035
1036 [root@server ~]# cat /etc/redhat-release //查看版本
1037 CentOS release 6.7 (Final)
1038 [root@server ~]# uname -r //查看內核
1039 2.6.32-573.el6.x86_64
1040 [root@server ~]# uname -m //32位還是64位
1041 x86_64
1042 [root@server ~]# hostname //主機名
1043 server
1044
1045 [root@server selinux]# runlevel //查看運行級別
1046 N 3
1047
1048 [root@server ~]# find /root/data/ -type f -name "*.txt" -exec ls -l {} \;
1049 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/c/test.txt
1050 -rw-r--r--. 1 root root 0 Nov 25 23:42 /root/data/zhurui4.txt
1051 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/ddd/fff/test.txt
1052 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/test.txt
1053 -rw-r--r--. 1 root root 18 Nov 27 07:05 /root/data/test.txt
1054
1055 [root@server ~]# find /root/data/ -type f -name "*.txt"|xargs ls -l //找到的結果可以用任何方式去處理
1056 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/ddd/fff/test.txt
1057 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/a/test.txt
1058 -rw-r--r--. 1 root root 7 Nov 27 07:05 /root/data/c/test.txt
1059 -rw-r--r--. 1 root root 18 Nov 27 07:05 /root/data/test.txt
1060 -rw-r--r--. 1 root root 0 Nov 25 23:42 /root/data/zhurui4.txt
1061
1062
1063
1064
1065 [root@server ~]# echo $PATH
1066 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1067 [root@server ~]# grep PATH /etc/profile
1068 case ":${PATH}:" in
1069 PATH=$PATH:$1
1070 PATH=$1:$PATH
1071 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
1072 [root@server ~]# export PATH="/tmp:$PATH" //臨時新增變量,重啟會失效
1073 [root@server ~]# echo $PATH
1074 /tmp:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
1075 [root@server ~]# which oldboy
1076 /usr/bin/which: no oldboy in (/tmp:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
1077 [root@server ~]# touch /tmp/oldboy //新建命令
1078 [root@server ~]# chmod +x /tmp/oldboy //給命令執行權限
1079 [root@server ~]# which oldboy
1080 /tmp/oldboy
1081 #PermitRootLogin yes //禁止管理員遠程連接
1082
1083 修改字符集:
1084 路徑:/etc/sysconfig/i18n
1085 [root@server ~]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8"#g' /etc/sysconfig/i18n
1086 [root@server ~]# . /etc/sysconfig/i18n ======= source /etc/sysconfig/i18n //使配置立即生效
1087 [root@server ~]# echo $LANG
1088 zh_CN.UTF-8
1089
1090 時間同步任務計劃:
1091 [root@server ~]# /usr/sbin/ntpdate time.nist.gov //同步互聯網時間命令
1092
1093 [root@server ~]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>%1" >>/var/spool/cron/root //添加定時任務
1094 [root@server ~]# crontab -l
1095 */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>%1
1096 [root@server ~]#
1097
1098 修改顯示歷史記錄命令環境變量:
1099 export HISTSIZE=5 //修改默認顯示歷史記錄的命令行
1100 export HISTFILESIZE=5 //控制.bash_history文件顯示行數
1101 [root@server ~]# cat ~/.bash_history
1102 . /etc/sysconfig/i18n
1103 echo $LANG
1104 man cd
1105 history
1106 tree
1107
1108 交互給用戶生成密碼:
1109 useradd oldboy
1110 echo 123456|passwd --stdin oldboy
1111
1112
1113 修改遠程連接時間:
1114 export TMOUT=5
1115 echo "export TMOUT=5" >> /etc/profile
1116 tail -1 /etc/profile //查看最近修改/etc/profile配置文件
1117 source /etc/profile
1118 echo $TMOUT
1119
1120 文件描述符概念:
1121 1、表示形式為整數數字,一般使用(0-65535)范圍;
1122 2、進程使用的時候會占用文件描述符(標識打開的文件)
1123
1124 查看默認文件描述符:
1125 [root@server cron]# ulimit -n
1126 1024
1127 3、調整文件描述符
1128 [root@server cron]# ulimit -SHn 65535 //臨時修改
1129 [root@server cron]# echo '* - nofile 65535 ' >>/etc/security/limits.conf <===>echo "ulimit -SHn 65535" >>/etc/rc.local
1130
1131 內核優化配置:
1132 vim /etc/sysctl.conf //WEB服務,iptables服務調優配置文件
1133 sysctl -p //讓配置生效
1134
1135 [root@server ~]# > /etc/issue //隱藏linux軟件名及版本號
1136 [root@server ~]# > /etc/issue.net
1137
1138 鎖定系統配置文件,防止惡意修改
1139 [root@server ~]# chattr +i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab
1140 [root@server ~]# chattr -i /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //解除鎖定
1141 [root@server ~]# lsattr /etc/passwd /etc/group /etc/shadow /etc/gshadow /etc/inittab //查看文件鎖定狀態
1142 [root@server ~]# mv `which chattr` /opt/oldboy //防止黑客找到文件,可以將配置文件移動到其他地方
1143
1144
1145
1146 [root@server ~]# grep -v "nologin$" /etc/passwd //將不能登錄的賬號排除掉
1147 root:x:0:0:root:/root:/bin/bash
1148 sync:x:5:0:sync:/sbin:/bin/sync
1149 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1150 halt:x:7:0:halt:/sbin:/sbin/halt
1151 oldboy:x:500:500::/home/oldboy:/bin/bash
1152 oldgirl:x:501:501::/home/oldgirl:/bin/bash
1153 msn:x:502:502::/home/msn:/bin/bash
1154
1155 為grub菜單加密碼
1156
1157 [root@server ~]# /sbin/grub-md5-crypt
1158 Password:
1159 [root@server ~]# vim /etc/grub.conf //將生成的密碼填寫到如下配置文件中
1160 13 hiddenmenu
1161 密碼生成文件加到13-14行之間
1162 14 title CentOS 6 (2.6.32-573.el6.x86_64)
1163
1164 內核優化之禁PING
1165
1166 [root@server ~]# echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf
1167 [root@server ~]# sysctl -p //讓配置生效
1168
1169
1170 配置Yum源配置文件路徑:
1171 [root@server ~]# cat /etc/yum.repos.d/CentOS-Base.repo
1172
1173 [root@server ~]# cd /etc/yum
1174 yum/ yum.conf yum.repos.d/
1175 [root@server ~]# cd /etc/yum.repos.d/
1176 [root@server yum.repos.d]# ls
1177 CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
1178 CentOS-Debuginfo.repo CentOS-Media.repo
1179 [root@server yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.20151201.bak //拷貝原有的centos-base-repo
1180 [root@server yum.repos.d]# ls
1181 CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo
1182 CentOS-Base.repo.20151201.bak CentOS-fasttrack.repo CentOS-Vault.repo
1183 [root@server yum.repos.d]# ls
1184 CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo
1185 CentOS-Base.repo.20151201.bak CentOS-fasttrack.repo CentOS-Vault.repo
1186 [root@server yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo //從阿里云下載yum源
1187
1188 setuid:如果命令有4755的權限,對應關系為-rwsr-xr-x=====4755
1189 [root@server test]# find / -type f -perm 4755|xargs ls -l
1190 -rwsr-xr-x. 1 root root 77336 10月 15 2014 /bin/mount
1191 -rwsr-xr-x. 1 root root 38200 7月 24 01:55 /bin/ping
1192 -rwsr-xr-x. 1 root root 36488 7月 24 01:55 /bin/ping6
1193 -rwsr-xr-x. 1 root root 34904 10月 15 2014 /bin/su
1194 -rwsr-xr-x. 1 root root 53472 10月 15 2014 /bin/umount
1195 -rwsr-xr-x. 1 root root 10272 10月 15 2014 /sbin/pam_timestamp_check
1196 -rwsr-xr-x. 1 root root 34840 10月 15 2014 /sbin/unix_chkpwd
1197 -rwsr-xr-x. 1 root root 54496 2月 20 2015 /usr/bin/at
1198 -rwsr-xr-x. 1 root root 66352 4月 7 2015 /usr/bin/chage
1199 -rwsr-xr-x. 1 root root 51784 3月 30 2015 /usr/bin/crontab
1200 -rwsr-xr-x. 1 root root 71480 4月 7 2015 /usr/bin/gpasswd
1201 -rwsr-xr-x. 1 root root 36144 4月 7 2015 /usr/bin/newgrp
1202
1203 只有擁有s權限,則代表這個命令具有所屬用戶root的權限,不管什么用戶都可以執行!
1204
1205
1206
1207
1208
1209
1210
1211 linux優化;
1212 1、建立普通賬號,使用普通賬號登錄
1213 2、處理selinux
1214 3、處理防火墻
1215 4、精簡開機自啟動服務:sshd,network,crond,rsyslog,sysstat
1216 5、linux最小化安全理念;
1217
1218
1219
1220 /boot/ /var/ /dev/ /lib/ /sbin/ /usr/ /tmp/ /mnt/ /etc/ /bin/ /opt/
總結
- 上一篇: Linux系统用户和用户组介绍
- 下一篇: 使用parted给大于2T的磁盘分区