VMware
使用虛擬機安裝Centos系統的時候,一定要在安裝后期的步驟中開啟網絡,否則只能通過vi修改配置文件
遠程服務器管理
- 通過ip addr查看網卡ip地址
ip addr
- 通過ifconfig查看網卡 ip 地址
最小化安裝 CentOs 后是沒法直接用 ifconfig、netstat 命令的,如果要用 ifconfig、netstat 等
命令需要安裝 net-tools。
yum install -y net-tools
- yum 軟件包查找
yum search ifconfig 然后結果是在net-tools包種
安裝的時候忘記開啟網絡我們可以在配置文件中開啟網絡
vi /etc/sysconfig/network-scripts/ifcfg-ens33 (有可能ifcfg-ens33是別的名字)
找到ONBOOT='no'修改為 yes
Linux 常用命令、shell 技巧、目錄結構介紹
- Linux 常用命令
- init 0 關機
- init 6 重啟
- ls 、 ls -l 、 ll 列出出當前目錄下的文件
- cd 切換目錄
- pwd 查看當前路徑
- cd - 切換最近使用過的兩個目錄
- ctrl+c 中斷當前程序
- ctrl+l / (clear) 清屏
- ip addr / ifconfig 查看網卡信息
- ping 127.0.0.1 看網絡是否通暢
- Linux shell 命令技巧
- tab 補全
- 命令+(1 次)tab
- 命令+(2 次)tab
- 上下鍵盤 查看最近的歷史命令
- history
- 查看命令歷史:!22 調用歷史中編號為 22 的命令
- !h : 調用歷史中最后一次以 h 開頭的命令
- 獲取幫助:ls --help / man ls
- Linux 目錄結構介紹
- root 目錄:linxu 超級權限 root 的主目錄。*
- home 目錄:系統默認的用戶主目錄,如果添加用戶是不指定用戶的主目錄,默認在/home下創建與用戶同名的文件夾。 *
- bin 目錄:存放系統所需要的重要命令,比如文件或目錄操作的命令 ls、cp、mkdir 等,另外
/usr/bin 也放了一些系統命令。這些命令對應著文件都是可以執行的。 * - sbin 目錄:存放只有 root 超級管理員才能執行的程序 *
- boot 目錄:存放著 linux 啟動時內核及引導系統程序所需要的核心文件,內核文件和 grub
系統引導管理器都位于此目錄。 - dev 目錄:存放這 linux 系統下的設備文件,如光驅等。
- etc 目錄:存放系統的配置文件,作為一些軟件啟動時默認配置文件讀取的目錄,如/etc/fstal
存放系統分析信息。 * mnt 目錄: 臨時文件掛載目錄、 也可以說是測試目錄 - opt 目錄: 第三方軟件存放目錄* media 目錄:即插即用型設備掛載點,光盤默認掛載點,通常光* 盤掛載于/mnt/cdrom 下。
- tmp 目錄:臨時文件夾。*
- usr 目錄:應用程序存放目錄,安裝 linux 軟件包是默認安裝到/usr/local 目錄下。 *
- var 目錄:目錄經常變動,/var/log 存放系統日志,/var/log 存放系統庫文件。*
Linux 文件管理 目錄管理
Linux 文件管理
- 創建文件
touch file1 - 刪除文件
- rm -rf file11
- -r:遞歸的刪除目錄下面文件以及子目錄下文件。
- -f:強制刪除,忽略不存在的文件,從不給出提示
- 修改文件名:mv file1 file11
- 查看文件內容:cat file1
- 復制文件:cp file2 file22
- 移動文件:mv file1 file11
- 編輯文件:vi file1
- 批量創建刪除文件
- touch file{1..10}
- rm -rf file{1..10}
- 查看文件前 3 行
- | 把前面的執行結構給后端
- cat file1 | head -3
- 查看文件后 3 行:cat file1 | tail -3
- liunx 服務器上面查找文件
- find
- find / -name httpd.conf
- find 目錄 -name 文件名
- updatedb 查找速度快
- 建立一個小型數據庫 updatedb
- 再數據庫里面搜索 locate httpd.conf
- yum install mlocate -y
- mlocate 是新型的 locate 比 updatedb 速度更快。
- 查找文件里面內容 找到 httpd.conf 里面有 listen
- cat httpd.conf | grep listen
- cat httpd.conf | grep -ignore listen / cat httpd.conf | grep -i listen 忽略大小寫
- 查找文件里面內容 vi 搜索(注意是命令行模式下,不是編輯模式下)
- vi httpd.conf
- 輸入 /Listen 搜索 Listen N 下一個
Vi/Vim 快速入門
vi 是 Unix 和類 Unix 環境下的可用于創建文件的屏幕編輯器。vi 有兩種工作模式:命令模式
和文本輸入模式。vim 是 vi 的升級版本,它不僅兼容 vi 的所有指令,而且還有一些新的特性在里面。
圖1.png
-
退出vi命令模式
圖2.png -
命令模式下文本修改
圖3.png
Linux 目錄操作
- 創建目錄: mkdir dir1 dir2 dir3
- 刪除目錄
- rm -rf dir1 dir2
- -r:遞歸的刪除目錄下面文件以及子目錄下文件。
- -f:強制刪除,忽略不存在的文件,從不給出提示
rm -rf dir* 以 dir 開頭的所有文件刪除
- 重命名目錄或移動目錄:mv dir1 dir11
- 查看目錄:ls
- 遞歸創建目錄:mkdir -p a/b/c/d/e/f/g
- 遞歸查看目錄:tree a
- 復制目錄:cp -rf wwwroot/ mywwwroot/
- tree 命令不存在的話需要安裝
yum install tree -y
Linux ll 顯示的文件類型
Linux 下可以用 ll 命令來判斷文件類型,主要是根據每行的首個字符來判斷
- -rw-r—r— "-“開頭的都是普通文件;
- drw-r—r— "d"開頭的是目錄文件;
- brw-r—r— "b"開頭的文件都是塊設備文件;
- crw-r—r— "c"開頭的文件都是字符設備文件;
- srw-r—r— "s"開頭的文件都是 socket 文件; (e.g. srwxrwxrwx 1 mysql mysql 0 Sep 9
13:49 mysql.sock) - prw-r—r— "p"開頭的文件都是管道文件;
- lrw-r—r— "l"開頭的文件都是軟鏈接文件;
Linux 打包壓縮 別名管理
Linux 打包壓縮命令
目前 linux 中打包和壓縮的命令很多,最常用的方法有 zip、gzip、bzip2、xz、tar
- zip 壓縮包
- 制作
zip -r public.zip public
-r 遞歸 表示將指定的目錄下的所有子目錄以及文件一起處理
- 解壓
unzip public.zip
unzip public.zip -d dir
- 查看: unzip -l public.zip
- 安裝 zip 減壓軟件
yum install -y unzip zip
- gz 壓縮包: (源代碼壓縮)
Linux 下最常用的打包程序就是 tar 了,使用 tar 程序打出來的包我們常稱為 tar 包,tar
包文件的命令通常都是以.tar 結尾的。生成 tar 包后,就可以用其它的程序來進行壓縮了,
所以首先就來講講 tar 命令的基本用法。gz包是在tar包的基礎上生成的。
- 制作 gz 包
tar czvf public.tar.gz public - 解壓 gz 包
tar xzvf public.tar.gz - 查看 gz 包
tar tf public.tar.gz - 制作 tar 包
tar cvf wwwroot.tar wwwroot 僅打包,不壓縮! - 解壓 tar 包
tar xvf wwwroot.tar
參數:
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!因為不可能同時壓
縮與解壓縮。
- -c :建立一個壓縮檔案的參數指令(create 的意思) -x :解開一個壓縮檔案的參數指令!
- -t :查看 tarfile 里面的檔案!
- -z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
- -j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
- -v :壓縮的過程中顯示檔案!這個常用,但不建議用在背景執行過程!
- -f :使用檔名,請留意,在 f 之后要立即接檔名喔!不要再加參數!
- xz 壓縮包
對于 xz 這個壓縮相信很多人陌生,但 xz 是絕大數 linux 默認就帶的一個壓縮工具,xz
格式比 7z 還要小
- 制作
- tar cvf xxx.tar xxx // 這樣創建 xxx.tar 文件先,
- xz xxx.tar //將 xxx.tar 壓縮成為 xxx.tar.xz 刪除原來的 tar 包
- xz -k xxx.tar //將 xxx.tar 壓縮成為 xxx.tar.xz 保留原來的 tar 包
- 解壓
- xz -d ***.tar.xz //先解壓 xz 刪除原來的 xz 包
- xz -dk ***.tar.xz //先解壓 xz 保留原來的 xz 包
- tar -xvf ***.tar //再解壓 tar
- 查看: xz -l ***.tar.xz //先解壓 xz
別名管理
- 添加別名
alias chttp='cat /etc/httpd/conf/httpd.conf' chttp - 刪除別名
unalias chttp - 查看別名
alias
用戶管理 和 用戶權限管理 chmod、ACL、visudo
用戶管理
Linux 系統同時可以支持多個用戶,每個用戶對自己的文件設備有特殊的權利,能夠保
證用戶之間互不干擾。就像手機開了助手一樣,同時登陸多個 qq 賬號,當硬件配置非常高
時,每個用戶還可以同時執行多個任務,多個線程同時工作,提高效率。多用戶是 Linux 優
于其他操作系統的一大特點
- 添加用戶
useradd lisi - 設置密碼
passwd lisi - 刪除用戶
userdel -r lisi -r:遞歸的刪除目錄下面文件以及子目錄下文件。
備注:刪除用戶的時候用戶組被刪除
- 查看用戶:id user
- 把用戶加入組
gpasswd -a testuser root
把用戶 testuser 加入到 root 組,加入組后 testuser 獲取到 user 組及 root 組所有權限
- 移出組
gpasswd -d testuser root
用戶權限 用戶分類
網站發布到 linux 服務器下面一般要設置權限,不然的話可能沒法上傳圖片,或者沒法寫入
文件。Windows 中權限沒有那么明顯可以含糊的過去,linux 里面對權限管控非常嚴格。
用戶權限:
drwxr-x---. 2 root root 6 4 月 11 2018 mnt
對應說明:
d 表示目錄
rwx root 對 mnt 目錄具有讀、寫和執行的權限
r-x root 組內其他用戶對 mnt 目錄具有讀和執行權限
--- other 其他所有用戶對 mnt 目錄沒有任何權限
. 表示 ACL 的屬性
2 mnt 里面的目錄數量
root 當前目錄所屬用戶
root 當前目錄所屬組
6 文件文件大小(以字節為單位) 這個字段表示文件大小,如果是一個文件夾,則表示該
文件夾的大小.請注意是文件夾本身的大小,而不是文件夾以及它下面的文件的總大小!很多
人不能理解文件夾是一個特殊的文件的含義,這樣的話理解文件夾大小的含義就比較困難了. 4 月 文件創建月份
11 2018 文件創建時間
mnt 目錄名稱
權限:就是人對文件所擁有權限,權限就是是哪個 讀、寫、執行
用戶群體: 所有者 user u 、所屬組 group g 、其他用戶 other o 、所有用戶 all a
權限:
r 讀
w 寫
x 執行
用戶:
所有者 user u
所屬組 group g
其他用戶 other o
所有用戶 all a u+g+o=a(表示所有人)
目錄的 rwx
r 查看目錄里面的文件(4)
w 在目錄里創建或刪除文件(2)
x 切換進目錄(1)
文件的 rwx
r 查看文件內容
w 在文件里寫內容
x 執行該文件(文件不是普通文件,是程序或腳本)
chmod 權限分配
- +增加權限 -刪除權限
- chmod u+x my.sh 給當前用戶分配執行 my.sh 的權限
- chmod o+r,o+w file.txt 給其他用戶分配對 file.txt 的讀寫權限
- chmod o+r,o+w,o+x mnt 給所有其他用戶分配對 mnt 目錄的進入、讀取、寫入權限
- chmod -R o+r,o+w,o+x mnt 修改目錄下的所有文件的權限為可讀、可修改、可執行
- chmod 755 file
- 755 表示-rwxr-xr-x
- chmod -R 777 wwwroot/ 修改目錄下的所有文件的權限為可讀、可修改、可執行
- 需求 1:讓其他人對 mnt 目錄沒有任何權限
- chmod o-r,o-w,o-x mnt
- 需求 2:所有人對 test.sh 文件具有 x 的權限
- chmod a+x test.sh
- 需求 3:讓所有用戶對 test.sh 都沒有 x 權限
- chmod a-x test.sh
- 需求 4:讓所有用戶對 mnt 以及 mnt 里面的所有文件和文件夾都有 w 權限
- chmod o-r,o-w,o-x root
- chmod -R a+w mnt/
用戶權限管理 ACL
- 需求 5:讓 zhangsan 對 opt 目錄具有 rx 權限,讓 lisi 對 opt 目錄具有 rwx 的權限
-m 修改
[root@localhost /]# setfacl -m u:zhangsan:rx opt/
[root@localhost /]# setfacl -m u:lisi:rwx opt/
- 查看 opt 擁有的 acl 權限
getfacl opt
- 設置 opt 的 acl 權限
setfacl -m u:zhangsan:rwx opt
- 刪除 opt 的 user1 擁有的 acl 權限
setfacl -x u:zhangsan opt -x 刪除權限
- 刪除 opt 上所設置過的所有 acl 權限
setfacl -b opt/
用戶權限管理 visudo
which 命令
sbin 下面的命令執行權限
- 設置
- 輸入: visudo
- 編輯 %zhangsan localhost=/usr/sbin/useradd
%zhangsan localhost=/usr/sbin/userdel
- 使用 普通用戶家 sudo
- sudo useradd wangwu
- sudo userdel wangwu
Linux 軟件安裝調試 rpm 包管理以及 yum
rpm 安裝和卸載軟件
在 Linux 操作系統下,幾乎所有的軟件均通過 RPM 進行安裝、卸載及管理等操作。RPM 的
全稱為 Redhat Package Manager ,是由 Redhat 公司提出的,用于管理 Linux 下軟件包的軟件。Linux 安裝時,除了幾個核心模塊以外,其余幾乎所有的模塊均通過 RPM 完成安裝
- 掛載光盤
- 必須把把光盤放在光驅中
- 光驅必須放連上電腦
- mount dev/cdrom /media 掛載
- df 查看光盤是否掛載
- 查找 ls | grep httpd
- 安裝
- rpm -ivh httpd-2.4.6-80.el7.centos.x86_64.rpm
- rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
- rpm -i 需要安裝的包文件名
- rpm -iv 安裝過程中顯示正在安裝的文件信息;
- rpm -ivh 安裝過程中顯示正在安裝的文件信息及安裝進度;
- 卸載軟件
- rpm -e httpd httpd 表示要卸載的軟件包
- rpm -q httpd 查找 httpd
- 升級包
rpm -Uvh 軟件
Yum 安裝軟件
Yum(全稱為 Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 CentOS 中的 Shell前端軟件包管理器。基于 RPM 包管理,能夠從指定的服務器自動下載 RPM 包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
- yum 安裝 rpm 包
- yum install -y net-tools 包括 netstat ifconfig 等命令
- yum install -y unzip zip zip 壓縮減壓
- yum install -y mlocate updatedb
- yum install -y wget
- yum -y install psmisc pstree | grep httpd 查看進程 pstree -p 顯示進程以及子進程
- yum 卸載 rpm 包
- yum -y remove wget
- yum 搜索 npm 包
- yum search 名稱
- yum 查看 rpm 包
- yum list
- yum list | grep httpd
- yum list updates 列出所有可更新的軟件包
- yum list installed 列出所有已安裝的軟件包
- yum 顯示 rpm 包信息
- yum info package1
- 如:
- yum info httpd
- yum info zip
- yum info unzip
- yum 遠程安裝 Apache
- yum -y install httpd service httpd start 安裝啟動 apache
- yum 本地安裝 Apache RPM 包
- yum localinstall httpd-2.4.6-80.el7.centos.x86_64.rpm
Yum 倉庫設置
- yum 的主配置文件 etc/yum.conf (了解)
[main]
cachedir=/var/cache/yum
//yum 緩存的目錄,yum 在此存儲下載的 rpm 包和數據庫,默認設置為/var/cache/yum
keepcache=0
//安裝完成后是否保留軟件包,0 為不保留(默認為 0),1 為保留
debuglevel=2
//Debug 信息輸出等級,范圍為 0-10,缺省為 2
logfile=/var/log/yum.log
//yum 日志文件位置。用戶可以到/var/log/yum.log 文件去查詢過去所做的更新。
pkgpolicy=newest
//包的策略。一共有兩個選項,newest 和 last,這個作用是如果你設置了多個 repository,而同一軟
件在不同的 repository 中同時存在,yum 應該安裝哪一個,如果是 newest,則 yum 會安裝最新的那個版
本。如果是 last,則 yum 會將服務器 id 以字母表排序,并選擇最后的那個服務器上的軟件安裝。一般都
是選 newest。
distroverpkg=redhat-release
//指定一個軟件包,yum 會根據這個包判斷你的發行版本,默認是 redhat-release,也可以是安裝的
任何針對自己發行版的 rpm 包。
tolerant=1
//有 1 和 0 兩個選項,表示 yum 是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝 1,2,3 三個
包,而其中 3 此前已經安裝了,如果你設為 1,則 yum 不會出現錯誤信息。默認是 0。
exactarch=1
//有 1 和 0 兩個選項,設置為 1,則 yum 只會安裝和系統架構匹配的軟件包,例如,yum 不會將 i686
的軟件包安裝在適合 i386 的系統中。默認為 1。
retries=6
//網絡連接發生錯誤后的重試次數,如果設為 0,則會無限重試。默認值為 6. obsoletes=1
//這是一個 update 的參數,具體請參閱 yum(8),簡單的說就是相當于 upgrade,允許更新陳舊的 RPM
包。
plugins=1
//是否啟用插件,默認 1 為允許,0 表示不允許。我們一般會用 yum-fastestmirror 這個插件。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_ page.php?category=yum
# Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h
installonly_limit = 5
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
- yum 的倉庫配置文件 /etc/yum.repo.d/*.repo (了解)
yum 倉庫就是使用 yum 命令下載軟件的鏡像地址
我們通常使用 yum install 命令來在線安裝 linux 系統的軟件, 這種方式可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,但是經常會遇到從國外鏡像下載速度慢,無法下載的情況.那么此時我們就需要把我們的 yum 源改為國內的鏡像, centOs 中 yum 的配置文件在 /etc/yum.repos.d 目錄下, 其中有多個配置文件,每一個配置文件中都可以配置一個或多個
repository, 但是最終會被合并為一個交給系統,所以多個文件只是為了方便管理。
- Yum 安裝 Nginx
- 安裝 nginx 源
sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 查看 Nginx 源是否配置成功
- 通過 yum search nginx 看看是否已經添加源成功。如果成功則執行下列命令安裝 Nginx。
或者 npm info nginx 也可以看看 nginx 源是否添加成功
- 安裝 Nginx
- sudo yum install -y nginx 3、啟動 Nginx 并設置開機自動運行
- sudo systemctl start nginx.service
- sudo systemctl enable nginx.service
防火墻
CentOS7使用firewalld打開關閉防火墻與端口實戰
- firewalld的基本使用
- 啟動: systemctl start firewalld
- 關閉: systemctl stop firewalld
- 查看狀態: systemctl status firewalld
- 開機禁用 : systemctl disable firewalld
- 開機啟用 : systemctl enable firewalld
- systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能于一體。
- 啟動一個服務:systemctl start firewalld.service
- 關閉一個服務:systemctl stop firewalld.service
- 重啟一個服務:systemctl restart firewalld.service
- 顯示一個服務的狀態:systemctl status firewalld.service
- 在開機時啟用一個服務:systemctl enable firewalld.service
- 在開機時禁用一個服務:systemctl disable firewalld.service
- 查看服務是否開機啟動:systemctl is-enabled firewalld.service
- 查看已啟動的服務列表:systemctl list-unit-files|grep enabled
- 查看啟動失敗的服務列表:systemctl --failed
- 配置firewalld-cmd
查看版本: firewall-cmd --version
查看幫助: firewall-cmd --help
顯示狀態: firewall-cmd --state
查看所有打開的端口: firewall-cmd --zone=public --list-ports
更新防火墻規則: firewall-cmd --reload
查看區域信息: firewall-cmd --get-active-zones
查看指定接口所屬區域: firewall-cmd --get-zone-of-interface=eth0
拒絕所有包:firewall-cmd --panic-on
取消拒絕狀態: firewall-cmd --panic-off
查看是否拒絕: firewall-cmd --query-panic
那怎么開啟一個端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,沒* 有此參數重啟后失效)
重新載入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
刪除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
Linux軟件安裝調試 源代碼包編譯安裝和二進制包配置
linux 下源代碼(C 語言)如何編譯(安裝)
- 先安裝源代碼編譯的軟件 gcc,make,openssl 如下:
- yum install -y gcc make gcc-c++ openssl-devel
- 檢查系統中是否已經安裝 gcc:
- rpm -qa | grep gcc / rpm -ql gcc
- 三步走編譯安裝 linux 源代碼
- 生成編譯配置文件(Makefile)
- 開始編譯(make)
- 開始安裝(make install)
安裝 httpd-2.2.9.tar.gz 源代碼:- 減壓并 cd 到對應目錄
- ./configure --prefix=/usr/local/apache 安裝路徑設置為/usr/local/apache
- make / make -j4
- make install
- 卸載源代碼安裝的軟件
- 結束進程
- pstree|grep httpd
- pkill httpd
- 刪除源代碼
- cd /usr/local/
- 直接刪除源代碼 rm -rf apache/
linux 下源代碼安裝 nodejs
- 下載 nodejs 源碼包
- 減壓到 usr/local/nodejs 目錄
- ./configure
- make / make -j4
- make install
linux 下源代碼安裝 Apache
- 減壓 httpd-2.2.9.tar.gz 到對應目錄
- ./configure 編譯
- ./configure --prefix=/usr/local/apache2/ --sysconfdir=/usr/local/apache2/etc/ * --with-included-apr --enable-dav
- --enable-so --enable-deflate=shared --enable-expires=shared
- --enable-rewrite=shared
- make 4、make install
- 啟動 Apache 測試:
- /usr/local/apache2/bin/apachectl restart
- .查看進程: ps -le | grep httpd
二進制包配置,二進制安裝配置 nodejs
二進制包里面包括了已經經過編譯,可以馬上運行的程序,所以二進制包的安裝只需要丟到一個目錄里面就可以了。
- 上傳或者通過wget下載node二進制包
- wget https://nodejs.org/dist/v8.9.3/node-v8.9.3-linux-x64.tar.xz
- xz -d node-v8.9.3-linux-x64.tar.xz
- tar -xvf node-v8.9.3-linux-x64.tar
- mv node-v8.9.3-linux-x64 /usr/local/nodejs
- 配置環境變量
vi /etc/profile
- 最后面添加:
- export NODE_HOME=/usr/local/nodejs/bin
- export PATH=
PATH
- :wq 保存,然后運行
source /etc/profile
- 可以用 node -v 和 npm -v 來檢查下
node -v
- 查看環境變量是否生效
echo $PATH
Linux 內存、cpu、進程、端口、硬盤管理
內存、cup 管理 top 命令
- op 命令的第一行:
top - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05
依次對應:系統當前時間 up 系統到目前為止 i 運行的時間, 當前登陸系統的用戶數量, load average 后
面的三個數字分別表示距離現在一分鐘,五分鐘,十五分鐘的負載情況
- top 命令的第二行
Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie
依次對應:tasks 表示任務(進程),133 total 則表示現在有 133 個進程,其中處于運行中
的有 1 個,132 個在休眠(掛起),stopped 狀態即停止的進程數為 0,zombie 狀態即僵尸
的進程數為 0 個
- top 命令的第三行,cpu 狀態
%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
只看空閑就可以了:cpu 空閑率為 99.3%
- us:user 用戶空間占用 cpu 的百分比
- sy:system 內核空間占用 cpu 的百分比
- ni:niced 改變過優先級的進程占用 cpu 的百分比
- 空閑 cpu 百分比
- wa:IO wait IO 等待占用 cpu 的百分比
- hi:Hardware IRQ 硬中斷 占用 cpu 的百分比
- si:software 軟中斷 占用 cpu 的百分比
- st:被 hypervisor 偷去的時間
- top 命令的第四行,內存狀態
KiB Mem : 2897496 total, 1995628 free, 191852 used, 710016 buff/cache
總內存:2.76g 空閑:1995628/1024/1024=1.9g 已經使用 0.18g 緩存區內存 0.67g
緩沖區是從主內存中特地預留出的內存,用來存放特定的一些信息,例如從磁盤中取得的文件表,程序正在讀取的內容等等
- top 命令第七行,各進程的監控
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
- PID — 進程 id
- USER — 進程所有者
- PR — 進程優先級
- NI — nice 值。負值表示高優先級,正值表示低優先級
- VIRT — 進程使用的虛擬內存總量,單位 kb。VIRT=SWAP+RES
- RES — 進程使用的、未被換出的物理內存大小,單位 kb。RES=CODE+DATA
- SHR — 共享內存大小,單位 kb
- S — 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
- %CPU — 上次更新到現在的 CPU 時間占用百分比
- %MEM — 進程使用的物理內存百分比
- TIME+ — 進程使用的 CPU 時間總計,單位 1/100 秒
- COMMAND — 進程名稱(命令名/命令行)
內存、cup 管理 uptime 命令
top - 15:31:47 up 9:30, 3 users, load average: 0.00, 0.02, 0.05
- 服務器工作時間
- 在線用戶
- 平均負載 一分鐘,五分鐘,十五分鐘的負載情況
看當前登錄的賬戶 who、查看最新操作電腦的用戶 last
- who 命令: 顯示當前正在系統中的所有用戶名字,使用終端設備號,注冊時間。
- whoami : 顯示出當前終端上使用的用戶。
- last:last 作用是顯示近期用戶或終端的登錄情況
進程管理查看、殺死
- 查看進程
- pstree 查看進程樹
- pstree -ap 顯示所有信息
- pstree | grep httpd
- pstree -ap | grep httpd
- ps -au
- ps -au |grep httpd
- ps -aux
ps 中 aux 的含義:
顯示現行終端機下的所有程序,包括其他用戶的程序(a)
以用戶為主的格式來顯示程序狀況。 (x)
顯示所有程序,不以終端機來區分(u)
- 關閉進程
- pkill httpd : pkill 進程的名字
- kill 2245 : kill 進程號
- kill -9 1234: kill -9 進程號 強制殺死
kill:執行 kill 命令,系統會發送一個 SIGTERM 信號給對應的程序。當程序接收到該 signal 信號后,將會發
生以下事情:
程序立刻停止
當程序釋放相應資源后再停止
程序可能仍然繼續運行
大部分程序接收到 SIGTERM 信號后,會先釋放自己的資源,然后再停止。但是也有程序可能接收信號后,
做一些其他的事情(如果程序正在等待 IO,可能就不會立馬做出響應,我在使用 wkhtmltopdf 轉 pdf 的項
目中遇到這現象),也就是說,SIGTERM 多半是會被阻塞的。
kill -9: kill -9 命令,系統給對應程序發送的信號是 SIGKILL,即 exit。exit 信號不會被系統阻塞,所以 kill -9
能順利殺掉進程。
查看端口
netstat -tunpl |grep httpd
- -t 或--tcp 顯示 TCP 傳輸協議的連線狀況。
- -u 或--udp 顯示 UDP 傳輸協議的連線狀況。
- -n 或--numeric 直接使用 IP 地址,而不通過域名服務器。
- -p 或--programs 顯示正在使用 Socket 的程序識別碼和程序名稱。
- -l 或--listening 顯示監控中的服務器的 Socket。
- 關閉防火墻:Firewalld 關閉:systemctl stop firewalld; SELinux 關閉:setenforce 0
查看硬盤信息
df 命令作用是列出文件系統的整體磁盤空間使用情況。可以用來查看磁盤已被使用多少空間和還剩余多少空間
- df
- df -h 以人們易讀的方式顯示,總共多少 g 用了多少 g
- df /home 查看該文件夾所在磁盤的使用情況
Linux systemctl 管理服務、防火墻 firewalld以及 SELinux 配置
使用 systemctl 管理服務
systemctl 就是 service 和 chkconfig 這兩個命令的整合,在 CentOS 7 就開始被使用了,systemctl是系統服務管理器命令,它實際上將 service 和 chkconfig 這兩個命令組合到一起
- Syetemclt 管理服務常用命令
- 啟動服務:systemctl start httpd
- 關閉服務:systemctl stop httpd
- 重啟服務:systemctl restart httpd
- 查看一個服務的狀態:systemctl status httpd
- 查看一個服務是否在運行:systemctl is-active httpd
- 查看當前已經運行的服務:systemctl list-units -t service 6、列出所有服務: systemctl list-units -at service 注意順序
- 設置開機自啟動: systemctl enable httpd
- 停止開機自啟動: systemctl disable httpd
- 列出所有自啟動服務:
- systemctl list-unit-files|grep enabled
- systemctl list-unit-files|grep disabled
- systemctl list-unit-files|grep disabled | grep httpd
- 使指定服務從新加載配置:systemctl reload httpd
Firewalld 防火墻的設置
從 CentOS7(RHEL7)開始,官方的標準防火墻設置軟件從 iptables 變更為 firewalld,相信不少習慣使用iptables 的人會感到十分不習慣,但實際上 firewalld 更為簡單易用
- firewalld 的基本使用:
- 啟動: systemctl start firewalld
- 關閉: systemctl stop firewalld
- 查看狀態: systemctl status firewalld
- 開機禁用 : systemctl disable firewalld
- 開機啟用 : systemctl enable firewalld
- 配置 firewall-cmd :
- 顯示狀態: firewall-cmd --state
- 查看所有打開的端口: firewall-cmd --zone=public --list-ports
- 更新防火墻規則: firewall-cmd --reload
- 那怎么開啟一個端口呢:
- firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent 永久生效,沒有此參數重啟后失效)
- 重新載入:
- firewall-cmd --reload 修改 firewall-cmd 配置后必須重啟
- 查看:
- firewall-cmd --zone= public --query-port=80/tcp
- 刪除:
- firewall-cmd --zone= public --remove-port=80/tcp --permanent
SELinux 防火墻的設置
安全增強型 Linux(Security-Enhanced Linux)簡稱 SELinux,它是一個 Linux 內核模塊,也是 Linux 的一個安全子系統。
SELinux 主要由美國國家安全局開發。2.6 及以上版本的 Linux 內核都已經集成了 SELinux 模塊。SELinux 的結構及配置非常復雜,而且有大量概念性的東西,要學精難度較大。很多 Linux 系統管理員嫌麻煩都把 SELinux 關閉了。阿里云安裝的 centos 默認已經關閉了。西部數碼云服務器默認也是關閉的
- 查看 SELinux 狀態
- /usr/sbin/sestatus -v ##如果 SELinux status 參數為 enabled 即為開啟狀態
SELinux status: enabled - getenforce ##也可以用這個命令檢查
- 關閉 SELinux
- 臨時關閉(不用重啟機器)
- setenforce 0 ##設置 SELinux 成為 permissive 模式
- setenforce 1 設置 SELinux 成為 enforcing 模式
- 修改配置文件需要重啟機器
修改/etc/selinux/config 文件將 : SELINUX=enforcing 改為 SELINUX=disabled