主頁 > 作業系統 > 【學習筆記】兄弟連LINUX視屏教程(沈超 李明)

【學習筆記】兄弟連LINUX視屏教程(沈超 李明)

2020-10-07 02:23:50 作業系統

發現自己的linux水平楞個瓜皮,找個視屏教程學習一哈

1 linux系統簡介

1.1 UNIX和Linux發展史

unix發展歷史:1969年,美國貝爾實驗室的肯.湯普森開發出unix系統,1971年丹尼斯·里奇發明C語言,1973年,unix用c重寫

硬體平臺的概念  也就是cpu架構

PowerPC      IBM          AIX

PA-RISC       HP        HP-UX

SPARC         Sun          Solaris

IA(Intel、AMD、Cyrix、RISE…)      Red Hat Linux、Ubuntu…   linux

AIX和HP-UX是不能安裝在pc中,必須在特定的服務器上,Solaris可以

freebsd  加州大學伯克利分校

mac也是由unix演變來的

linux發展歷史:1991年,Linus Torvalds和其他眾多愛好者開發完成

Linux是開源軟體,原始碼開放的UNIX

內核官網:www.kernel.org

版本號如  2.6.18

目前最新  4.18.4

次版本是偶數是穩定版奇數是開發版,這種說法在主版本更新到3就沒了

發行版:redhat系列(yum)和debian系列(apt-get)

fedora是rhel的實驗版本,要收費

centos完全免費 社區維護

gentoo linux不適合初學者

SUSE在歐洲用的多,界面都快趕上unbuntu

KNOPPIX不用安裝,類似livecd

ubuntu界面漂亮,桌面用戶多點,server端并不多

1.2 開源軟體簡介

商業軟體是收費的

開源軟體免費但是可以收服務費

image

使用、研究、散布及改良的自有

1.3 Linux應用領域

基于Linux的企業服務器

www.netcraft.com 掃描和踩點網站

嵌入式應用

安卓、手機、平板、智能家電、航空、銀行、卡拉OK點歌系統、樹莓派

1.4 學習方法

善用工具

英文

忘掉windows思維方式

2 Linux系統安裝

磁盤磁區

磁區型別

主磁區:最多4個

擴展磁區:最多1個,不能寫入資料,只能掛載邏輯磁區

主磁區+擴展磁區 最多4個

邏輯磁區

格式化(高級格式化)又稱為邏輯格式化,是要在硬碟中寫入檔案系統

ext4  4k  資料塊 block

i節點 inode串列

低級格式化是硬碟操作不是作業系統操作

硬體設備檔案名:

IDE硬碟             hd[a-d]                     

SCSI/SATA/USB硬碟      sd[a-p]       

光驅                    cdrom或sr0

滑鼠                     mouse

列印機(25針)                 lp[0-2]

列印機(USB)                 /dev/usb/lp[0-15]

ide 133MB  最古老, scsi都淘汰了 200MB貴服務器

SATA3 串口硬碟 500MB/s  現在一般都是這個

邏輯磁區不能占用1 2 3 4編號   5一定是第一個邏輯磁區

掛載:

/ 根磁區

swap磁區 交換磁區  記憶體1.5-2倍  不超過2G

推薦磁區/boot  啟動磁區 200m即可 太大無用,系統啟動都要有空閑空間,防止系統寫滿導致無法啟動,寫完之后永遠不會往這個磁區再寫入資料,他永遠有空閑空間  boot磁區一定是sda1第一個磁區

掛載點必須是空目錄

安裝日志:

/root/install.log:存盤了安裝在系統中的軟體包及其版本資訊

/root/install.log.syslog 存盤安裝程序中留下的事件記錄

/root/anaconda-ks.cfg 已Kickstart組態檔的格式記錄安裝程序的選項設定  作為無人值守安裝的模板

linux 嚴格區分大小寫

命令全是小寫

檔案名區分大小寫

tab鍵自動補全

linux中一切皆檔案  設備檔案是特殊的檔案

永久生效都要寫入檔案  寫入記憶體的都是臨時生效

linux不通過擴展名區分檔案型別

linux存盤設備都必須掛載后才能使用

目錄作用

/bin  存放系統命令,普通用戶和root都可以執行

/sbin 保存和系統環境設定相關的命令,只有root能執行

/usr/bin

/usr/sbin

/boot 系統啟動目錄

/dev 設備檔案

/etc  組態檔

/home 宿主目錄

/lib 系統函式庫

/lost+found/ 當系統崩潰或意外關機而產生的檔案碎片,當系統啟動程序fsck工具會檢查這里,并修復系統   每個磁區都有自己的這個目錄

/media 掛載目錄   多媒體設備  光碟

/mnt 掛載目錄 u盤移動硬碟或其他作業系統磁區

/misc 掛載目錄 系統建議用來掛載nfs服務的共享目錄

/opt 第三方軟體保存位置  用處不多,現在外部軟體一般放/usr/local目錄

/proc 虛擬檔案系統  放記憶體中 當前系統的行程和硬體資訊

/sys  虛擬檔案系統  放記憶體中 存放內核相關資訊

/root  root家目錄

/srv  服務資料目錄

/tmp 臨時

/usr 系統軟體資源目錄

/var 動態資料保存位置,保存快取、日志及軟體運行產生的檔案

usr  unix system resource

服務器不允許關機,只能重啟

重啟時應該關閉服務

不要在服務器訪問高峰運行高負載命令

遠程配置防火墻時不要把自己踢出服務器

合理分配權限

定期備份重要資料和日志

mint 默認不啟用root用戶,sudo passwd root來啟用

mint也默認不啟用ssh,sudo apt-get install openssh-server然后修改組態檔vi /etc/ssh/sshd_config 修改PermitRootLogin yes行,來允許root用戶ssh遠程登陸

3 常用命令

3.1 檔案處理命令

命令格式  命令 [-選項] [引數] ls -al /etc     中括號表示可選

個別命令不遵守此格式 多個選項可以寫一起  簡化選項和完整選項  -a  –all

目錄處理命令:

ls  list    /bin/ls  -aldh

所有者  所屬組  其他人  ugo rwx  讀寫執行權限  777 軟鏈接 硬鏈接

-表示檔案 d表示檔案 l表示link

.開頭的檔案表示隱藏檔案   .當前目錄  ..父目錄

mkdir /bin 創建目錄   -p 表示遞回創建 -m=mode  可以同時創建多個目錄 空格分割

cd 切換目錄 change directory  shell內置命令

pwd  /bin 顯示當前目錄

rmdir  remove empty directories  /bin   洗掉空目錄

cp copy /bin   -rp   r表示遞回 p保留檔案屬性 可以復制多個檔案

mv move /bin  剪切、改名 可以剪切多個

clear ctl+l  清屏

rm 洗掉檔案 remove /bin -rf f表示強制執行

檔案處理命令:

touch /bin 創建空檔案 檔案名如果是有空格 加雙引號 不建議

cat 查看檔案 /bin -n 顯示行號

tac 導致顯示

more 分頁顯示檔案內容 /bin   空格或f 翻頁 q或Q退出 enter換行

less 同more不過可以向上翻頁  pageup 上箭頭 還可以搜索 /詞兒  高亮顯示搜索到的  n顯示下個搜索到的

head 查看前幾行 -n  默認10行

tail -fn  查看后幾行  -f實時監控

鏈接命令:

ln link /bin  ln -s [原檔案] [目標檔案]  -s表示軟連接  不加表示硬鏈接

軟連接類似win快捷方式,l標記權限全是777 軟連接很小

硬鏈接和原檔案的i節點相同

硬鏈接洗掉源檔案,目標檔案依然可以使用,軟鏈接一旦洗掉源檔案,目標檔案不可用

和cp -p的不同處 修改一處后,另外一處也會同時更新,

硬鏈接不能跨磁區  硬鏈接不能對目錄使用

3.2 權限管理命令

chmod  root和所有者可以改權限

change the permissions mode of a file

/bin

-R 遞回修改 mode=421 {ugoa}+-={rwx}

可以同時進行多個授權

更多的是用數字方式 777 表示擁有全部權限

對目錄 r表示可以列出目錄內容  w表示可以在目錄中創建 洗掉檔案 x可以進入目錄

洗掉檔案的權限是對所在目錄有寫權限

對目錄有r權限就一般有x權限

chown  只有root可以改

change file ownership

chgrp

useradd

groupadd

一般誰創建的檔案 誰就是所有者

一個用戶有多個組 單有個預設組  檔案的創建者的預設組就是檔案的所屬組

umask -S 預設權限   u=rwx,g=rx,o=rx

創建目錄的權限和預設權限一樣

創建檔案的權限是預設權限去除x權限  防木馬病毒

umask          0022   0 特殊權限  022  真正的權限是777-022=755

umask 023

3.3 檔案搜索命令

find  搜索會占用大量資源 不要在服務高峰期使用 window中everything挺好用的,不過沒有linux版本,并且只支持ntfs磁區

/bin      find [搜索范圍] [匹配條件]

-name 根據檔案名搜索  find /etc -name init

通配符  *匹配任意字符       ?匹配單個字符

-iname  忽略大小寫

搜索范圍越小越好  能不在根目錄下就不要全域搜索 嚴重耗費資源

-size 指定檔案大小   +-  linux一個資料塊512B  就是0.5k   查找大于100M的檔案find / -size +204800

-user  找所有者的檔案

-group 找所屬組的檔案

根據時間屬性查找

-amin 訪問時間 access

-cmin 檔案屬性 change

-mmin 檔案內容 modify

find /etc -cmin -50  查找50分鐘以內修改過檔案屬性的檔案 +-

連接選項  -a兩個條件同時滿足 -o兩個條件滿足任一           find / -size +163840 -a -size -204800

find /etc -name init -exec ls -l {} \;                  -exec/-ok 命令 {} \; 對搜索結果執行操作     -ok有確認詢問

-type 根據檔案型別  f檔案 d目錄 l軟連接

-inum 根據i節點查找        可以找硬鏈接

locate命令

/usr/bin 在檔案資料庫中查找

yum install -y mlocate

會定期更新

速度快

updatedb 初始化

locate -i 不區分大小寫

/tmp目錄不被收錄  某些目錄不被收錄

which 命令搜索  which ls  還能搜到命令別名

whereis  還能搜到幫助檔案

grep  -i 不區分大小寫  -v排除指定字串  ^表示行首  反向查找 屏蔽

3.4 幫助命令

man manual /usr/bin

可以查命令幫助 也可以查配置的幫住

man ls

man services  不可以寫絕對路徑

可以    /內容   查找

man passwd 優先查命令   1一般是命令的幫住 5一般是組態檔的幫住

man 5 passwd 是查配置

whatis 可以查到命令的簡短介紹  就是幫助檔案的name部分

apropos 可以查組態檔的簡短介紹 也不要加絕對路徑

–help  只看選項 不會man那么長

info 和man大同小異

help  可以查看shell內置命令的幫助

shell內置命令找不到路徑

3.5 用戶管理命令

useradd 加用戶

passwd 改密碼  普通用戶改自己密碼需要滿足復雜度要求

who 查看哪些用戶登錄   tty表示本地登錄 pts表示遠程終端

w 查看登錄用戶及正在干嘛

3.6 壓縮解壓命令

絕大多數病毒很難感染壓縮檔案

常用壓縮格式

.gz linux中常用格式 命令gzip  gunzip解壓縮 或者gzip -d        

壓縮比很驚人 差不多5倍

不過gzip只能壓縮檔案 不能目錄

壓縮解壓均不保留源檔案

.zip linux和win通用格式

zip命令 保留源檔案 -r壓縮目錄

壓縮比差于gzip

unzip解壓縮  不區分檔案和目錄

.tar .tar.gz可以壓縮目錄

tar命令 -z 打包同時壓縮格式為gz -c打包  -v verbose詳細  -f 指定檔案名  -x解包  -j打包同時壓縮格式為bz2

.bz2   gzip的升級版

bzip2命令 -k可以保留原檔案 壓縮比驚人

bunzip2 解壓縮.bz2檔案 -k可以保留源檔案 bzip2 -d也可以解壓

tar -xjf 可以解壓.tar.bz2檔案

3.7 網路命令

write  發資訊給服務器上其他用戶,登錄了的用戶才能發資訊  最初的及時通訊 ctrl+d結束

wall 給所有在線用戶發信 , writeall的意思

ping  給遠程用戶發送icmp包,檢測目標是否存在,每經過一個路由節點ttl減少1  不同系統ttl初始值不一樣 可以大概判斷對方作業系統型別 linux是64

ifconfig 查看當前網路 eth0是初始網卡  lo是回環網卡用戶檢測tcpip是否通暢,mac地址是固話在網卡的只讀存盤器中的地址不可變

ifconfig eth0 192.0.0.0 可以臨時更改ip

mail 郵件命令 用戶不在線也可以 mail用戶名發信  mail啥都不跟收信 輸入help查看幫助 輸入序列號查看信 h可以看到信串列  d 1 洗掉郵件

last 重啟資訊都有 所有用戶登錄資訊  非常有效 常用的命令

lastlog 同last只記錄最后一次登錄 lastlog -u 502指定用戶

traceroute 顯示資料包到主機間的路徑   凡走過必留痕跡  結果顯示**是被該節點屏蔽了

netstat 顯示網路相關資訊 -t tcp協議 -u udp協議  -l 監聽 -r路由 -n 顯示ip埠

netstat -tlun 查看本機監聽的埠

netstat -an 查看本機所有的網路連接

netstat -rn 查看本機路由

tcp 傳輸控制協議 有三次握手協議  更可靠  類似打電話

udp 用戶資料報協議 更快  類似發短信

tcp才可以監聽埠  udp不可以  udp可以直接發送

發起埠是隨機的  目標埠才是22 80等埠

setup 修改網路, 是redhat中特有的 其他版本沒有  永久生效

yum install -y setuptool

安裝工具組件如 ntsysv(系統服務)system-config-networktui(網路服務)iptables(防火墻配置)

yum install system-config-securitylevel-tui

yum install iptables

yum install ntsysv

yum install system-config-network-tui  centos7,已經setup已經無法配置網路了,該命令中無法找到,推薦使用nmtui命令

service network restart 重啟網卡

mount 掛載

mount -t iso9660 /dev/sr0 /mnt/cdrom

/dev/cdrom 是/dev/sr0的軟連接

-t iso9660 可以不寫 默認就是

umount /dev/sr0

如果正在掛載目錄中,是卸載不了提示設備忙,要退出掛載目錄

3.8 關機重啟命令

shutdown

shutdown -h now

shutdown -h 8:30

shutdown -r now

shutdown -r 8:30

最早期只有shutdown 可以正確保存服務,目前其他命令也可以不過推薦使用shutdown

-c 取消前一個關機命令

-h 關機

-r 重啟

服務器不能關機 只能重啟 謹記

halt

poweroff  相當于直接斷電  比較危險

init 0

上面3個命令也可以關機

reboot重啟

init 6也可以重啟

系統運行級別:表示linux啟動時候可以進入的級別號

0 關機

1 單用戶      類似win啟動f8安全模式,啟動最小服務,啟動最小核心程式,用戶修復系統,只能root登陸,沒有圖形界面和win安全模式不一樣

2 不完全多用戶,不含nfs服務    nfs驗證機制弱,不建議用這個檔案共享

3 完全多用戶

4 未分配

5 圖形界面

6 重啟

cat /etc/inittab 是init的組態檔  別改0或6   改錯就不好了

X11代表圖形界面 X表示X-window

runlevel 查詢系統運行級別

logout 注銷  做完操作一定要退出  防止安全隱患

4 Vim文本編輯器

vim是vi的增強版

vim是功能非常強大的全螢屏文本編輯器,是linux/unix中最常用的編輯器

vim沒有選單只有命令

命令模式

插入模式  iao進入 esc退出

編輯模式   輸入: 進入編輯模式 命令以回車結束    :set nu 顯示行號   :wq保存退出

插入命令

a 在后面插入

A 在行尾插入

i 在前面插入

I 在行首插入

o 在下行插入

O 在上行插入

定位命令:

:set nu 顯示行號

:set nonu 取消行號

gg 到第一行

G 到最后一行

nG 到第n行

:n 到第n行

$ 移到行尾

0 移到行首

洗掉命令:

x 洗掉游標出字符

nx 洗掉游標所在處后n字符

dd 洗掉當前行

dG 洗掉游標所在行到檔案尾

D 洗掉游標所在處到檔案尾

:n1,n2d洗掉指定范圍行

復制和剪切命令:

yy 復制當前行

nyy 復制n行

dd 剪切當前行

ndd 剪切多行

p、P 粘貼到當前行下或者行上

替換和取消命令

r 替換單個字符

R 多個字符替換,esc結束

u 取消上一步操作  undo

搜索和搜索替換命令:

/string   搜索字串 搜索時候忽略大小寫:set ic 取消 :set noic       n下一個

:%s/old/new/g  全文替換    %s表示全文替換

:n1,n2s/old/new/g   范圍替換   g可以換c  表示需要詢問

不加g表示只對搜索字串的首次出現進行替換

保存退出命令:

:w 保存

:w new_filename 另存為

:wq 保存退出

ZZ 是:wq的快捷鍵

:q! 不保存退出

:wq! 強制保存退出 檔案所有者和root可以操作

匯入命令執行結果 :r !命令     :r 檔案名

定義快捷鍵  :map 快捷鍵 觸發命令

:map ^P I#<ESC>                ^P 是ctrl+v+p 來輸入 顏色不一樣 代表快捷鍵ctrl+p

連續注釋  :n1,n2s/^/#/g

:n1,n2s/^#//g

:n1,n2s/^/\/\//g  避免轉義符  可以用#或者其他字符來表示分割

ls是別名  \ls 轉義符可以使用ls本來命令

自動替換  :ab mymail [email protected]

這些設定重啟失效  要永久生效 要寫入對應用戶的home目錄下的vim組態檔 /root/.vimrc   這里面只能放編輯模式的命令  不用加:

5 軟體包管理

軟體包分類:

原始碼包(看到原始碼 安裝慢 但是更加穩定執行效率高 系統高度適配 卸載方便 可以自由選擇所需功能,安裝步驟多,編輯時間長,安裝一旦報錯新手工解決)

      >腳本安裝包  特殊的原始碼包 一般是install.sh安裝 給初學者用的

二進制包(經過編譯 安裝快 資源利用率稍低 包管理簡單  原始碼不可見 功能選擇不如原始碼包靈活 依賴性):rpm包、系統默認包

rpm命令管理

httpd-2.2.15-15.el6.centos.l.i686.rpm

軟體包名  軟體版本 軟體發布次數 適合的linux平臺 適合的硬體平臺  noarch表示適合任何硬體平臺  沒寫linux平臺表示適用所有linux平臺

包名 安裝過的 /var/lib/rpm/中的資料庫

包全名 未安裝過的  絕對路徑

rpm包依賴性

典型的是樹形依賴  a->b->c

環形依賴 a->b->c->a   abc用一條命令安裝可以解決

模塊依賴   模塊依賴查詢網站 www.rpmfind.net

1.安裝軟體:執行rpm -ivh rpm包名,如:

#rpm -ivh apache-1.3.6.i386.rpm     -i  install 安裝   -v 詳細  -h  顯示進度   –nodeps 不檢測依賴性,一般不用

2.升級軟體:執行rpm -Uvh rpm包名,

3.反安裝:執行rpm -e rpm包名,

4.查詢軟體包的詳細資訊:執行rpm -qpi rpm包名    可以查未安裝的包

5.查詢某個檔案是屬于那個rpm包的:執行rpm -qf rpm包名

6.查該軟體包會向系統里面寫入哪些檔案:執行 rpm -qpl rpm包名

rpm -qa|grep

rpm -qi  包名

rpm -qf 檔案名

rpm -qRp 包名   查依賴

rpm -V 校驗

S 檔案大小是否改變

M 檔案的型別或權限是否被改變

5 MD5校驗是否改變

D 代碼是否改變

L 檔案路徑是否改變

U 檔案的屬主是否改變

G 檔案的屬組是否改變

T 檔案的修改時間是否改變

檔案型別:

c 組態檔

d 普通檔案

g ghost檔案,就是該檔案不應該被rpm包含,很少見

l 授權檔案

r 描述檔案

rpm包檔案提取:

rpm2cpio 包全名 | \                將rpm格式改為cpio格式

cpio -idv .檔案絕對路徑        i copy-in模式,還原      d還原時自動新建目錄   v詳細    cpio是一個標準工具,它用于創建軟體檔案檔案和從檔案檔案中提取檔案

yum在線管理

自動解決依賴性問題,不能上網 可以用光碟作為yum源

yum在redhat中需要收費

網路yum源 vi /etc/yum.repos.d/CentOS-Base.repo

[base] 容器名稱

name 容器說明,自己隨便寫

mirrorlist 鏡像站點 可以注釋掉

baseurl yum源服務器地址

enabled 是否有效  不寫默認是1 表示有效

gpgcheck  1表示rpm的數字證書生效

gpgkey 數字證書的公鑰檔案保存位置,不用修改

yum命令

yum list 查詢可用軟體包

yum search 包名     查詢

yum中沒有包全名概念,全用包名

yum install -y 包名   安裝包

yum -y update  包名    升級   如果沒寫包名就是全部升級包括內核  會導致服務器崩潰 因為需要本地配置些  慎用

yum -y remove 卸載   會把依賴的包也卸載  這些卸載的依賴包可能被別的軟體依賴  卸載命令不安全

安裝的時候最小化安裝   盡量不卸載  不全域升級

yum grouplist  查詢軟體組

yum groupinstall 軟體包組

yum groupremove 軟體包組

光碟yum源搭建:

掛載

網路yum源失效   enable=0或者改名其他yum源檔案

修改 CentOS-Media.repo  enable=1 地址改為file:///mnt/cdrom

原始碼包安裝是人為手工指定安裝位置  而rpm是默認位置

rpm默認安裝位置

/etc/ 組態檔安裝目錄

/usr/bin 可執行檔案安裝位置

/usr/lib  庫檔案位置

/usr/share/doc 手冊位置

/usr/share/man 幫助檔案位置

原始碼包一般安裝在  /usr/local/軟體名   這是系統給準備的第三方軟體位置

安裝位置不同帶來的影響  服務的管理

rpm包安裝的服務可以用系統服務管理命令service來管理,例如rpm包安裝的apache啟動方法/etc/rc.d/init.d/httpd start   或 service httpd start

service 命令是紅帽專有命令  別的linux發行版不一定有

service命令不能管理原始碼包安裝的服務

原始碼安裝:

需要gcc編譯器

下載原始碼包

解壓 進入目錄

./configure  –prefix=/usr/local/apache2       定制功能、檢測系統環境是否符合、將定義的功能和檢測的資訊寫入Makefile檔案,用戶后續的編輯

make && make install    編譯  編譯安裝           make clean

報錯:安裝停止且出現warning、error、no等提示

腳本安裝:

自動安裝的原始碼包  適合新手 下一步下一步那種

debian系列中apt是apt-get、apt-cache、apt-config的集合

apt 命令    取代的命令    命令的功能
apt install    apt-get install    安裝軟體包
apt remove    apt-get remove    移除軟體包
apt purge    apt-get purge    移除軟體包及組態檔
apt update    apt-get update    重繪存盤庫索引
apt upgrade    apt-get upgrade    升級所有可升級的軟體包
apt autoremove    apt-get autoremove    自動洗掉不需要的包
apt full-upgrade    apt-get dist-upgrade    在升級軟體包時自動處理依賴關系
apt search    apt-cache search    搜索應用程式
apt show    apt-cache show    顯示安裝細節

當然也有apt獨有的命令

新的apt命令    命令的功能
apt list    列出包含條件的包(已安裝,可升級等)
apt edit-sources    編輯源串列

6 用戶和用戶組管理

相關組態檔

/etc/passwd   用戶資訊檔案   7個欄位

用戶名 密碼標志x表示有密碼 如果沒有的話 不校驗密碼登陸不過只能本機登陸 不能遠程

UID 0:超級用戶 1-499 系統用戶(偽用戶 不能登陸不能洗掉) 500-65535 普通用戶

root不一定是管理員  uid=0的一定是管理員  普通用戶改為uid0就變成管理員了

GID:初始組id

用戶說明

家目錄

登陸之后的shell

初始組:有且只有一個一般和用戶名相同   能改 但是不推薦改

附加組:可以有多個

影子檔案 /etc/shadow    權限000      9個欄位

用戶:

密文密碼sha512散列加密 比之前的md5更安全(同一個密碼加密出來的也不一樣)如果!!或者*表示沒有密碼表示不能登陸:

密碼最后一次修改日期  時間戳  1970年1月1日 沒過1天 加1算出來的時間戳

兩次密碼的修改間隔

密碼有效期

密碼到期前的告警天數

密碼到期后的寬限天數 0表示過期后立即失效 -1表示密碼永遠不失效

賬號失效時間 時間戳表示

保留

時間戳換算

date -d “1970-01-01 16066 days”

echo $(($(date–date=”2014/01/06″+%s)/86400+1))

組資訊檔案/etc/group

組名

組密碼標志

GID

組中附加用戶

添加用戶會生成一個同名組作為用戶主組

/etc/gshadow 組名 組密碼 組管理員用戶名 組中附加用戶

用戶的郵箱

/var/spool/mail/用戶名/

用戶模板目錄

/etc/skel/

用戶管理命令

useradd 選項 用戶名

-u UID? 手工指定uid

-d 家目錄

-c 用戶說明

-g 組名

-G 附加組

-s shell

用戶默認值檔案/etc/default/useradd

GROUP=100  #用戶默認組            公有模式  私有模式

HOME=/home #用戶家目錄

INACTIVE=-1 #密碼寬限天數(shadow檔案7欄位)

EXPIRE=       #密碼失效時間(8)

SHELL=/bin/bash #默認shell

SKEL=/etc/skel  #模板目錄

CREATE_MAIL_SPOOL=yes  #是否建立郵箱

/etc/login.defs 定義了shadow檔案中7 8欄位之外的欄位

PASS_MAX_DAYS 9999    #  5欄位

PASS_MIN_DAYS              # 4

PASS_MIN_LEN 5???#最小8位 這個5 沒用 現在pam檔案生效

PASS_WAR_AGE 7         #6

UID_MIN   500

UID_MAX 60000

ENCRYPT_METHOD    SHA512

添加用戶默認值都靠上面兩個檔案

passwd命令

-S 查詢用戶密碼狀態 僅root可用

-l 暫時鎖定用戶 僅root    shadow檔案密碼暗文前面加雙!!

-u 解鎖用戶  僅root

–stdin 可通過管道符輸出的資料作為用戶的密碼

echo “123” | passwd –stdin lamp   一般用與shell編程

whoami

usermod  修改用戶資訊

-u  修改uid

-c 說明  有空格用雙引號

-G 加入附加組

-L  鎖定

-U  解鎖

chage 修改用戶密碼狀態

-l 列出用戶的詳細密碼狀態

-d 日期:修改密碼最后一次更改日期(shadow 3欄位)

-m 天數: 兩次密碼修改間隔(4欄位)

-M 天數: 密碼有效期(5欄位)

-W 天數: 密碼過期前警告天數(6欄位)

-I 天數: 密碼過期后寬限天數(7欄位)

-E 日期: 賬號失效是加(8欄位)

chage -d 0 king  要求用戶一登陸必須改密碼 其他的基本都不用記  直接修改shadow檔案更直觀

userdel命令  洗掉用戶

-r 同時洗掉家目錄

手工洗掉用戶

vi /etc/passwd

vi /etc/shadow

vi /etc/group

vi /etc/gshadow

rm -rf /var/spool/mail/lamp

rm -rf /home/lamp

id user1  查看用戶資訊

su 切換用戶

– 選項表示同時切換環境變數   su root   和su – root    env命令可以查看環境變數

-c 僅執行一次命令 不切換身份  su – root -c “useradd user3”

groupadd 添加組

-g GID  指定組id

groupmod 修改組

-g GID                    改組id

-n 新組名               改組名

groupdel 洗掉組

如果組中有用戶,組中有初始用戶 不能刪,如果是附加組 可以洗掉

gpasswd 把用戶添加組或者從組中移除

-a  用戶名

-d 用戶名

7 權限管理

ACL權限  解決身份不足問題  所有者所屬組其他人  不夠用

查看磁區ACL權限是否開啟

dumpe2fs -h /dev/sda1   默認支持acl   Default mount options:    user_xattr acl

-h 僅顯示超級塊中資訊,而不顯示磁盤組的詳細資訊

臨時開啟磁區ACL權限

mount -o remount,acl /    #重新掛載根磁區,并掛載加入acl權限

永久開啟ACL

vi /etc/fstab 檔案  系統開機自動掛載   寫錯了的話 系統可能崩潰  一定小心

defaults,acl    萬一默認不支持 后面,acl   重啟生效

查看acl命令

getfacl 檔案名   不支持絕對路徑 報錯但是不影響

設定acl權限

setfacl命令

-m  設定ACL

-x   洗掉指定ACL

-b 洗掉所有acl

-d 設定默認acl

-k 洗掉默認acl

-R 遞回設定acl

chown root:tgroup /project

chmod 770 /project

setfacl -m u:st:rx /project   u表示用戶 g表示組

給用戶st賦予r-x權限,u:用戶名:權限

setfacl -m g:group2:rx /project

drwxr-xr-x+  2 root root      4096 Sep  6 11:41 king    多個+號表示有acl權限

最大有效權限mask

如果給用戶賦予了acl權限,是需要和mask的權限相與才能得到真正權限

不影響所有者的權限 但是影響acl和所屬組的權限

setfacl -m m:rx  檔案名  設定mask

setfacl -b 檔案

setfacl -x g:tgroup2 /project/

遞回acl權限  -R選項 注意只能放后面     老的檔案都要遞回設定下

默認acl權限  如果給父目錄設定了默認ACL權限,那么父目錄中所有新建的子檔案都會,只針對新檔案  -R可以不取消

setfactl -m d:u:用戶名:權限 檔案名

檔案特殊權限

SetUID的功能:(危險)

只有可以執行的二進制程式才可以設定SUID權限

命令執行者要對該程式有x權限

命令執行者在執行該程式時獲得該程式檔案的屬主的身份(在執行程式的程序中靈魂附體為檔案的屬主)

SetUID權限只在該程式執行程序中有效,也就是說身份改變只在程式執行程序中有效

passwd命令有SUID權限  在執行期間可暫時獲得root身份得以改寫shadow檔案

-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

cat沒有SUID權限,所以普通用戶不能查看/etc/shadow檔案內容

設定方法 4代表SUID

chmod 4755 檔案

chmod u+s 檔案名

用戶必須對他有執行權限,否則顯示大寫S,表示報錯

危險的SUID權限,系統一些SUID權限的是迫不得已,輕易不能設定,并且定期巡檢

比如給vim加SUID權限,那么普通用戶,紅色表示危險,系統警告,然后vim普通用戶也能改系統關鍵資訊比如shadow檔案等

SGID也可以針對目錄:(不那么危險)(用處不大)

普通用戶必須對此目錄有rx權限,才能進入此目錄

普通用戶在此目錄中的有效組會變成此目錄的屬組

若普通用戶對目錄有w權限時候,新建的檔案的默認屬組是這個目錄的屬組

SGID針對檔案:(危險)

只有二進制可執行檔案可以設定SGID

命令執行者要有x權限

命令執行時候組身份升級為該程式屬組

只在執行程式時候有效

locate命令就是這樣的 有SGID權限    臨時提升為slocate用戶組

/var/lib/mlocate/mlocate.db資料庫

SGID  在所屬組中有s權限   2代表

chmod 2755 檔案

chmod g+s 檔案名

SBIT權限   黏著位權限  對root無效(不危險)

只對目錄有效

普通母對該目錄有wx權限,即普通用戶可以在此目錄擁有寫入權限

如果沒有黏著位,因為木桶用戶有w權限,所以可以洗掉此目錄下所有檔案,包括其他用戶建立的檔案,一旦賦予黏著位,除了root可以洗掉所有檔案,普通用戶就算擁有w權限,也只能洗掉自己建立的檔案,不能洗掉其他用戶建立的檔案

chmod 1755 目錄

chmod o+t 目錄

chmod 7755 檔案  特殊權限位 7沒有作用 根據需要賦予

檔案系統屬性chattr權限:     對root也能限制

chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files…

+-=權限

i:針對檔案,那么不允許對檔案洗掉改名,也不能添加和修改資料 相當于鎖起來了;針對目錄,那么只能修改目錄下檔案的資料 單不允許建立和洗掉檔案

a:針對檔案,那么只能在檔案中增加資料,但是不能洗掉也不能修改資料;針對目錄,那么只能在目錄中建立和修改檔案,不能洗掉檔案

lsattr命令: 檔案系統屬性查看 -a -d

這也不能限制到root 只是防止誤操作

selinux可以限制root

sudo權限   su指的是switch user,并不是super do

root把本來只能超級用戶執行的命令賦予普通用戶執行

sudo的物件是系統命令

visudo   #實際修改的是/etc/sudoers檔案

root  ALL=(ALL)  ALL

用戶或者組(%組名)    被管理的主機=(可使用的身份)   命令 (絕對路徑)

man 5 sudoers

8 檔案系統管理

磁區和檔案系統

主磁區:總共最多4個

擴展磁區:只能有1個,并且也算主磁區的一種,主磁區+擴展磁區最多4個,但是擴展磁區不能存盤資料和格式化,必須再劃分為邏輯磁區才能使用

邏輯磁區:邏輯磁區是在擴展磁區中劃分的,如果是IDE硬碟,linux最多支持59個邏輯磁區,入股歐式scsi硬碟linux最多支持11個邏輯磁區

邏輯磁區從sda5開始編號,就算主磁區不足4個,sd表示sata硬碟,hd表示ide硬碟,也就是第一個邏輯磁區一定是5

檔案系統:

ext2:是ext檔案系統升級版本,red hat linux 7.2版本以前系統默認都是ext2檔案系統,1993年發布,最大支持16TB的磁區和最大2TB的檔案

ext3:和ext2支持大小一樣,區別是支持日志功能

ext4(現在主流磁區):centos6以后的主流磁區,最大支持1EB和單個16TB檔案,在性能、伸縮性、可靠性方便大量改進,ext4的變化是翻天覆地的,向下兼容ext3,無限數量子目錄、extents連續資料塊概念、多塊分配、延遲分配、持久預分配、快速FSCK、日志校驗、無日志模式、在線碎片整理、inode增強、默認啟動barrier等

常用命令:

df 統計檔案系統的占用情況

-h 人性化顯示

du 統計目錄大小

du -sh /etc/

-h

-s 統計和

df和du統計根磁區不一樣大小,df是從檔案系統考慮,不僅考慮檔案占用的空間,還要統計唄命令或程式占用的空間(最常見的就是檔案已經洗掉但是程式并沒有釋放空間),定期重啟還原系統狀態

df看到的剩余空間才是真正的空間

du命令是面向檔案的,只會計算檔案或目錄占用的空間

fsck 檔案系統修復命令

-a 不用顯示用戶提示,自動修復檔案系統

-y 自動修復,和-a一致,不過有些系統只支持-y

該命令不需要人工執行,系統啟動的時候自動檢測,知道就好

dump2fs 顯示磁盤狀態命令,最主要是的看磁區資料塊大小和是否支持acl

mount 掛載命令

mount [-l] 查詢系統中已經掛載的設備,-l會顯示卷標名稱   這些輸出內容又叫超級塊的內容

mount -a 根據組態檔/etc/fstab的內容,自動掛載

命令格式

mount [-t 檔案系統] [-L 卷標名] [-o 特殊選項] 設備檔案名 掛載點

fat32識別vfat  fat16 識別fat

-t 檔案系統:加入檔案系統型別來指定掛載的型別,可以ext3,ext4,iso9660等檔案系統

-L 卷標名:掛載指定卷標的磁區,而不是安裝設備檔案名掛載    沒啥用處 起個別名的意思

-o 特殊選項:可以指定掛載的額外選項

atime/noatime  更新訪問時間/不更新訪問時間,訪問磁區檔案時,是否更新檔案的訪問時間,默認更新

async/sync      異步/同步,默認為異步

auto/noauto    自動/手動,mount -a命令執行時,是否會自動安裝/etc/fstab檔案內容掛載,默認為自動

defaults 定義默認值,相當于rw,suid,dev,exec,auto,nouser,async這7個選項

exec/noexec 執行/不執行,設定是否允許在檔案系統中執行可執行檔案,默認exec允許   有時候程式不能運行不一定是權限的事情

remount 重新掛載已掛載的檔案系統,一般用戶指定修改特殊權限     比較常用

rw/ro 讀寫/只讀,檔案系統掛載時,是否具有讀寫權限,默認是rw

suid/nosuid  具有/不具有SUID權限,設定檔案系統是否具有SUID和SGID的權限,默認是具有

user/nouser 允許/不允許普通用戶掛載,設定檔案系統是否允許普通用戶掛載,默認不允許只有root可以

usrquota  寫入代表檔案系統支持用戶磁盤配額,默認不支持

grpquota 寫入代表檔案系統支持組磁盤配額,默認不支持

umount 設備檔案名或者掛載點     –先卸載才能彈出光碟  真機器中不卸載     不能在光碟目錄中卸載會報錯正忙

掛載u盤

fdisk -l

mount -t vfat /dev/sdb1 /mnt/usb

linux默認不支持ntfs格式

如何支持ntfs格式 :手工編譯內核 將新的驅動加進來;下載ntfs-3g插件 http://www.tuxera.com/community/ntfs-3g-download

手工磁區fdisk

fdisk /dev/sdb

m 幫助

n 新建

l 顯示

d 洗掉

w 保存

partprobe命令重新讀取磁區表  有時候磁區表正在被占用需要重啟才能下一步,那就直接用這個命令   當做磁區之后必定執行的命令

+2G

格式化磁區

mkfs -t ext4 /dev/sdb1

然后創建掛載點掛載即可

自動掛載

/etc/fstab組態檔6個欄位

第一欄位:磁區設備檔案名或者UUID(硬碟通用唯一識別碼)  UUID防止磁區改順序 dumpe2fs -h /dev/sdb1能查到UUID

第二欄位:掛載點

第三欄位:磁區型別

第四欄位:掛載引數,和mount的掛載權限一致

第五欄位:指定磁區是否被dump備份,0代表不備份,1每天備份,2 不定期備份    lost+found是自動備份位置

第六欄位:指定磁區是否被fsck檢測,0代表不檢測,其他數字代表檢測的優先級,那么當然1的優先級比2高

如果弄錯,系統啟動崩潰 所以不應該先重啟 應該mount -a

如果崩潰  恢復   啟動時候輸入root密碼可以操作 不過根磁區是只讀的  remount下掛為讀寫 然后重新編輯這個檔案修復錯誤

mount -o remount,rw /

分配swap磁區

free命令  查看記憶體與swap磁區使用狀況  -m 以兆顯示  -h

cached(快取):是指把讀取出來的資料保存在記憶體當中,當再次讀取時,不用讀取硬碟而直接從記憶體中讀取,加速了資料的讀取程序

buffer(緩沖):是指在寫入資料時,先把分散的寫入操作保存到記憶體中,當達到一定程度再集中寫入硬碟,減少磁盤碎片和硬碟的反復尋道,加速了資料的寫入程序

fdisk /dev/sdb   建立個邏輯磁區  83標準磁區  t來改變磁區id 改為82 就是swap磁區   partprobe

格式化    mkswap /dev/sdb6

swapon /dev/sdb6  加入swap

swapoff /dev/sdb6  取消swap

swap開機自動掛載  /etc/fstab  和普通一樣 掛載點是swap

9 SHELL 基礎

Shell是一個命令列解釋器,它為用戶提供了一個向Linux內核發送請求以便運行程式的界面系統級程式,用戶可以用Shell來啟動掛起停止甚至撰寫一些程式,

硬體–>內核–>Shell–>外層應用程式

window圖形互動界面也是shell

Shell還是一個功能強大的編程語言,易撰寫,易除錯,靈活性較強,Shell是解釋執行的腳本語言,在Shell中可以直接呼叫Linux系統命令,

分類:Bourne Shell(linux識別為sh),C Shell(主要用在BSD版)

Shell的兩種主要語法型別:Bourne和C  兩個語法結構完全不同

Bourne家族主要包括:sh(單用戶模式用的是這個)、ksh、Bash(主流,和sh兼容)、psh、zsh

C家族主要:csh、tcsh

/etc/shells  可以查詢到系統支持哪些shell

Shell腳本的執行方式:

echo輸出命令   -e  支持反斜線控制的字符轉換

\\  輸出\本身

\a 輸出警告音

\b  退格鍵

\c  取消輸出行末的換行符,和“-n”選項一致

\e ESCAPE鍵

\f 換頁符

\n  換行符

\r 回車

\t 制表符  tab

\v 垂直制表符

\0nnn 按照8進制ASCII碼表輸出字符,其中0為數字0零,nnn是三位八進制數

\xhh 按照16進制ASCII碼表輸出字符,其中hh是兩位16進制數

echo -e “\e[1;31m abcd \e[0m”

\e[1;開啟顏色輸出

\e[0m關閉顏色輸出

30m=黑色  31m=紅色  32m=綠色 33m=黃色 34m=藍色 35m=洋紅 36m=青色 37m=白色

第一個腳本

vi hello.sh

#!/bin/bash                                         這不是注釋   不寫不影響運行 單要求必須寫

#The first program

#Author:king

echo -e “hello world”

sh hello.sh

cat -A顯示包括隱藏

win和linux的回車符不一樣

dos2unix來轉換檔案

bash基本功能

歷史命令和補全

歷史命令history -c 清空歷史命令 -w 把快取保存~/.bash_history  正常登陸退出才寫入

默認保存1000條 /etc/profile 可以更改

上下箭頭可以呼叫歷史命令    !n可以可以重復第n條命令  !!重復執行上一條命令   !字串 執行最后一條字串開頭的命令

ctrl+r 可以反查歷史命令

命令 檔案 目錄  都可以tab補全  多個的話 tab兩次列出可執行的

命令別名和常用快捷鍵

alias 別名=’原命令’

命令執行順序:

1.絕對路徑或者相對路徑

2.別名

3.bash內部命令

4 按照$PATH環境變數定義的目錄查找順序找到的第一個命令

unalias 別名     洗掉別名

永久別名生效.bashrc修改

bash常用快捷鍵:

ctrl+a  把游標移動到命令列開頭,如果我們輸入的命令過長

ctrl+e  把游標移動到命令列結尾

ctrl+c 強制終止當前命令

ctrl+l 清屏 相當于clear

ctrl+u 洗掉或者剪切游標之前的命令

ctrl+k 洗掉或者剪切游標之后的內容

ctrl+y 粘貼ctrl+u或者k的內容

ctrl+r 在歷史命令中搜索,命令反查

ctrl+d 退出當前終端

ctrl+z 暫停,并放入后臺,這個快捷鍵牽扯作業管理的內容

ctrl+s 暫停螢屏輸出

ctrl+q 恢復螢屏輸出

輸入輸出重定向:

標準輸入輸出:

設備  設備檔案名 檔案描述符 型別:

鍵盤 /dev/stdin  0  標準輸入

顯示幕 /dev/sdtout 1 標準輸出

顯示幕 /dev/sdterr 2 標準錯誤輸出

輸出重定向:

標準輸出重定向  命令>檔案  命令>>檔案           分別是覆寫和追加,把命令的輸出輸出到指定的檔案或設備中

標準錯誤輸出重定向  錯誤命令 2>檔案  錯誤命令 2>>檔案

正確輸出和錯誤輸出同時保存:

命令>檔案 2>&1

命令>>檔案 2>&1

命令 &>檔案

命令 &>>檔案    這四個命令都是把正確輸出和錯誤輸出放到同一個檔案

命令 >> 檔案1 2>> 檔案2   正確放1,錯誤放2

ls &>/dev/null   不管正確錯誤 只管執行就好

輸入重定向:用的不多 一般只給原始碼包打補丁時候用

wc [選項] [檔案名]

-c 統計位元組數

-w 統計單詞數

-l 統計行數

命令<檔案

命令<<符號   ,,,, 符號         常見的符號用EOF

多命令順序執行與管道符:

命令1 ; 命令2        多個命令順序執行,命令之間無任何邏輯聯系

命令1 && 命令2  當命令1執行正確,命令2才會執行,1執行錯誤 2不執行

命令1 || 命令2       當命令1執行不正確,則命令2才會執行  命令1執行正確,2就不執行

dd命令  磁盤對拷命令

dd if=輸入檔案 of=輸出檔案 bs=位元組數 count=個數

選項:if=輸入檔案 制定源檔案或源設備

of=輸出檔案      指定目標檔案或者目標設備

bs=位元組數      指定一次輸入/輸出多少位元組,即把這些位元組看做一個資料塊

count=個數  指定輸入/輸出多少個資料塊

例子:date;dd if=/dev/zero of=/root/testfile bs=1k count=100000;date  可以看命令執行多長時間

ls && echo yes

./configure && make && make install

命令 && echo yes || echo no

管道符  |

命令1 | 命令2

命令1的正確輸出作為命令2的操作物件

ll -a /etc/ | more

netstat -an |grep ESTABLISHED

命令1必須執行正確否則命令2不執行

grep -i 忽略大小寫 -n輸出行號 -v反向查找 –color=auto 搜索出的關鍵字用顏色顯示

通配符:

?  匹配一個任意字符

*    匹配0個或任意多個任意字符,也就是可以匹配任何內容

[]   匹配中括號中任意一個字符,[abc] a或者b或者c

[-]  匹配中括號中任意一個字符,-代表一個范圍,[a-z]代表匹配任意一個小寫字母

[^] 邏輯非,表示匹配不是中括號內的一個字符,[^0-9]代表匹配一個不是數字的字符

bash中其他特殊符號

” 單引號,在單引號中所有的特殊符號,如”$”、”"(反引號)都沒有特殊符號

"" 雙引號, 在雙引號中特殊符號都沒有特殊含義,但是"$"、"“和”\”是例外,擁”呼叫變數的值”、”參考命令”和”轉義符”的特殊含義

反引號,反引號括起來的內容是系統命令,在bash中會先執行他,和$()作用一樣,不過推薦使用$(),因為反引號很容易看錯

$() 和反引號一樣,用來參考系統命令

# 在shell腳本中 #開頭的行代表注釋

$ 用戶呼叫變數的值,如需要呼叫變數name的值,需要用$name的方式得到變數的值

\ 轉義符,跟在\后面的特殊符號將失去特殊含義,變為普通字符,如\$將輸出$符號,而不是當做變數參考

bash變數:

用戶自定義變數、

環境變數、

位置引數變數(這種變數主要是用來向腳本當中傳遞引數或資料的,變數名不能自定義,變數作用是固定的)(其實是預定義變數的一種,因為較多單獨分類)、

預定義變數(是bash中已經定義好的變數,不能自定義,變數作用也是固定的)

變數設定規則:

變數名稱可以由字母、數字、下劃線但是不能是數字開頭

bash中變數的默認型別都是字串型,如果要進行數值運算,則必指定變數型別為數值型

變數用等號連接值,等號左右兩側不能有空格

變數的值有空格,需要用單引號或者雙引號包括

在變數的值中,可以使用\轉義符

如果需要增加變數的值,那么可以進行變數值的疊加,不過變數需要用雙引號包含”$變數名”或用${變數名}包含

可以把命令結果賦予變數,用反引號或$()

環境變數名建議大寫,便于區分

本地變數  就是用戶自定義變數

變數定義 name=”king kong”

變數疊加  aa=123 aa=”$aa”456 aa=${aa}789

變數呼叫 echo $name

變數查看set

變數洗掉unset name

環境變數 :系統環境變數、自由定義的環境變數

用戶自定義變數又稱作本地變數,因為只在當前的shell中生效,而環境變數會在當前shell和這個shell的子shell中生效,如果把環境變數寫入相應的組態檔,那么這個環境變數就會在所有shell生效

設定  export 變數名=變數值   #申明變數

env     #查詢環境變數

unset 變數名  #洗掉變數

命令pstree 確定行程樹

PATH   :分割的一個個路徑,是用于系統查找命令的路徑

PATH變數疊加 PATH=”$PATH”:/root/sh

PS1 (嚴格來說不是環境變數不能用env查看只能用set 他是系統預留專門用作定義系統環境的變數 對系統有特殊含義)

定義系統提示符的變數

\d:顯示日期,格式為“星期 月 日”

\h:顯示簡寫主機名,如默認主機名“localhost”

\t:顯示24小時制時間,格式為“HH:MM:SS”

\T:顯示12小時制時間,格式為“HH:MM:SS”

\A:顯示24小時制時間,格式為“HH:MM”

\u:顯示當前用戶名

\w:顯示當前所在目錄的完整名稱

\W:顯示當前所在目錄的最后一個目錄

\#:執行的第幾個命令

\$:提示符,如果是root用戶為#普通用戶$

PS1='[\u@\t \w]\$’

位置引數變數:

$0 $1..0表示命令本身  1 2 表示1 2的引數,10以上用括號${10},用于從命令列傳遞引數到腳本中

$* 代表命令列所有引數,吧所有的引數看做一個整體

$@ 代表命令列所有引數,所有的引數區分對待

$# 代表命令列中所有引數的個數

$*和$@不是很常用 能看懂即可,可以在執行命令同時輸入引數

預定義變數:

$?  上一次命令的結果的回傳狀態   0正確執行  非0表示不正確執行  具體是哪個數字由寫命令的人決定

$$  當前行程的行程號PID

$!  后臺運行的最后一個行程的行程號PID

命令后跟&符號 放入后臺執行  類似window最小化視窗

接收鍵盤輸入(較位置引數變數更常用):

read [選項] [變數名]

-p “提示資訊”

-t 秒數   等待時間

-n 字符數    只接收指定的字符數,就會執行  (不加的話回車結束)

-s: 隱藏輸入的資料 適用于機密資訊

數值運算與運算子:

declare -p aa 可以查看變數屬性

-:給變數設定型別屬性

+:取消變數的型別屬性

-i 將變數生命為整數型(integer)

-x: 將變數生命為環境變數

-p:顯示變數的被宣告型別

數值運算

方法1:定義變數型別declare -i cc=$aa+$bb

方法2:expr或者let數值運算工具 dd=$(expr $aa + $bb)      +左右兩側空格不能省略

方法3(推薦):$((運算式))或者$[運算式]

運算子:

優先級(數值越高優先級越高)  運算子   說明

13       -,+??單目正,單目負

12  !,~       邏輯非、按位取反或補碼

11??*,/,%   乘,除,取模

10   +,-???加減

9???<<,>>??按位左移,按位右移

8  <=,>=,<,>?小于或等于、大于或等于、小于、大于

7        ==,!=???等于,不等于

6??&????按位與

5??^????按位異或

4??|???? 按位或

3     &&???邏輯與

2        ||????邏輯或

1     =,+=,-=,*=,/=,%=,&=,^=,|=,<<=,>>=  賦值、運算且賦值

可以用小括號改變優先級

變數測驗與內容替換:

image

通過判斷x得到y的情況

變數測驗是通過顯示x的值,判斷y的值;程式執行時用于判斷,可以用 if 判斷同樣實作

環境變陣列態檔:

source 組態檔

. 組態檔

強制讓組態檔直接生效  避免重登陸程序    .就是source的縮寫

環境變陣列態檔中主要是定義對系統的操作環境生效的系統默認環境變數,比如PATH,HISTSIZE,PS1,HOSTNAME等默認環境變數

/etc/profile

/etc/profile.d/*.sh

~/.bash_profile     –只對當前用戶生效 隱藏檔案

~/.bashrc

/etc/bashrc

image

/etc/profile的作用:

USER變數:

LOGNAME變數:

MAIL變數:

PATH變數:

HOSTNAME變數:

HISTSIZE變數:

umask:

呼叫/etc/profile.d/*.sh檔案

其他組態檔和登陸資訊:

注銷時生效的環境變陣列態檔 ~/.bash_logout

歷史命令~/.bash_history  是重要的配錯手段   給mysql設定密碼是明文放在這兒不安全  需要清空  其他情況不推薦清空

Shell登陸資訊   不要寫歡迎的,寫警告資訊比較好 法律問題

本地終端歡迎資訊:/etc/issue      \反斜杠

\d 顯示當前系統日期

\s 顯示作業系統名稱

\l 顯示登陸的終端號,比較常用

\m  顯示硬體體系結構,如i386,i686

\n 顯示主機名

\o  顯示域名

\r 顯示內核版本

\t  顯示當前系統時間

\u  顯示當前登陸用戶的序列號

alt+f1 f6切換6個登陸終端

遠程終端歡迎資訊:/etc/issue.net

轉義符在/etc/issue.net不能使用

是否顯示歡迎資訊,由ssh的組態檔/etc/ssh/sshd_config決定,假如”Banner /etc/issue.net”行才能顯示(記得重啟ssh服務)

登陸后歡迎資訊:/etc/motd   是登陸后的    之前兩個是登陸前的 不管遠程還是本地都生效

正則運算式:

基礎正則運算式:

grep、awk、sed等命令可以支持正則運算式,正則是包含匹配,在檔案中匹配符合條件的字串

通配符和正則在linux中有不小的區別 ,其他語言中大概是一致的, 通配符是完全匹配,ls、find、cp不認識正則,只識別shell自己的通配符

正則和通配符有些符號通用但是含義完全不同

元字符??????作用

*??前一個字符匹配0次或者任意多次

.??匹配除了換行符外任意一個字符

^??匹配行首,例如^hello會匹配以hello開頭的行

$??匹配行尾

[]      和通配符一樣,匹配中括號中指定的任意一個字符,只匹配一個字符,

[^]    匹配除中括號的字符以外的任意字符,如[^0-9]匹配任意一位非數字字符

\??轉義符

\{n\}  表示其前面的字符恰好出現n次,例如:[0-9]\{4\}匹配4位數字

\{n,\} 表示其前面的字符出現不小于n次,例如:[0-9]\{2,\}表示兩位及以上的數字

\{n,m\} 表示其前面的字符至少出現n次,最多出現m次

linux中() + ?是屬于擴展正則運算式,用的不多

字符截取命令:

cut:提取列   欄位提取命令  和grep結合使用  行列提取

-f  列號       :      提取第幾列

-d 分隔符:?指定分隔符   (默認制表符  而不要用空格)

cat /etc/passwd |grep /bin/bash|grep -v root|cut -d “:” -f 1

命令局限 分隔符不定的時候不好使

printf 格式化列印命令 常用在下面awk命令

printf ‘輸出型別輸出格式’ 輸出內容

%ns:輸出字串,n是數字指代輸出幾個字符

%ni:輸出整數,n是數字指代輸出幾個數字

%m.nf:輸出浮點數,m n是數字,指代整數位和小數位

輸出格式:

\a   輸出警告聲音

\b   輸出退格鍵

\f?清屏

\n?換行

\r?回車

\t?水平輸出退格鍵,也就是tab鍵

\v   垂直輸出退格鍵,也就是tab鍵

printf  ‘%s’ $(cat student.txt)   #不調整輸出格式

printf ‘%s\t %s\t %s\t %s\t %s\t %s\t  \n’ $(cat student.txt) #調整輸出格式

print命令會在每個輸出后加換行符,linux默認沒有這個命令

printf是標準格式輸出命令,并不會自動加入換行符,如果需要換行,需要手工加入換行符

awk:提取列   都不叫命令了 awk編程  相對復雜太多

awk ‘條件1{動作1}條件2{動作2}…’  檔案名

條件 (Pattern):

一般使用關系運算式作為條件

動作(Action):

格式化輸出

流程控制陳述句

awk ‘{printf  $2 “\t” $6 “\n”}’ student.txt

df -h|awk ‘{print $1 “\t” $3}’

print在awk內部默認是有的,在linux系統中默認沒有

awk默認是空格和制表符作為分隔符

BEGIN命令   awk ‘BEGIN{printf “This is a test\n”}{print $2} ‘ student.txt

FS內置變數 指定分隔符  awk ‘BEGIN{FS=”:”}{print $1 “\t” $3}’ /etc/passwd

END命令   所有資料讀取完后執行END動作

支持關系運算子

cat student.txt | grep -v Name | awk ‘$6 >= 87 {printf $2 “\n”}’

sed命令:是一種幾乎在所有unix平臺的輕量級流編輯器,主要是用來將資料進行選取替換洗掉新增的命令,可以用管道符接收資料

和vi不同的是,vi只能修改檔案

選項:

sed [選項] ‘[動作]’ 檔案名

-n 一般sed命令會把所有資料輸出到螢屏,如果加入此選項,則只會把經過sed命令處理的行輸出到螢屏

-e  允許應用多條sed命令編輯 多個動作之間用;分割

-i  同時更新源資料

動作:

不加行號表示整個檔案

a \:?追加,在當前行后添加一行或多行,添加多行時,除最后一行外,每行行尾需要用”\”代表資料未完結,

c \:?行替換,用c后面的字串替換原資料行,替換多行時,除最后一行外,每行行尾需要用”\”代表資料未完結,

i \:?插入,在當期行前插入一行或者多行,插入多行時,除最后一行外,每行行尾需要用”\”代表資料未完結,

d:?洗掉,洗掉指定行

p:?列印,輸出指定的行

s:?字符替換,格式為”行范圍s/舊字串/新字串/g” 類似vi中的替換

sed ‘2p’ student.txt

sed -n ‘2p’ student.txt

df -h|sed -n ‘2p’

sed ‘2,4d’ student.txt

sed ‘2a hello’ student.txt

sed ‘2i hello \

word’ student.txt

sed ‘2c no such person’ student.txt

字符處理命令:

排序命令sort  可從管道符接收

sort [選項] 檔案名

-f 忽略大小寫

-n   以數值型排序,默認使用字串型排序

-r    反序

-t?指定分隔符,默認是制表符

-k n,[m]   按照指定的欄位范圍排序,從第n欄位開始,m欄位結束(默認到行尾)

sort /etc/passwd

sort -r /etc/passwd

sort -t “:” -k 3,3 /etc/passwd

sort -n -t “:” -k 3,3 /etc/passwd

統計命令wc   可從管道符接收

-l:只統計行數

-w:只統計單詞數

-m:只統計字符數

條件判斷:

按照檔案型別進行判斷:

LINUX中的七種檔案型別

d 目錄檔案,

l 符號鏈接(指向另一個檔案,類似于瘟下的快捷方式),

s 套接字檔案,

b 塊設備檔案,二進制檔案,

c 字符設備檔案,

p 命名管道檔案,

– 普通檔案,或更準確地說,不屬于以上幾種型別的檔案

image

-d -e -f 這三個最常用

兩種判斷格式

test -e /root/install.log

[ -e /root/install.log ] 前后有空格

echo $?判斷命令執行狀態  或者  [ -d /root ] && echo “yes” || echo “no”

按照檔案權限進行判斷:

image

不會分那么細  只有所有者所屬組其他人有一個人有寫權限  就認為真

兩個檔案之間進行比較:

測驗選項  作用

檔案1 -nt 檔案2???判斷檔案1的修改時間是否比檔案2的新,如果新則真

檔案1 -ot 檔案2  判斷檔案1的修改時間是否比檔案2的舊,如果舊則true

檔案1 -ef 檔案2  判斷檔案1是否和檔案2的inode號一致,可以判斷是否為同一檔案,判斷硬鏈接是很好的辦法

兩個整數之間比較

測驗選項?????作用

整數1 -eq  整數2     相等則true

整數1 -ne  整數2?不相等則true

整數1 -gt  整數2     大于則true

整數1 -lt  整數2??小于則true

整數1 -ge  整數2      大于等于

整數1 -le  整數2??小于等于

字串比較:

-z 字串     空則true

-n 字串??非空則true

字串1 == 字串2   等等則true

字串1 != 字串2?不等則true

多重判斷:

判斷1 -a 判斷2???邏輯與

判斷1 -o 判斷2?? 邏輯或

! 判斷                         邏輯非    注意有空格

流程控制if陳述句:

1、單分支if條件陳述句

if [ 條件判斷 ]; then

程式

fi

或者

if [ 條件判斷 ]

then

程式

fi

注意點:if陳述句使用fi結尾,和一般語言使用大括號結尾不同

[ 條件判斷 ] 空格不能省略

then后面跟符合條件之后執行的程式,可以放在[]之后要用;分割,也可以換行寫入就不需要;了

例子:判斷磁區使用率

#!/bin/bash

#統計根磁區使用率

#Author:king

rate=$(df -h | grep “/dev/mapper/centos-root” | awk ‘{print $5}’ | cut -d “%” -f1)

#把根磁區使用率作為變數賦值給變數rate

if [ $rate -ge 80 ]

  then

    echo “warning! root si full”

fi

10 服務管理


image


啟動與自啟動

查詢已安裝的服務

rpm包安裝的服務

chkconfig –list  #查看服務自啟動狀態可以看到所有rpm包安裝的服務

ps aux    查看行程

netstat -tlun  查看埠

原始碼包安裝的服務 查看服務安裝位置 一般是/usr/local/下

rmp包安裝在默認位置/etc    /etc/rc.d/init.d/

rpm 獨立服務的管理:

/etc/init.d/     獨立服務的啟動腳本     /etc/rc.d/init.d/是一個 鏈接

/etc/sysconfig/?初始化環境組態檔位置

/etc/?組態檔位置

/etc/xinetd.d/?基于xinetd服務的啟動腳本

/var/lib/?服務產生的資料放在這里

/var/log 日志

獨立服務的啟動 /etc/init.d/獨立服務名 start|stop|status|restart

service 獨立服務名 start|stop|status|restart      #紅帽專有命令

獨立服務自啟動3中方法:

1:chkconfig –list

chkconfig –level 2345 httpd on                       #off

chkconfig httpd off #默認就是2345 可以省略

2:  vi /etc/rc.d/rc.local                     #系統啟動輸入賬戶密碼之前 所有程式啟動完之后  就執行這個檔案 環境變數是在輸入密碼之后,所以這個檔案中沒有環境變數,只能輸入絕對路徑, 把啟動標準命令放入  即可自啟動,推薦該方法

3:使用ntsysv命令管理自啟動     不僅可以管理獨立服務 也可以管理基于xinetd的服務,但是同樣不能管理原始碼包的服務(不推薦,是紅毛專有命令)

基于xinetd服務的管理:了解下 基本不常用

xinetd 超級守護行程  這個服務本身需要安裝   隨著linux版本,現在基于xinetd的服務越來越少,現在只有不太安全的telnet和少數其他的使用

yum -y install xinetd

yum -y install telnet-server

xinetd本身是常駐記憶體的服務

xinetd服務的啟動

vi /etc/xinetd.d/telnet

image

xinetd服務的自啟動

chkconfig telnet on

ntsysv

xinetd服務的啟動和自啟動是通用的 和獨立服務不一樣 ,這很反人類

原始碼包服務的管理:

啟動:使用絕對路徑啟動 不同服務的啟動腳本不同  查看安裝說明得知

自啟動:vi /etc/rc.d/rc.local

讓service命令能識別原始碼包服務

在/etc/init.d/中加入軟連接即可

讓原始碼包的服務能被chkconfig與ntsysv命令管理

image

chkconfig –add apache

雖然可以,但是不推薦這么干

image

11 系統管理

行程管理:

監控服務器  當服務器數量比較多的時候用

ps aux #查看系統中所有行程  使用BSD作業系統格式   a前臺行程 x后臺行程 u顯示命令是誰執行

ps -le #使用Linux標準命令格式

USER 用戶

PID  行程id

%CPU  占用cpu

%MEM  占用記憶體

VSZ  占用虛擬記憶體大小 kb

RSS 占用實際物理記憶體大小kb

TTY 終端,tty1-tty7本地終端 tty1-tty6是本地的字符界面終端,tty7是圖形終端 pts/0-255代表虛擬終端   ?表示內核直接產生的

STAT:行程狀態,常見狀態:R運行S睡眠T停止s包含子行程+位于后臺

START:行程啟動時間

TIME:該行程占用cpu的運算時間,注意不是系統時間

COMMAND 命令名

查看系統健康狀態 TOP

-d 秒數 指定更新秒數 默認3秒

在top命令的互動模式中可執行的命令:

?或h  顯示幫助

P?以cpu使用率排序,默認就是

M?以記憶體使用率排序

N 以PID排序

q 退出top

第一行資訊為任務佇列資訊

image

第二行為行程資訊

image

第三行為cpu資訊

image

第四行為物理記憶體

image

第五行是交換磁區

image

記憶體空閑率 cpu負載和系統壓力這三個是重要指標

查看行程樹

pstree

-p 顯示行程pid

-u 顯示行程所屬用戶

行程終止:

kill -l  #查看可用的行程信號

常用的 1 9 15

image

kill pid  默認是15

kill -1 2332 #重啟行程

kill -9  2332  #強制終止

killall [選項][信號] 行程名

#按照名稱殺死行程

-i  互動式

-I 忽略大小寫

pkill  [選項][信號] 行程名               不是標準終止命令

#按照行程名終止行程  和killall一樣

-t 終端號:按照終端號提出用戶

pkill -9 -t tty1

作業管理:

把程式放入后臺    win中最小化就是放入后臺

tar -zcf etc.tar.gz /etc  &     #命令后加&放入后臺

ctrl+z放入后臺暫停

查看后臺作業

jobs [-l]

-l 顯示job的pid

+表示最近一個放入后臺的作業,也是作業恢復時,默認恢復的作業,-表示倒數第二個放入后臺的job

將后臺暫停的作業恢復到前臺執行

fg %作業號

%作業號:%可以省略但是注意作業號和pid區別

將后臺暫停的作業恢復到后臺執行

bg %作業號

top恢復到后臺還是stop狀態  因為這個命令必須和前臺互動

后臺恢復執行的命令,是不能和前臺有互動的,否則不能恢復到后天執行

系統資源查看:

vmstat命令監控系統資源

vmstat [重繪延時 重繪次數]

如:vmstat 1 3

dmesg開機時內核檢測資訊

dmesg | grep CPU

free 查看記憶體使用狀態

-b -k -m -g

cache加速讀取  快取

buffer加速吸入 緩沖

查看cpu資訊

cat /proc/cpuinfo

uptime

實際是top w命令的第一行

查看系統與內核相關資訊:

uname [選項]

-a 查看系統所有相關資訊

-r 查看內核版本

-s 查看內核名稱

file /bin/ls    #判斷當前系統位數    linux沒有直接命令查看位數命令   隨便file一個外部命令即可

查看當前系統發行版

lsb_release -a

列出行程打開或者使用的檔案資訊

lsof [選項]

-c 字串:只列出以字串開頭的行程打開的檔案

-u 用戶名

-p pid

系統定時任務:

crond服務管理與訪問控制:service crond restart

chkconfig crond on

服務后面的d代表守護行程

crontab -e #進入crontab編輯界面,會打開vim編輯你的job

crontab -l

crontab -r

* * * * * command      #前面5個*代表日期

image

image

image


12 日志管理


centos6.x中日志服務已經由rsyslogd取代了原先的syslogd服務

rsyslogd的新特點:

基于TCP網路協議傳輸日志資訊;

更安全的網路傳輸方式;

有日志訊息的及時分析框架;

后臺資料庫;

組態檔中可以寫簡單的判斷邏輯

與syslog組態檔相兼容

確定服務啟動

ps aux|grep rsyslogd

chkconfig –list|grep rsyslog

image

image

除了系統默認日志,rpm安裝的系統服務也會默認把日志記錄在/var/log目錄(原始碼安裝的服務日志是在原始碼包指定的目錄中),不過這些日志不是由rsyslogd服務來記錄和管理,而是各個服務使用自己的日志管理檔案來記錄自身日志

常見的

image

rsyslogd日志服務:

基本日志格式包含四列:

時間產生的時間

主機名

服務名或程式名

時間的具體資訊

組態檔 /etc/rsyslog.conf

image

image

image

image

image

image

日志輪替:舊日志被新日志替換

日志檔案的命名規則:如果組態檔中擁有dateext引數,那么日志會用日期來作為日志檔案的后綴,例如 secure-20130605,這樣的話日志檔案名不會重疊,所以也就不需要日志檔案名的改名,只需要保存指定的日志個數,洗掉多余的日志檔案即可,

如果沒有dateext引數,那么日志檔案就需要改名了,當第一次進行日志輪替時,當前的secure日志會自動改名為secure.1等,以此類推,

大多數以第一種方法

logrotate   /etc/logrotate.conf

image

image

image

所有rpm包安裝的都會自動輪替,原始碼包安裝的要按照上面的方法加入輪替,實際上是變成了系統定時任務

logrotate命令

logrotate [選項] 組態檔名

如果此命令沒有選項,則會按照組態檔中的條件進行日志輪替

-v 顯示日志輪替程序

-f 強制進行日志輪替,不管輪替條件是否符合,強制組態檔中所有的日志進行輪替

13 啟動管理


系統運行級別:

image

runlevel 查看當前運行級別

init 運行級別     #改變運行級別  如果切換錯誤  運行級別也會改變 可以欺騙系統

系統默認運行級別  vim /etc/inittab            這個檔案在centos7中已經淘汰

id:3:initdefault:

系統啟動程序:

image

image

image

image

image

image

啟動引導程式Grub組態檔

image

vi /boot/grub/grub.conf 或者etc下目錄的軟連接

image

image

grub加密:

grub-md5-crypt  #生成加密密碼串   還是md5   用戶密碼是sha512

image

純字符界面解析度調整:

grep “CONFIG_FRAMEBUFFER_CONSOLE” /boot/config-2.6.32-279.el6.i686   #查詢內核是否支持修改解析度

image

image

image

有些不支持10進制 要改為16進制  redhat系列是支持10進制的

系統修復模式:

grub界面按b鍵進入單用戶模式:修復

遺忘root密碼

修改系統默認運行級別

光碟修復模式:理論可以修復一切問題

可以修復grub密碼

image

image

image

服務器安全指的是網路安全,如果你拿到了真實機器,那么就認為你有它所有權

14 備份與恢復


image

雞蛋不要放在同一個籃子

企業資料要異地備份

image

備份策略:

完全備份

增量備份

差異備份

image

image

image

目錄不支持增量備份

image

image

image

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/160497.html

標籤:Linux

上一篇:離線環境下自動化部署python環境(含openssl)

下一篇:linux命令實作在當前檔案夾下面模糊搜索檔案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more