Linux(Centos7)系統基本操作
目錄結構
- bin 普通用戶使用的命令
- sbin 管理員使用的命令
- dev 設備文件
- proc 虛擬文件系統,反映內核進程信息實時狀態
- usr 系統文件,類似C:Windows
[注]: RHEL7 /bin /sbin /lib /lib64 都在此目錄
- boot 啓動文件
- etc 配置文件
- lib 庫文件
- lib64庫文件
- tmp 臨時文件
- var 變化文件
注:設備掛載目錄
- media 移動設備掛載點
- mnt 手工掛載點
- misc automount進程掛載
- net automount進程掛載
VIM
命令模式
光標定位
hjkl //上下左右
0 $ //行首行尾
gg G //文首文尾
3G //進入第三行
文本編輯
y //複製 yy 3yy ygg yG
d //刪除 dd 3dd dgg dG
D //從光標處刪除到行尾
u //undo撤銷
r //修改一個字符
可視塊模式
塊插入: //選擇塊,I 在塊前插入字符
塊替換: //選擇塊,r 輸入替換的字符
塊刪除: //選擇塊,d | x
塊複製: //選擇塊,y
擴展命令模式
讀入文件/另存爲
:w /路徑 //另存爲
:r /路徑 //讀文件到當前行後
:5 r /路徑 //讀文件到第5行後
文件管理
目錄
mkdir -p //遞歸創建
mkdir /home/{dir1,di2} //意會
複製
cp -r //遞歸拷貝
cp -rf //覆蓋不提示
刪除
rm
-r //遞歸
-f //強制
-v //詳細過程
查看
cat
-n //顯示行號
-A //包括控制字符
tail & head
head //查看頭 後跟 -數字
tail //查看尾
-數字
-f //動態查看
文件時間
-訪問時間:atime //查看內容
-修改時間:mtime //修改內容
-改變時間:ctime //修改權限
-刪除時間:dtime //文件刪除時間
文件類型
ls -l
- //普通文件
d //目錄文件
b //設備文件(塊設備)存儲設備,如U盤等;
c //設備文件 (字符設備) 打印機等。
p //管道文件
l //連接文件
附註
type
# type ll
file
# file /etc/hostname
/etc/hostname: ASCII text
stat
# stat /etc/hostname
用戶管理
基本操作
查看登錄信息
id
uid=0(root) gid=0(root) groups=0(root)
查看文件的owner(所有者)
ll /home/
相關管理
用戶組
groupadd //創建
groupdel //刪除
用戶
useradd //創建
# -u //指定uid
# -d //指定家目錄
# -s /sbin/nologin //指定shell
# -G //創建目錄指定附加組
# -g //指定組
userdel //刪除 -r 同時刪除家目錄和mail spoo
用戶密碼
passwd 用戶名 //root可設置任何用戶密碼
passswd //普通用戶只能給自己修改密碼
組成員管理
usermod -G 組 用戶名 //覆蓋原有的附加組
usermod -aG hr niuniu2 //增加新的附加組
其他選項管理
usermod -s /sbin/nologin //修改登錄Shell用戶組
提權
su
舉個栗子:
[alice@tiezhu ~]$ useradd u1
-bash: /usr/sbin/useradd: 權限不夠
[alice@tiezhu ~]$ su - root
password:
[root@tianyun ~]# useradd u1
sudo
sudo(選項)(參數)
文件權限
- 權限對象 屬主:u 屬組:g 其他人:o
- 基本權限類型 讀:r , 4 寫:w ,2 執行 : x ,1
基本權限 UGO
chown
chown 屬主.屬組 文件 //改屬主、屬組 -R 遞歸
chown 屬主 文件 //改屬主
chown .屬組 文件 //改屬組
chgrp
chgrp 屬組 文件 //改文件屬組
chgrp -R 屬組 文件 //改文件屬組
chmod
chmod u+x 文件 //屬主增加執行
chmod a=rwx 文件 //所有人等於讀寫執行行
chmod 644 文件 //數字大法
基本權限 ACL
getfacl 、setfacl
舉個栗子
# setfacl -m u(g,o):alice:rw /home/test.txt //增加ACL權限
# setfacl -x u(g,o):alice /home/test.txt //刪除ACL權限
# setfacl -b /home/test.txt //刪除所有ACL權限
# setfacl -R -m u:alice:rwx /home //方法一
# setfacl -m d:u:alice:rwx /home //方法二
//賦予alice對/home讀、寫、執行權限
高級權限
- sudo 針對某個用戶以root的身份執行某些命令
- suid 任何用戶執行有suid權限程序(eg:/usr/bin/rm)時都在以root身份在運行。
特殊位
- suid針對文件/程序時,具備臨時提升權限。 4
- sgid針對目錄時。該目錄具備繼承屬組的特性。2
- sticky針對目錄設置,該目錄內容只有root和屬主可刪除 1
設置方式
字符
# chmod u+s fiel
# chmod g+s dir
# chmod o+t dir
數字
# chmod 4777 fiel
# chmod 7777 file
# chmod 2770 dir
# chmod 3770 dir
文件屬性chattr
chattr +a file //只可追加
chattr +i file //不可更改、重命名、刪除
chattr +A file //不可更改訪問時間(atime)
+ - //追加 移除
進程管理
查看進程
靜態查看
# ps aux |less
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 init [5]
USER 運行進程用戶
PID 進程ID
%CPU CPU佔用率
%MEM 內存佔用率
VSZ 佔用虛擬內存
RSS 佔用實際內存
TTY 進程運行終端
STAT 進程狀態
START 進程的啓動時間
TIME 進程佔用CPU總時間
COMMAND 進程文件、進程名
R 運行
S 可中斷睡眠
D 不可中斷睡眠
T 停止進程
Z 殭屍進程
X 死掉的進程
查看指定進程PID
# pidof 進程名
進程樹
pstree
動態查看
# top
# top -d 1 //每一秒刷新
# top -d 1 -p 10123 //查看指定進程的動態信息
# top -d 1 -u user //查看指定用戶的進程
# top -d 1 -b -n >top。txt //將兩次top信息寫入到文件
h|? 幫助 < > 向前 向後
M 查看內存使用排序 z 彩色
P 按CPU使用排序 W 保存top環境設置
N 以PID的大小排序
R 對排序進行反轉
f 自定義顯示字段
1 顯示所有CPU負載
信號控制進程
# kell -1 重新加載配置
# kill -9 強殺
# kill -15 正常終止
# kill -18/-19 繼續/暫停
進程優先級nice
使用tiop更改
# top 輸入r
(-20高) ---0--- (19低)
使用shell更改
# ps aux //查看pid
# renice -20 pid //更改
管道及重定向
重定向
輸出重定向
> //覆蓋
>> //追加
&> /dev/null //重定向到空
輸入重定向
# cat >file <<EOF
>內容
>內容
>EOF
管道
|
|tee #tee命令就像管道的T接頭。
查找壓縮
文件查找
grep:文件內容過濾
find: 文件查找
which:命令查找
which
查找tree 命令位置
# which tree
/bin/tree
find
公式:find [path...] [options] [expression] [action]
名字 路徑 選項 表達 行動
name //名字 (a/m/c)time //訪問時間、修改時間、改變時間
size //大小 user/group //用戶、組
maxdeoth //目錄 perm //權限
按文件名
# find / -name "name"
# find / -iname "name" //忽略大小寫
按文件大小
# find / -size +5M //大於5M
# find / -size 5M //等於5M
# find / -size -5M //小於5M
指定查找目錄深度
# find / -maxdepth 3 -a -name "ifcfg-en*" //三層
按時間查找
# find / -mtime(-atime/ctime) +5(5/-5) //時間超過(等於、小於)5天
按屬主、屬組
# find / -user jack //屬主是jack的文件
# fian / -group hr //屬組是hr的文件
# find / -nouser //缺失UID的文件
按文件權限
- 普通權限
# find / -prem 644 //精確權限
# find / -prem -644 //包含權限即可
- 特殊權限
# find /usr/bin /usr/sbin -perm -4000 -ls //包含set uid
# find /usr/bin /usr/sbin -perm -2000 -ls //包含set gid
# find /usr/bin /usr/sbin -perm -1000 -ls //包含sticky
找到後處理動作
-print //打印(默認選項)
-ls //列出
-exec //後跟自定義shell命令
-ok //後跟自定義shell命令
文件打包及壓縮
打包壓縮
# tar -cf test.tar //打包
# tar -czf test.tar.gz //z是gzip
# tar -cjf tset.tar.bz //j是bzip
# tar -cJf test.tar.xz //J是xzip
解壓
# tar xf test.tar.xz //不顯示詳細信息
↑------xvf 可顯示詳細信息
# tar xvf test.tar.bz -C /tmp //-C重定向到目錄 /tmp
軟件包管理
軟件包類型
- 源碼包 需編譯
舉個栗子 nginx-1.12.1.tar.gz
- 二進制包 已編譯
舉個栗子 mysql-community-common-5.7.12-1.el7.x86_64.rpm
# 在RedHat/Centos 平臺常見的二進制包類型爲rpm,工具爲rpm,rpmbuild ,在線安裝方式爲yum
rpm包管理
獲得rpm包的途徑
- RedHat光盤或官方網站 ftp://ftp.redhat.com
- rpmfind.net
- 相應軟件官方網站 如
http://www.mysql.com
rpm包結構
舉個栗子
ntfs-3g-2011.4.12-5.el5.x86_64.rpm
軟件包名 版本號(Version) 發佈版本(Release) 系統平臺
ntfs-3g 2011.4.12 5.el5 x86_64
使用RPM工具管理RPM包
安裝
# rpm -ivh local_path(本地路徑) //本地安裝
# rpm -ivh url_path(url) //網絡安裝
額外選項
--nosignature //不檢驗軟件包的簽名
--force //強制安裝軟件包 yum reinstall
--nodeps //忽略依賴關係
查詢
rpm -q ntfs-3g 查詢指定包是否安裝
rpm -qa |grep ntfs 查詢某個包
rpm -qa ntfs-3g 查詢ntfs-3g安裝的文件
rpm -qf /usr/bin/ntfs-3g 查詢該文件屬於哪個rpm包
rpm -wc ntfs-3g 查詢某個包安裝的配置文件
rpm -qd vsftpd 查看安裝的幫助文檔
卸載
rpm -e ntfs-3g
YUM
基礎源
路徑
# ls /etc/yum.repos.d/ //路徑
命令
# yum install 包名 //安裝
# yum update 包名 //升級包
# yum remove 包名 //卸載包
# yum info 包名 //查看包信息
# yum clean all //清理本地緩存
# yum clean plugins //清除插件緩存
# yum makecache //重建緩存
# yum provides /bin/mv //查看文件來自哪個包
# yum repolist //顯示所有yum倉庫
# yum disabled(enabled) //顯示可用倉庫
# yum list //列出可安裝的包
# yum list updates //顯示可更新的包
# yum list installed //顯示已安裝的包
# yum list recent //列出倉庫最近增加的包
阿里源
http://mirrors.aliyun.com/
163源
http://mirrors.163.com
epel
yum -y install epel-release
官方源
如 nnginx
# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
tar源碼包
獲得途徑
官方網站 如:
Apache: www.apache.org
Nginx: www.nginx.org
Tengine: tengine.taobao.org
安裝源碼包
^注1: 以編譯安裝tengine爲例
^注2: 準備、解壓、配置、編譯、安裝。
部署Tengine /Nginx服務器/WEB服務器
1. 下載源碼包,準備軟件包
2.準備編譯環境如編譯器gcc、make
# yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
(pcre: 支持正則表達式,地址重寫rewrite)
3.解壓
# useradd www
# tar xvf tengine-2.2.0.tar.gz
# cd tengine-2.2.0
4.配置
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--with-http_sub_module \
--with-http_ssl_module \
--with-pcre
5.編譯
# make
6.安裝
# make install
7啓動測試
# /usr/local/nginx/sbin/nginx //啓動nginx服務器
# systemctl stop firewalld
看到網頁,說明部署成功。
系統版本信息
uname
# uname 用於打印當前系統信息 內核版本號、硬件架構、主機名稱和操作系統類型等)
-a 顯示全部信息
-m 顯示電腦類型
-n 顯示網絡上的主機名
-r 顯示操作系統發行編號
-s 顯示操作系統名稱
-v 顯示操作系統版本
cat 命令
# cat /etc/redhat-release //查看版本當前操作系統發行版信息
# cat /proc/version //查看當前操作系統版本信息
# cat /proc/cpuinfo //查看cpu相關信息,包括型號、主頻、內核信息等
查看位數
# getconf LONG_BIT //查看運行在哪個位數下,但並不代表CPU不支持其他位數