linux系統基礎的優化以及常用命令

Bound_w發表於2018-12-27

編輯網路卡配置檔案

vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改配置引數
ONBOOT= yes
啟動或者關閉ip
systemctl restart/start/stop  network 

網路卡配置檔案詳解

網路配置檔案:
/etc/sysconfig/network

網路介面配置檔案:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 關聯的裝置名稱,要與檔名的後半部“INTERFACE_NAME”保持一致; 
BOOTPROTO={static|none|dhcp|bootp}: 引導協議;要使用靜態地址,使用static或none;dhcp表示使用DHCP伺服器獲取地址;
IPADDR=: IP地址
NETMASK=:子網掩碼
GATEWAY=:設定預設閘道器;
ONBOOT=:開機時是否自動啟用此網路介面;
HWADDR=: 硬體地址,要與硬體中的地址保持一致;可省;
USERCTL={yes|no}: 是否允許普通使用者控制此介面;
PEERDNS={yes|no}: 是否在BOOTPROTO為dhcp時接受由DHCP伺服器指定的DNS地址;

關閉啟動一塊網路卡

啟動/關閉一塊網路卡
ifup eth0
ifdown eth0

---
如果關閉網路卡,xshell會怎樣?

 

 ifconfig   /ip addr檢視網路卡的ip地址

直接輸入ifconfig會列出已經啟動的網路卡,也可以輸入ifconfig eth0單獨顯示eth0的資訊
各選項解釋是:
eth0    網路卡的代號 
lo        迴環地址loopback
inet    IPv4的Ip地址
netmask    子網掩碼
broadcast    廣播地址
RX/TX     流量發/收情況     tx是傳送(transport),rx是接收(receive)
packets     資料包數
errors     資料包錯誤數
dropped    資料包有問題被丟棄的數量
collisions    資料包碰撞情況,數值太多代表網路狀況差

 建立使用者和刪除使用者

建立:useradd 使用者名稱   存放使用者資訊到 /etc/passwd
刪除:userdel 使用者名稱   給指定使用者修改密碼。如果不指定使用者,修改當前登入的使用者的密碼

Linux的ID命令

id  root   檢視root的使用者id (uid)  以及組id(gid  gourp id )

/etc/passwd 存放使用者資訊
/etc/group  存放使用者組資訊
通過id命令檢視使用者資訊 

 使用者之前的切換

root使用者切換普通使用者不需要密碼,反之,需要密碼
使用  su - 使用者名稱   (-到使用者名稱之間有空格)  使用-代表完全切換,連同環境變數一同切換了
退出登入: logout exit

 

 有關xshell的快捷鍵

ctrl + l  清屏
ctrl + d  退出登入 
ctrl + shift + r  快速登入使用者管理  

使用者管理和檔案許可權

現代作業系統一般屬於多使用者的作業系統,也就是說,同一臺機器可以為多個使用者建立賬戶,一般這些使用者都是為普通使用者,這些普通使用者能同時登入這臺計算機,計算機對這些使用者分配一定的資源。
普通使用者在所分配到的資源內進行各自的操作,相互之間不受影響。但是這些普通使用者的許可權是有限制的,且使用者太多的話,管理就不便,從而引入root使用者。
此使用者是唯一的,且擁有系統的所有許可權。root使用者所在的組稱為root組。“組”是具有相似許可權的多個使用者的集合。

 root的權利

Linux系統的特性就是可以滿足多個使用者,同時工作,因此Linux系統必須具備很好的安全性。
在安裝RHEL7時設定的root管理員密碼,這個root管理員就是所有UNIX系統中的超級使用者,它擁有最高的系統所有權,能夠管理系統的各項功能,如新增/刪除使用者,啟動/關閉程式,開啟/禁用硬體裝置等等。
因此“能力越大,責任越大”,root許可權必須很好的掌握,否則一個錯誤的命令可能會摧毀整個系統。

root為什麼叫root?

在Linux系統中,使用者也有自己的UID身份賬號且唯一
系統管理員UID為0
系統使用者UID為1~999    Linux安裝的服務程式都會建立獨有的使用者負責執行。
普通使用者UID從1000開始:由管理員建立

使用者組GID

為了方便管理屬於同一組的使用者,Linux 系統中還引入了使用者組的概念。通過使用用 戶組號碼(GID,Group IDentification),我們可以把多個使用者加入到同一個組中,從而方 便為組中的使用者統一規劃許可權或指定任務。
假設有一個公司中有多個部門,每個部門中又 有很多員工。如果只想讓員工訪問本部門內的資源,則可以針對部門而非具體的員工來設 置許可權。
例如,可以通過對技術部門設定許可權,使得只有技術部門的員工可以訪問公司的 資料庫資訊等。
Linux管理員在建立使用者時,將自動建立一個與其同名的使用者組,這個使用者組只有該使用者一個人

$符號是普通使用者命令提示符,#是超級管理員的提示符

groupadd命令

group命令用於建立使用者組,為了更加高效的指派系統中各個使用者的許可權,在工作中常常新增幾個使用者到一個組裡面,這樣可以針對一類使用者安排許可權。
例如超哥以前在公司裡,就負責新增openLDAP使用者管理,偶爾臺灣,美國的同事去上海協作,我就得給他們新增到it部門組裡面,以至於他們有對伺服器操作的許可權。
groupadd it_dep

sudo命令

普通使用者許可權不夠的時候,使用sudo命令,sodu命令預設的身份是root,要在/etc/sudoers中配置普通使用者的許可權資訊,使用者使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。

語法:

sudo 【選項】【引數】
-b:在後臺執行指令;
-h:顯示幫助;
-H:將HOME環境變數設為新身份的HOME環境變數;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前使用者可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<使用者>:以指定的使用者作為新的身份。若不加上此引數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本資訊。

 

幾個栗子:

visudo 編輯sudoers檔案

寫入
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
chaoge  ALL=(ALL)       ALL   #允許chaoge在任何地方,執行任何命令

 

檔案和目錄許可權

Linux許可權的目的是(保護賬戶的資料)

Linux許可權主要依據三種身份來決定:

  • user/owner 檔案使用者,檔案屬於哪個使用者
  • group 屬組,檔案屬於哪個組
  • others 既不是user,也不再group,就是other,其他人

什麼是許可權?

在lLinux中,每個檔案都有自己的所屬者,和所屬組,以及組以外的人對檔案的可讀可寫可執行等許可權。

對於目錄的許可權來說,可讀是讀取目錄檔案列表,可寫是表示在目錄內新增,修改,刪除檔案。可執行表示可以進入目錄

Linux許可權的觀察

使用下面命令檢視許可權

ls - l

  

解讀上圖:

  1. 許可權,第一個字母為檔案型別,後續9個字母,每3個一組,是三種身份的許可權
  2. 檔案連結數
  3. 檔案擁有者-屬主
  4. 檔案擁有組-屬組
  5. 檔案大小
  6. 最後一次被修改的時間日期
  7. 檔名 

先來分析一下檔案的型別

-    一般檔案
d    資料夾
l    軟連線(快捷方式)
b    塊裝置,儲存媒體檔案為主
c    代表鍵盤,滑鼠等裝置

許可權和數字之間的轉化

每個許可權都有所有者,所屬組,以及其他使用者,他們都對應著各自的許可權,如果他們都有許可權的話,那分別是777,777,777

檢視使用者的許可權命令

id  root

 

修改檔案許可權屬性

注意:普通使用者只能修改自己的檔名,時間,以及許可權,修改其他使用者許可權的時候,只能使用root使用者

1.修改屬主為root,使用chown命令

chown root pyyu.txt 

 

檢視許可權資訊

[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt 
-rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt

 

2,修改屬組,使用chgrp命令

[root@oldboy_python /tmp 16:43:42]#ll pyyu.txt 
-rw-rw-r-- 1 root pyyu 0 8月  11 16:41 pyyu.txt
[root@oldboy_python /tmp 16:44:59]#chgrp root pyyu.txt 
[root@oldboy_python /tmp 16:45:51]#ll pyyu.txt 
-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt

 

檔案許可權

我們已知三種身份許可權(屬主,屬組,其他人),每種身份都有rwx的三種許可權,系統還提供了數字計算許可權。

r    read          4
w    write        2
x    execute     1

每種身份最低是0分,最高是r+w+x 7分

因此三種身份,最高許可權是777,最低是000

-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
因此可知pyyu.txt的許可權是
屬主是6 r+w(4+2)
屬組是6 r+w(4+2)
其他人是4 r(4)

修改許可權的命令 使用chmod

chmod [身份]   [引數]   [檔案]
    u(user)   +(新增)  
    g(group)   -(減去)
    o(other)  =(賦值)
    a(all)

 

再舉個栗子

當前許可權
-rw-rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt
方法1
減去屬主的寫許可權
chmod u-w pyyu.txt
檢視許可權
-r--rw-r-- 1 root root 0 8月  11 16:41 pyyu.txt

方法2
屬主新增可讀可寫可執行許可權
chmod 700 pyyu.txt

屬主可讀可寫可執行
屬組可讀可執行
其他人可讀可執行
chmod 755 pyyu.txt

 

修改檔名,修改檔案,更改日期

mv pyyu.txt chaoge.txt
#觸控,修改時間
touch chaoge.txt

 

軟連線:也叫符號連結,相當於windows的快捷方式  使用 ln -s  目標檔案   軟連結名

ln -s 目標檔案  軟連線名

1.存在檔案/tmp/test.txt
[root@master tmp]# ls -l
-rw-r--r-- 1 root root     10 10月 15 21:23 test.txt

2.在/home目錄中建立軟連線,指向/tmp/test.txt檔案
ln -s /tmp/test.txt my_test

3.檢視軟連線資訊
lrwxrwxrwx 1 root root 13 10月 15 21:35 my_test -> /tmp/test.txt

4.通過軟連線檢視檔案
cat my_test

my_test只是/tmp/test.txt的一個別名,因此刪除my_test不會影響/tmp/test.txt,但是刪除了本尊,
快捷方式就無意義不存在了

PS1變數

Linux命令提示符使用PS1變數控制

引數:

[root@oldboy_python ~]# echo $PS1
[\u@\h \W]\$

可以自行調整全域性變數/etc/profile檔案用於永久生效 PS1='[\u@\h \W\t]\$'
\d  日期
\H  完整主機名
\h  主機名第一個名字
\t  時間24小時制HHMMSS
\T  時間12小時制
\A  時間24小時制HHMM
\u  當前使用者賬號名
\v  BASH的版本
\w  完整工作目錄
\W  利用basename取得工作目錄名
\#  下達的第幾個命令
\$  提示字元,root為#,普通使用者為$
PS1 > 變數名
$PS1 > 檢視變數內容
PS1=新內容 重新賦值

變數賦值,檢視
name='chaoge'
echo $name

PS1顯示ip地址
export PS1="[\u@\h `/sbin/ifconfig ens33 | sed -nr 's/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'` \w]\$"

 

Tar解壓命令  f引數一定要寫到最後

 tar 命令:用來壓縮和解壓檔案。tar本身不具有壓縮功能。他是呼叫壓縮功能實現的

 

語法:

壓縮檔案
tar -cf 壓縮檔名 想壓縮的內容
解壓檔案
tar -xf 壓縮檔名

引數:

tar(選項)(引數)
-A或--catenate:新增檔案到以存在的備份檔案;
-B:設定區塊大小;
-c或--create:建立新的備份檔案;
-C <目錄>:這個選項用在解壓縮,若要在特定目錄解壓縮,可以使用這個選項。
-d:記錄檔案的差別;
-x或--extract或--get:從備份檔案中還原檔案;
-t或--list:列出備份檔案的內容;
-z或--gzip或--ungzip:通過gzip指令處理備份檔案;
-Z或--compress或--uncompress:通過compress指令處理備份檔案;
-f<備份檔案>或--file=<備份檔案>:指定備份檔案;
-v或--verbose:顯示指令執行過程;
-r:新增檔案到已經壓縮的檔案;
-u:新增改變了和現有的檔案到已經存在的壓縮檔案;
-j:支援bzip2解壓檔案;
-v:顯示操作過程;
-l:檔案系統邊界設定;
-k:保留原有檔案不覆蓋;
-m:保留檔案不被覆蓋;
-w:確認壓縮檔案的正確性;
-p或--same-permissions:用原來的檔案許可權還原檔案;
-P或--absolute-names:檔名使用絕對名稱,不移除檔名稱前的“/”號;
-N <日期格式> 或 --newer=<日期時間>:只將較指定日期更新的檔案儲存到備份檔案裡;
--exclude=<範本樣式>:排除符合範本樣式的檔案。

 

netstat命令用來列印Linux系統中的網路狀態資訊,用來檢視Linux系統的網路狀況

語法:

netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-n或--numeric:直接使用ip地址,而不通過域名伺服器;
-l或--listening:顯示監控中的伺服器的Socket;
-p或--programs:顯示正在使用Socket的程式識別碼和程式名稱;
-a或--all:顯示所有連線中的Socket;

 

舉個 栗子

[root@oldboy_python ~ 10:21:59]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      814/sshd            
tcp6       0      0 :::111                  :::*                    LISTEN      2703/rpcbind        
tcp6       0      0 :::3306                 :::*                    LISTEN      29269/mysqld        
udp        0      0 0.0.0.0:758             0.0.0.0:*                           2703/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2703/rpcbind        
udp        0      0 10.141.32.137:123       0.0.0.0:*                           484/ntpd            
udp        0      0 127.0.0.1:123           0.0.0.0:*                           484/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           484/ntpd            
udp6       0      0 :::758                  :::*                                2703/rpcbind        
udp6       0      0 :::111                  :::*                                2703/rpcbind        
udp6       0      0 :::123                  :::*                                484/ntpd

 

ps命令用來檢視系統的程式狀態

引數:

ps  命令常用引數
-a     顯示所有程式
-u     使用者以及其他詳細資訊
-x    顯示沒有控制終端的程式

 

語法:

ps -ef|grep 檢視任務是否執行有程式
netstat -tunlp | grep 檢視任務的埠是否啟動

netstat -tunlp |grep 8000  過濾出 django的8000埠是否存活


netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線狀況;
-u或--udp:顯示UDP傳輸協議的連線狀況;
-n或--numeric:直接使用ip地址,而不通過域名伺服器;
-l或--listening:顯示監控中的伺服器的Socket;
-p或--programs:顯示正在使用Socket的程式識別碼和程式名稱;
-a或--all:顯示所有連線中的Socket;

ps 命令查詢程式 
ps -ef  |grep mysql 
ps -ef|grep  nginx 

 

kill命令用來刪除程式

-a:當處理當前程式時,不限制命令名和程式號的對應關係;
-l <資訊編號>:若不加<資訊編號>選項,則-l引數會列出全部的資訊名稱;
-p:指定kill 命令只列印相關程式的程式號,而不傳送任何訊號;
-s <資訊名稱或編號>:指定要送出的資訊;
-u:指定使用者。

只有第9種訊號(SIGKILL)才可以無條件終止程式,其他訊號程式都有權利忽略,下面是常用的訊號:

kill 命令 如果你kill一個程式,死活殺不死,就加上 -9
-9 強制終止訊號(危險命令) 強制殺死程式,以及程式相關的依賴

kill -9  uwsgi 

kill -9  mysqld 

 

 

 

HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強制終止
CONT 18 繼續(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)

例項:

先用ps查詢程式,然後用kill殺掉:
ps -ef | grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

kill 3268

 

iptables防火牆

centos7預設已經使用firewall作為防火牆了
1.關閉防火牆
systemctl status firewalld #檢視防火牆狀態
systemctl stop firewalld    #關閉防火牆
systemctl disable firewalld#關閉防火牆開機啟動
systemctl is-enabled firewalld.service#檢查防火牆是否啟動

 

Linux中文顯示設定(防止中文亂碼)

此項優化為可選項,根據個人情況選擇是否調整Linux系統的字符集,字符集就是一套文字元號以及編碼。

Linux下常用字符集有:

  • GBK  實際企業應用較少
  • UTF-8  廣泛支援,MYSQL也使用UTF-8,企業廣泛使用
#檢視系統當前字符集
echo $LANG
#檢查xshell crt的字符集
#命令修改字符集
export LANG=en_US.utf8
1.修改配置檔案/etc/locale.conf
LANG="zh_CN.UTF-8"
2.更改後檢視系統語言變數
locale

 

亂碼的核心解決辦法

1.系統字符集utf8
2.xshell字符集utf8
3.檔案字符集一致zh_CN.UTF-8

 

df命令 用於顯示磁碟分割槽上的可使用的磁碟空間。預設顯示單位為KB。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。

語法
df(選項)(引數)
-h或--human-readable:以可讀性較高的方式來顯示資訊;
-k或--kilobytes:指定區塊大小為1024位元組;
-T或--print-type:顯示檔案系統的型別;
--help:顯示幫助;
--version:顯示版本資訊。
檢視系統磁碟裝置,預設是KB為單位:
df
使用-h選項以KB以上的單位來顯示,可讀性高:
df -h

tree命令以樹狀圖的形式列出目錄的內容

tree命令以樹狀圖列出目錄的內容。

-a:顯示所有檔案和目錄;
-A:使用ASNI繪圖字元顯示樹狀圖而非以ASCII字元組合;
-C:在檔案和目錄清單加上色彩,便於區分各種型別;
-d:先是目錄名稱而非內容;
-D:列出檔案或目錄的更改時間;
-f:在每個檔案或目錄之前,顯示完整的相對路徑名稱;
-F:在執行檔案,目錄,Socket,符號連線,管道名稱名稱,各自加上"*""/""@""|"號;
-g:列出檔案或目錄的所屬群組名稱,沒有對應的名稱時,則顯示群組識別碼;
-i:不以階梯狀列出檔案和目錄名稱;
-l:<範本樣式> 不顯示符號範本樣式的檔案或目錄名稱;
-l:如遇到性質為符號連線的目錄,直接列出該連線所指向的原始目錄;
-n:不在檔案和目錄清單加上色彩;
-N:直接列出檔案和目錄名稱,包括控制字元;
-p:列出許可權標示;
-P:<範本樣式> 只顯示符合範本樣式的檔案和目錄名稱;
-q:用“?”號取代控制字元,列出檔案和目錄名稱;
-s:列出檔案和目錄大小;
-t:用檔案和目錄的更改時間排序;
-u:列出檔案或目錄的擁有者名稱,沒有對應的名稱時,則顯示使用者識別碼;
-x:將範圍侷限在現行的檔案系統中,若指定目錄下的某些子目錄,其存放於另一個檔案系統上,則將該目錄予以排除在尋找範圍外。

tree引數

 

設定主機名

[root@yugo /tmp 11:04:42]#hostnamectl set-hostname pyyuc
[root@pyyuc ~ 11:05:12]#hostname
pyyuc

DNS  

全球資訊網上作為域名和IP地址相互對映的一個分散式資料庫,能夠使使用者更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。
通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。

1.檢視Linux的DNS

配置檔案
cat /etc/resolv.conf
#dns伺服器地址
nameserver 119.29.29.29
nameserver 223.5.5.5

 2.本地強制dns解析檔案/etc/hosts

指定本地解析:
/etc/hosts
主機IP    主機名    主機別名
127.0.0.1        www.pyyuc.cn  

 3.nslookup是常用域名查詢工具,就是查DNS資訊用的命令。

nslookup4有兩種工作模式,即“互動模式”和“非互動模式”。在“互動模式”下,使用者可以向域名伺服器查詢各類主機、域名的資訊,或者輸出域名中的主機列表。而在“非互動模式”下,使用者可以針對一個主機或域名僅僅獲取特定的名稱或所需資訊。

進入互動模式,直接輸入nslookup命令,不加任何引數,則直接進入互動模式,此時nslookup會連線到預設的域名伺服器(即/etc/resolv.conf的第一個dns地址)。或者輸入nslookup -nameserver/ip。進入非互動模式,就直接輸入nslookup 域名就可以了。

#解析
nslookup www.oldboyedu.com

計劃任務crond服務    路徑必須是絕對路徑

你每天是怎麼起床的?有的人有女朋友,,或是男朋友,,而我是被窮醒的,,,

什麼是計劃任務:
後臺執行,到了預定的時間就會自動執行的任務,前提是:事先手動將計劃任務設定好。這就用到了crond服務

crond服務相關的軟體包
[root@MiWiFi-R3-srv ~]# rpm -qa |grep cron
cronie-anacron-1.4.11-14.el7.x86_64
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-14.el7.x86_64

這些包在最小化安裝系統時就已經安裝了,並且會開機自啟動crond服務,併為我們提供好編寫計劃任務的crontab命令。

crontab命令被用來提交和管理使用者的需要週期性執行的任務,與windows下的計劃任務類似

語法

 
crontab (選項)(引數)
-e:編輯該使用者的計時器設定;
-l:列出該使用者的計時器設定;
-r:刪除該使用者的計時器設定;
-u<使用者名稱稱>:指定要設定計時器的使用者名稱稱。

存放定時任務的檔案
/var/spool/cron
 

注意:

1 檢視計劃任務的執行:tail -f /var/log/cron

2 寫計劃任務時,命令必須加上絕對路徑,否則會出現這種情況:從日誌中看,確實觸發了計劃任務的執行,但是命令卻沒有執行成功,比如* * * * * reboot就會出現這種情況,需要將reboot寫成/usr/sbin/reboot

3.  計劃任務執行的命令 是否存在,軟體是否安裝  

4. 確保crontab服務執行  

 

systemctl status cron

ps -ef|grep crond

5. 檢測crontab是否開機啟動

systemctl is-enabled crond

crontab配置檔案

 
在/etc目錄下有一個crontab檔案,這個就是系統任務排程的配置檔案
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
 分 時 日 月 周
 
 

crontab任務配置基本格式:
*        *        *      *      *          command
分鐘(0-59) 小時(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0代表星期天)  命令


第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令

  • 星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
  • 30 08 * * *  每天8.30去上班  
  • 逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
  • 中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
  • 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。
  • */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com  每隔三分鐘執行下時間同步

              

每天8.30上班
30 08 * * *  去上班
每天12下班回家睡覺
00 00 * * *   回家睡覺

 

舉個栗子

所有命令一定要用絕對路徑來寫!

#每分鐘執行一次命令
* * * * * 命令
#每小時的3,15分組執行命令
3,15 * * * * 命令
#在上午8-11點的第3和第15分鐘執行
3,15 8-11 * * * 命令
#每晚21:30執行命令
21 * * * 命令
#沒週六、日的1:30執行命令
1 * * 6,0 命令
#每週一到週五的凌晨1點,清空/tmp目錄的所有檔案
1 * * 1-5 /usr/bin/rm -rf /tmp/*
#每晚的21:30重啟nginx
21 * * * /opt/nginx/sbin/nginx -s reload
#每月的1,10,22日的4:45重啟nginx
4 1,1,10,22 * * /opt/nginx/sbin/nginx -s reload
#每個星期一的上午8點到11點的第3和15分鐘執行命令
3,15 8-11 * * 1 command

 

 

 

 

軟體包管理

軟體包是什麼

 

程式(軟體)組成部分:
    二進位制程式  可執行命令
    庫     .so檔案
    配置檔案    .conf
    幫助檔案    readme    /usr/share/man

 

windows程式

如圖

macos程式

 

 

軟體包顧名思義就是將應用程式、配置檔案和資料打包的產物,所有的linux發行版都採用了某種形式的軟體包系統,這使得linux軟體管理和在windows下一樣方便,suse、red hat、fedora等發行版都是用rpm包,Debian和Ubuntu則使用.deb格式的軟體包。

 

mysql-5-3-4.rpm
redis-3-4-3.rpm
nginx2-3-2.rpm

 

在早期系統運維中,安裝軟體是一件非常費事費力的事情。系統管理員不得不下載軟體原始碼編譯軟體,並且為了系統做各種調整。

儘管原始碼編譯形式的軟體增強了使用者定製的自由度,但是在小軟體上耗費精力是缺乏效率的,於是軟體包應運而生。

軟體包管理可以將管理員從無休止的相容問題中釋放。yum工具就可以自動搜尋依賴關係,並執行安裝。

RPM軟體包管理器

軟體包管理器核心功能

1.製作軟體包  .rpm
2.安裝、解除安裝、升級、查詢、校驗

  在 RPM(紅帽軟體包管理器)公佈之前,要想在 Linux 系統中安裝軟體只能採取原始碼包 的方式安裝。早期在 Linux 系統中安裝程式是一件非常困難、耗費耐心的事情,而且大多數 的服務程式僅僅提供原始碼,需要運維人員自行編譯程式碼並解決許多的軟體依賴關係,因此 要安裝好一個服務程式,運維人員需要具備豐富知識、高超的技能,甚至良好的耐心。而且在 安裝、升級、解除安裝服務程式時還要考慮到其他程式、庫的依賴關係,所以在進行校驗、安裝、 解除安裝、查詢、升級等管理軟體操作時難度都非常大。

RPM 機制則為解決這些問題而設計的。RPM 有點像 Windows 系統中的控制皮膚,會建 立統一的資料庫檔案,詳細記錄軟體資訊並能夠自動分析依賴關係。

例項

 
#現在要安裝mysql
#下載地址
https://dev.mysql.com/downloads/mysql/
安裝軟體的命令格式                rpm -ivh filename.rpm     # i表示安裝   v顯示詳細過程  h以進度條顯示
升級軟體的命令格式                rpm -Uvh filename.rpm
解除安裝軟體的命令格式                rpm -e filename.rpm
查詢軟體描述資訊的命令格式         rpm -qpi filename.rpm
列出軟體檔案資訊的命令格式         rpm -qpl filename.rpm
查詢檔案屬於哪個 RPM 的命令格式   rpm -qf filename
 

rpm安裝軟體

 
#下載軟體包
wget https://rpmfind.net/linux/centos/7.5.1804/os/x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
#安裝軟體包
[root@yugo /tmp 11:03:42]#rpm -ivh lrzsz-0.12.20-36.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:lrzsz-0.12.20-36.el7 ################################# [100%]
 

rpm查詢軟體

rpm -q lrzsz  #查詢lrzsz是否安裝
rpm -qi lrzsz #查詢lrzsz包的說明資訊
rpm -ql lrzsz #查詢lrzsz包生成的檔案列表
rpm -qc nginx  #查詢nginx安裝生成後的配置檔案路徑
rpm -qf /etc/nginx/fastcgi.conf  #檢視這個檔案由哪個rpm包安裝

 rpm升級軟體

rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級;否則,則安裝;
rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級;否則,退出;

rpm解除安裝軟體

rpm -e PACKAGE_NAME
需要手動解決依賴
不如 yum remove

rpm的依賴問題,因此不太好用

其一,難以刪除

 
[root@pyyuc /tmp 11:42:01]#rpm -e nginx
error: Failed dependencies:
    nginx is needed by (installed) nginx-mod-mail-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-perl-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-xslt-filter-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-image-filter-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-stream-1:1.12.2-2.el7.x86_64
    nginx is needed by (installed) nginx-mod-http-geoip-1:1.12.2-2.el7.x86_64
 

其二,難以安裝

 
[root@pyyuc /tmp 11:45:07]#rpm -ivh zsh-5.6.2-9.6.2.aarch64.rpm
warning: zsh-5.6.2-9.6.2.aarch64.rpm: Header V3 RSA/SHA256 Signature, key ID 3dbdc284: NOKEY
error: Failed dependencies:
    ld-linux-aarch64.so.1()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    ld-linux-aarch64.so.1(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libdl.so.2(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libm.so.6(GLIBC_2.17)(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libncursesw.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
    libtinfo.so.6()(64bit) is needed by zsh-5.6.2-9.6.2.aarch64
 

yum命令

yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟體包管理器,它可以使系統管理人員互動和自動化地更細與管理RPM軟體包,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

儘管 RPM 能夠幫助使用者查詢軟體相關的依賴關係,但問題還是要運維人員自己來解決, 而有些大型軟體可能與數十個程式都有依賴關係,在這種情況下安裝軟體會是非常痛苦的。 Yum 軟體倉庫便是為了進一步降低軟體安裝難度和複雜度而設計的技術。Yum 軟體倉庫可以 根據使用者的要求分析出所需軟體包及其相關的依賴關係,然後自動從伺服器下載軟體包並安 裝到系統。

Yum 軟體倉庫中的 RPM 軟體包可以是由紅帽官方釋出的,也可以是第三方釋出的,當 然也可以是自己編寫的。

 

 

對比windows下的軟體管理工具

yum提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。

 
yum(選項)(引數)
-h:顯示幫助資訊;
-y:對所有的提問都回答“yes”;
-c:指定配置檔案;
-q:安靜模式;
-v:詳細模式;
-d:設定除錯等級(0-10);
-e:設定錯誤等級(0-10);
-R:設定yum處理一個命令的最大等待時間;
-C:完全從快取中執行,而不去下載或者更新任何標頭檔案。
 

例項

部分常用的命令包括:

自動搜尋最快映象外掛    yum install yum-fastestmirror

yum源配置

什麼是yum源?

    • Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
    • 說到yum源就必須說到linux系統中特有的依賴關係問題,yum就是為了解決依賴關係而存在的。yum源就相當是一個目錄項,當我們使用yum機制安裝軟體時,若需要安裝依賴軟體,則yum機制就會根據在yum源中定義好的路徑查詢依賴軟體,並將依賴軟體安裝好。
    • YUM是“Yellow dog Updater, Modified”的縮寫,是一個軟體包管理器,YUM從指定的地方(相關網站的rpm包地址或本地的rpm路徑)自動下載RPM包並且安裝,能夠很好的解決依賴關係問題。
    • YUM的基本工作機制如下:
      伺服器端:在伺服器上面存放了所有的RPM軟體包,然後以相關的功能去分析每個RPM檔案的依賴性關係,將這些資料記錄成檔案存放在伺服器的某特定目錄內。 
      客戶端:如果需要安裝某個軟體時,先下載伺服器上面記錄的依賴性關係檔案(可通過WWW或FTP方式),通過對伺服器端下載的紀錄資料進行分析,然後取得所有相關的軟體,一次全部下載下來進行安裝。

yum源的目錄

#進入yum源目錄
cd /etc/yum.repos.d/
#檢視yum原始檔
ls -l

配置阿里雲yum源

 
1.好習慣,備份yum源
mkdir repo_bak
mv *.repo repo_bak/
2.下載阿里雲repo檔案
wget http://mirrors.aliyun.com/repo/Centos-7.repo
3.清空yum快取並且生成新的yum快取
yum clean all
yum makecache
4.安裝軟體擴充套件源
yum install -y epel-release
 
 
yum repolist all        列出所有倉庫
yum list all            列出倉庫所有軟體包
yum info 軟體包名            檢視軟體包資訊
yum install 軟體包名        安裝軟體包
yum reinstall 軟體包名    重新安裝軟體包
yum update    軟體包名        升級軟體包
yum remove    軟體包名        移除軟體包
yum clean all            清楚所有倉庫快取
yum check-update        檢查可以更新的軟體包
yum grouplist            檢視系統中已安裝的軟體包
yum groupinstall 軟體包組    安裝軟體包組
 

系統服務管理命令 

如果大家之前學習或者使用過RHEL6系統,應該已經習慣了service、chkconfig等命令來管理系統服務,
但是在RHEL7系統中改變了systemctl來管理系統服務。

設定開機啟動相關

必須掌握的/etc下的linux目錄知識

/etc:
這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄。
 
#網路卡配置檔案
/etc/sysconfig/network-script/ifcfg-eth0
#修改機器名以及網路卡,網管等配置
/etc/sysconfig/network #linux的dns客戶端配置檔案,實現域名和ip的互相解析 /etc/resolv.conf
#本地dns解析檔案,設定ip和域名的對應解析,開發測試最常用的臨時域名解析
/etc/hosts/
#系統全域性環境變數永久生效的配置檔案,如PATH等
/etc/profile
#使用者的環境變數
~/.bash_profile
~/.bashrc
#存放可執行程式的目錄,大多是系統管理命令
/usr/sbin
#存放使用者自編譯安裝軟體的目錄 > 等同於C:\Program files (windows)
/usr/local
#關於處理器的資訊,還可以top指令檢視
/proc/cpuinfo
#檢視記憶體資訊,還可以free -m
/proc/meminfo
 

Linux下安裝程式的方法

  • rpm -ivh 包名.rpm  需要手動解決依賴關係
  • yum install 包名          yum自動處理依賴關係
  • 編譯安裝(原始碼安裝)

安裝Lrzsz

#安裝此軟體,即可拖拽上傳下載linux程式碼到windows
yum install lrzsz

伺服器無法上網錯誤

1.yum報錯
    Error couldn't resolve host 'mirrorlist.centos.org'
2.ping www.baidu.com 看是否能上網
3.如果百度不通,ping ip通了
ping 119.29.29.29  ,說明dns有問題

摘抄自:超哥部落格  https://www.cnblogs.com/pyyu/articles/9355477.html

相關文章