Linux 用戶、權限
目錄結構
Linux和Windows目錄結構的組織形式有很大不同,
Windows
劃分出了“盤”的概念(C盤、D盤、E盤),已經建立文件系統的硬盤分區被掛載到某一個目錄下,用戶通過操作目錄來實現磁盤讀寫。
以反斜杠(\)分割目錄
Linux
首先是建立一個根(/)文件系統,所有的目錄頁都是有根目錄衍生出來的,
以斜杠(/)分割目錄
在Linux底下,所有的文件與目錄都是由根目錄開始,是目錄與文件的源頭,然後一個個的分支下來,如同樹枝狀,因此稱為這種目錄配置為:目錄樹。
目錄樹的特點是什麽呢?
- 目錄樹的起始點是根目錄(/,root);
- 每一個目錄不止能使用本地的文件系統,也可以使用網絡上的文件系統,可以利用NFS服務器掛載特定目錄。
- 每一個文件在此目錄樹中的文件名,包含完整路徑都是獨一無二的。
/bin: bin是Binary的縮寫, 這個目錄存放著最經常使用的命令。 /boot: 這裏存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件。 /dev : dev是Device(設備)的縮寫, 該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。 /etc: 這個目錄用來存放所有的系統管理所需要的配置文件和子目錄。 /home: 用戶的主目錄,在Linux中,每個用戶都有一個自己的目錄,一般該目錄名是以用戶的賬號命名的。 /lib: 這個目錄裏存放著系統最基本的動態連接共享庫,其作用類似於Windows裏的DLL文件。幾乎所有的應用程序都需要用到這些共享庫。目錄的詳細解釋/lost+found: 這個目錄一般情況下是空的,當系統非法關機後,這裏就存放了一些文件。 /media: linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。 /mnt: 系統提供該目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將光驅掛載在/mnt/上,然後進入該目錄就可以查看光驅裏的內容了。 /opt: 這是給主機額外安裝軟件所擺放的目錄。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的。 /proc: 這個目錄是一個虛擬的目錄,它是系統內存的映射,我們可以通過直接訪問這個目錄來獲取系統信息。 這個目錄的內容不在硬盤上而是在內存裏,我們也可以直接修改裏面的某些文件,比如可以通過下面的命令來屏蔽主機的ping命令,使別人無法ping你的機器: echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all /root: 該目錄為系統管理員,也稱作超級權限者的用戶主目錄。 /sbin: s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。 /selinux: 這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似於windows的防火墻,但是這套機制比較復雜,這個目錄就是存放selinux相關的文件的。 /srv: 該目錄存放一些服務啟動之後需要提取的數據。 /sys: 這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。 sysfs文件系統集成了下面3種文件系統的信息:針對進程信息的proc文件系統、針對設備的devfs文件系統以及針對偽終端的devpts文件系統。 該文件系統是內核設備樹的一個直觀反映。 當一個內核對象被創建的時候,對應的文件和目錄也在內核對象子系統中被創建。 /tmp: 這個目錄是用來存放一些臨時文件的。 /usr: 這是一個非常重要的目錄,用戶的很多應用程序和文件都放在這個目錄下,類似於windows下的program files目錄。 /usr/bin: 系統用戶使用的應用程序。 /usr/sbin: 超級用戶使用的比較高級的管理程序和系統守護程序。 /usr/src:內核源代碼默認的放置目錄。 /var: 這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌文件。
在linux系統中,有幾個目錄是比較重要的,平時需要註意不要誤刪除或者隨意更改內部文件。
/etc: 上邊也提到了,這個是系統中的配置文件,如果你更改了該目錄下的某個文件可能會導致系統不能啟動。
/bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行文件的放置目錄,比如 ls 就是在/bin/ls 目錄下的。
值得提出的是,/bin, /usr/bin 是給系統用戶使用的指令(除root外的通用戶),而/sbin, /usr/sbin 則是給root使用的指令。
/var: 這是一個非常重要的目錄,系統上跑了很多程序,那麽每個程序都會有相應的日誌產生,而這些日誌就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裏。
目錄的相關操作
查看命令
ls 查看目錄文件
ls -la 查看所有目錄(包括隱藏文件)
stat 文件(目錄) 查看文件(目錄)的詳細信息
lsattr 文件 查看文件的隱藏屬性
. 當前目錄
.. 上一層目錄
- 前一個工作目錄
~ 當前【用戶】所在的家目錄
文件夾操作
增
mkdir 文件夾名稱 創建文件夾
touch .py文件 創建一個文件
可以使用遞歸來生成文件夾結構
全是文件夾的 mkdir -p(參數) 文件夾1/文件夾2/文件夾3
文件夾下的文件 mkdir -p(參數) 文件夾4/{文件夾5,文件夾6,文件夾7} (文件夾5、6、7並列)
刪
rmdir 文件夾名稱(空的)
想要刪除非空的文件夾 rm -rf ./*
改
mv 原文件名 新文件名(也有可能是移動)
執行第一個python命令
touch .py文件 創建一個py文件
vi py文件 進入文件中
按下鍵 i 進入編輯模式
按下鍵o (在光標所在的下一行進入編輯模式)
按下鍵 Esc 進入命令模式
輸入命令 :wq! 保存退出
輸入命令 :q! 退出,不保存
絕對路徑與相對路徑
Linux中非常重要的概念--路徑,路徑用來定位如何找到某個文件。
- 絕對路徑:由根目錄(/)為開始寫起的文件名或者目錄名稱,如/home/oldboy/test.py;
- 相對路徑:相對於目前路徑的文件名寫法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,簡單來說只要開頭不是/,就是屬於相對路徑
Linux的文件系統
用戶在硬件存儲設備中執行的文件建立,寫入,讀取,修改,轉存與控制等操作都是依賴文件系統完成的。文件系統的作用是合理規劃硬盤,保證用戶正常使用。
Linux系統支持數十種文件系統,常見文件系統如下。
- Ext3 是一款日誌文件系統,能夠在系統異常宕機時避免文件系統資料丟失,並能 自動修復數據的不一致與錯誤。
- Ext4 Ext3 的改進版本,作為 RHEL 6 系統中的默認文件管理系統,它支持的存儲容 量高達 1EB(1EB=1,073,741,824GB),且能夠有無限多的子目錄。另外,Ext4 文件系統能夠批量分配 block 塊,從而極大地提高了讀寫效率。
- XFS 是一種高性能的日誌文件系統,而且是 RHEL 7 中默認的文件管理系統,它的優勢在發生意外宕機後尤其明顯,即可以快速地恢復可能被破壞的文件,而且強大的 日誌功能只用花費極低的計算和存儲性能。並且它最大可支持的存儲容量為 18EB, 這幾乎滿足了所有需求。
/etc/fstab是用來存放文件系統的靜態信息的文件
cat /etc/fstab #檢查linux的文件系統
鏈接:Linux之文檔與目錄結構
用戶管理與文件權限篇
現代操作系統一般屬於多用戶的操作系統,也就是說,同一臺機器可以為多個用戶建立賬戶,一般這些用戶都是為普通用戶,這些普通用戶能同時登錄這臺計算機,計算機對這些用戶分配一定的資源。
普通用戶在所分配到的資源內進行各自的操作,相互之間不受影響。但是這些普通用戶的權限是有限制的,且用戶太多的話,管理就不便,從而引入root用戶。
root用戶是唯一的,且擁有系統的所有權限。root用戶所在的組稱為root組。“組”是具有相似權限的多個用戶的集合。
root的權利
Linux系統的特性就是可以滿足多個用戶,同時工作,因此Linux系統必須具備很好的安全性。
在安裝RHEL7時設置的root管理員密碼,這個root管理員就是所有UNIX系統中的超級用戶,它擁有最高的系統所有權,能夠管理系統的各項功能,如添加/刪除用戶,啟動/關閉進程,開啟/禁用硬件設備等等。
因此“能力越大,責任越大”,root權限必須很好的掌握,否則一個錯誤的命令可能會摧毀整個系統。
關於用戶的id
在Linux系統中,
用戶也有自己的UID身份賬號且唯一
系統管理員UID為0 ,系統用戶UID為1~999
Linux安裝的服務程序都會創建獨有的用戶負責運行。
普通用戶UID從1000開始:由管理員創建
用戶組GID
為了方便管理屬於同一組的用戶,Linux 系統中還引入了用戶組的概念。通過使用用戶組號碼(GID,Group IDentification),我們可以把多個用戶加入到同一個組中,從而方便為組中的用戶統一規劃權限或指定任務。
假設有一個公司中有多個部門,每個部門中又 有很多員工。如果只想讓員工訪問本部門內的資源,則可以針對部門而非具體的員工來設 置權限。
例如,可以通過對技術部門設置權限,使得只有技術部門的員工可以訪問公司的 數據庫信息等。Linux管理員在創建用戶時,將自動創建一個與其同名的用戶組,這個用戶組只有該用戶一個人
普通用戶的創建
useradd 用戶名 #添加用戶
passwd 用戶名 #設置密碼
root用戶可以修改其他所有人的密碼,且不需要驗證
groupadd 組名 # 添加用戶組
切換用戶
su命令可以切換用戶身份的需求
su - username su命令中間的-號很重要,意味著完全切換到新的用戶,即環境變量信息也變更為新用戶的信息
一般的順序是(可以不用遵循)
whoami 先看下當前用戶
第一種方法
第二種方法
ctrl + d (logout)退出登錄
ssh [email protected] 再輸入密碼登錄
小結
1、超級用戶root切換普通用戶無需密碼
2、普通用戶切換超級用戶root需要root的密碼
3、普通用戶權限較小,只能查看基本信息
4、$是普通用戶的命令提示符,#是超級用戶的命令提示符
- 一般情況下,在生產環境避免直接用root用戶,除非有特殊系統維護需求,使用完立刻退回普通用戶
- 非交互式設置密碼(echo "redhat"|passwd --stdin oldboy && history -c)
刪除用戶(只有root可以刪除)
userdel 參數 用戶名
-r 同時刪除用戶以及家目錄
-f 強制刪除用戶
sudo命令
在/etc/sudoers
中設置了可執行sudo指令的用戶,可以使用其他身份來執行命令,預設身份為root
若其未經授權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,之後有5分鐘的有效期限,超過期限則必須重新輸入密碼。
sudo 選項 參數
-b:在後臺執行指令;
-h:顯示幫助;
-H:將HOME環境變量設為新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;。
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s<shell>:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本信息。
shdo命令用在什麽時候?
權限不夠,這時候需要sudo ls /root 以root身份去運行,chaoge權利小,root總可以了吧!!
這是由於配置sudo必須編輯/etc/sudoers文件,並且只有root才能修改,咱們可以通過visudo命令直接編輯sudoers文件,使用這個命令還可以檢查語法,比直接編輯 vim /etc/sudoers更安全
visudo 編輯sudoers文件 寫入 ## Allow root to run any commands anywhere root ALL=(ALL) ALL chaoge ALL=(ALL) ALL #允許chaoge在任何地方,執行任何命令
然後切換用戶,就可以使用sudo ls /root/ 的命令了
小結:
想要查看超出權限的命令必須有sudo
必須使用密碼登錄(當前用戶的密碼)
時間限制5分鐘,超出重新登錄
文件與目錄權限
Linux權限的目的是(保護賬戶的資料)
Linux權限主要依據三種身份來決定:
- user/owner 文件使用者,文件屬於哪個用戶
- group 屬組,文件屬於哪個組
- others 既不是user,也不再group,就是other,其他人
什麽是權限
在Linux中,每個文件都有所屬的所有者,和所有組,並且規定了文件的所有者,所有組以及其他人對文件的,可讀,可寫,可執行等權限。
對於目錄的權限來說,可讀(r)是讀取目錄文件列表,可寫(w)是表示在目錄內新增,修改,刪除文件。可執行(x)表示可以進入目錄
權限,第一個字母為文件類型,後續9個字母,每3個一組,是三種身份的權限 文件鏈接數 文件擁有者-屬主 文件擁有組-屬組 文件大小 最後一次被修改的時間日期 文件名解讀上圖:
先分析一下文件的類型
- 一般文件
d 文件夾
l 軟連接(快捷方式)
b 塊設備,存儲媒體文件為主
c 代表鍵盤,鼠標等設備
文件權限
r read 可讀 4 w write 寫入,編輯 2 x executable 可以執行 1
文件權限與數字轉化
ls -l /var/log/mysqld.log -rw-r--r-- 1 mysql mysql 6735642 8月 11 14:19 /var/log/mysqld.log 這個就代表mysqld.log文件屬主是mysql,屬組是mysql,只有mysql用戶可以讀取編寫這個文件,其他人只能讀此文件。
每種身份最低是0分,最高是r+w+x 7分
因此三種身份,最高權限是777,最低是000
-rw-rw-r-- 1 root root 0 8月 11 16:41 pyyu.txt 因此可知mysqld.log的權限是 屬主是6 r+w(4+2) 屬組是4 r(4) 其他人是4 r(4)
查看用戶權限命令
id 用戶 [root@oldboy_python ~ 16:34:52]#id root uid=0(root) gid=0(root) 組=0(root)
修改文件權限屬性
修改屬主 chown 要修改的屬主 文件
修改數組 chgrp 要修改的屬組 文件
修改權限的命令 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的快捷方式)
軟連接也叫做符號鏈接,常用於安裝軟件的快捷方式配置,如python,nginx等
ln -s 目標文件(目錄) 別名
示例
原始文件
建立軟連接
結果
ps1
echo $PS1
[\u@\h \W]\$ 這就是linux底下的PS1變量,用於對命令提示符的修改
\u 用戶名
@ 是占位符
\h 代表主機名
\W 代表最後一個文件夾路徑
\w 當前路徑的,絕對路徑寫法
\t 時間
[ ]
$ 代表用戶身份
如何修改PS1變量
PS1="[\u@\h \w \t]\$"
永久生效的方法
vim /etc/profile 相當於合同文件一樣,每次開機登錄的時候,都會加載這個文件的變量
PS1="[\u@\h \w \t]\$"
修改主機名
hostnamectl set-hostname 主機名 (重新登錄會話,主機名即生效)
遇見了yum報錯的問題,yum install nginx 的時候,說已經有yum進程存在了,並且pid是 2544
為什麽呢?
這是因為你之前用了yum命令,並且沒有正確退出,後臺已經有yum進程了
如果你不需要他了,弄死他
kill 2544 殺死已經存在的yum進程
如果你執行這個命令反復的失敗,進程無法殺死
kill -9 強制殺死進程,一定會殺掉
盡量少用kill -9 ,因為這是流氓命令,會強制禍害到其他進程
咱們在公司中,盡量kill pid 即可
tar命令:壓縮,解壓縮
tar命令:用來壓縮和解壓文件,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=<範本樣式>:排除符合範本樣式的文件。tar 參數
常用參數
-x 解壓
-c 壓縮
-z 以gzip格式壓縮,完全可以代替gzip命令(必須註明是 .gz 讓別人知道是什麽格式)
-v或--verbose:顯示指令執行過程;
-f<備份文件>或--file=<備份文件>:指定備份文件;
壓縮
tar 參數 壓縮後的文件名 要壓縮的文件
示例:
tar -cf all.tar *
tar -zcf all.tar.gz *
gzip命令
gzip用來壓縮文件,是個使用廣泛的壓縮程序,被壓縮的以".gz"擴展名
gzip可以壓縮較大的文件,以60%~70%壓縮率來節省磁盤空間
-d或--decompress或----uncompress:解開壓縮文件; -f或——force:強行壓縮文件。 -h或——help:在線幫助; -l或——list:列出壓縮文件的相關信息; -L或——license:顯示版本與版權信息; -r或——recursive:遞歸處理,將指定目錄下的所有文件及子目錄一並處理; -v或——verbose:顯示指令執行過程;gzip命令
tar -zcf all.tar.gz *
實際上執行的是
tar -cf all.tar *
gzip all.tar (對壓縮文件再次進行壓縮)
gzip -dv all.tar.gz (對all.tar.gz文件解壓,解壓後得到 all.tar)
gzip -l 文件 (顯示壓縮文件信息,但並不解壓)
解壓
tar 參數 壓縮後的文件(不管什麽格式)
示例:
tar -xf all.tar
tar -xf all.tar.gz
netstat命令
netstat命令是用來打印Linux中網絡系統的狀態信息(端口信息),可讓你得知整個Linux系統的網絡情況
示例:
netstat 參數
netstat -tunlp -t或--tcp:顯示TCP傳輸協議的連線狀況; -u或--udp:顯示UDP傳輸協議的連線狀況; -n或--numeric:直接使用ip地址,而不通過域名服務器; -l或--listening:顯示監控中的服務器的Socket; -p或--programs:顯示正在使用Socket的程序識別碼和程序名稱; -a或--all:顯示所有連線中的Socket;
netstat -tunlp |grep 80 #過濾出web頁面的命令
netstat -tunlp |grep 8000 #過濾出django的端口命令
ps命令
ps 命令用於查看系統中的進程狀態,格式為“ps [參數]”。
ps 命令常用參數 -a 顯示所有進程 -u 用戶以及其他詳細信息 -x 顯示沒有控制終端的進程
ps -ef|grep nginx #過濾出nginx進程
ps -ef|grep python #過濾出python進程
kill命令,殺死進程
kill命令用來刪除執行中的程序或工作。kill可將指定的信息送至程序。
選項
-a:當處理當前進程時,不限制命令名和進程號的對應關系; -l <信息編號>:若不加<信息編號>選項,則-l參數會列出全部的信息名稱; -p:指定kill 命令只打印相關進程的進程號,而不發送任何信號; -s <信息名稱或編號>:指定要送出的信息; -u:指定用戶。
只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略,下面是常用的信號:
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
killall命令
通常來講,復雜軟件的服務程序會有多個進程協同為用戶提供服務,如果逐個去結束這 些進程會比較麻煩,此時可以使用 killall 命令來批量結束某個服務程序帶有的全部進程。
例如nginx啟動後有2個進程 killall nginx
Linux中文顯示設置(防止中文亂碼)
此項優化為可選項,根據個人情況選擇是否調整Linux系統的字符集,字符集就是一套文字符號以及編碼。
Linux下常用字符集有:
- GBK 實際企業應用較少
- UTF-8 廣泛支持,MYSQL也使用UTF-8,企業廣泛使用
#查看系統當前字符集
echo $LANG
#檢查xshell crt的字符集
#命令修改字符集
export LANG=en_US.utf8
1.修改配置文件/etc/locale.confLANG="zh_CN.UTF-8"
2.更改後查看系統語言變量
locale
亂碼核心解決辦法
1.系統字符集utf8 2.xshell字符集utf8 3.文件字符集一致zh_CN.UTF-8
linux中文設置:
可以修改變量,臨時生效
或者修改寫入配置文件
LANG="zh_CN.UTF-8"咱們修改的PATH變量,PS1變量,LANG語言變量,
PATH=""
PS1=""
LANG=""
但是這樣重啟就失效了,那咱們需要他永久生效,因此需要寫入配置文件
那麽和用戶環境變量有關的配置文件,叫做/etc/profile ,
因此把更改變量的命令,寫入到這個文件,以後每次開機,都會讀取,達到永久生效的作用export PS1="[\u@\h \w \t]\$"
DNS
linux的dns配置文件 /etc/resolv.conf
cat /etc/resolv.conf
命令查看解析dnsnslookup baidu.com
nslookup www.a.shifen.com (百度網址)添加DNS
vim 編輯配置文件 /etc/resolv.conf
# 添加DNS服務器
nameserver 119.29.29.29
nameserver 223.5.5.5
nslookup命令是常用域名查詢工具,就是查DNS信息用的命令。 nslookup4有兩種工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用戶可以向域名服務器查詢各類主機、域名的信息,或者輸出域名中的主機列表。而在“非交互模式”下,用戶可以針對一個主機或域名僅僅獲取特定的名稱或所需信息。 進入交互模式,直接輸入nslookup命令,不加任何參數,則直接進入交互模式,此時nslookup會連接到默認的域名服務器(即/etc/resolv.conf的第一個dns地址)。或者輸入nslookup -nameserver/ip。進入非交互模式,就直接輸入nslookup 域名就可以了。
計劃任務crond服務
什麽是計劃任務:
後臺運行,到了預定的時間就會自動執行的任務,前提是:事先手動將計劃任務設定好。這就用到了crond服務
查看計劃任務
tail -f /var/log/cron
添加計劃任務
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 (選項)(參數)
-e:編輯該用戶的計時器設置; -l:列出該用戶的計時器設置; -r:刪除該用戶的計時器設置; -u<用戶名稱>:指定要設定計時器的用戶名稱。
寫計劃任務時,命令必須加上絕對路徑,否則會出現這種情況:從日誌中看,確實觸發了計劃任務的執行,但是命令卻沒有執行成功,比如* * * * * reboot就會出現這種情況,需要將reboot寫成/usr/sbin/reboot
調用crontab -e 編輯該用戶的計時器 設置
進入編輯模式,並輸入命令(每分鐘向wenjian.txt插入‘你好啊‘)
結果
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字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。 逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9” 中杠(-):可以用整數之間的中杠表示一個整數範圍,例如“2-6”表示“2,3,4,5,6” 正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
用戶
Linux 用戶、權限