sudo命令用來以其餘身份來執行命令,預設的身份爲root。在/etc/sudoers
中設置了可執行sudo指令的用戶。若其未經受權的用戶企圖使用sudo,則會發出警告的郵件給管理員。用戶使用sudo時,必須先輸入密碼,以後有5分鐘的有效期限,超過時限則必須從新輸入密碼。python
語法:linux
sudo 【選項】【參數】 -b:在後臺執行指令; -h:顯示幫助; -H:將HOME環境變量設爲新身份的HOME環境變量; -k:結束密碼的有效期限,也就是下次再執行sudo時便須要輸入密碼;。 -l:列出目前用戶可執行與沒法執行的指令; -p:改變詢問密碼的提示符號; -s<shell>:執行指定的shell; -u<用戶>:以指定的用戶做爲新的身份。若不加上此參數,則預設以root做爲新的身份; -v:延長密碼有效期限5分鐘; -V :顯示版本信息。
實例nginx
這個sudo命令用在何時呢?git
看圖shell
怎麼辦?權限不夠,這時候須要sudo ls /root 以root身份去運行,chaoge權利小,root總能夠了吧!!django
這是因爲配置sudo必須編輯/etc/sudoers文件,而且只有root才能修改,我們能夠經過visudo命令直接編輯sudoers文件,使用這個命令還能夠檢查語法,比直接編輯 vim /etc/sudoers更安全vim
visudo 編輯sudoers文件 寫入 ## Allow root to run any commands anywhere root ALL=(ALL) ALL chaoge ALL=(ALL) ALL #容許chaoge在任何地方,執行任何命令
此時切換chaoge用戶 #su命令用於切換當前用戶身份到其餘用戶身份,變動時須輸入所要變動的用戶賬號與密碼。 su - chaoge 已經可使用sudo ls /root 命令
若想取消用戶的sudo這個權限 在sudoeres將該用戶刪除便可
Linux權限的目的是(保護帳戶的資料)windows
Linux權限主要依據三種身份來決定:centos
在Linux中,每一個文件都有所屬的全部者,和全部組,而且規定了文件的全部者,全部組以及其餘人對文件的,可讀,可寫,可執行等權限。 對於目錄的權限來講,可讀是讀取目錄文件列表,可寫是表示在目錄內新增,修改,刪除文件。可執行表示能夠進入目錄
解讀上圖:瀏覽器
先來分析一下文件的類型
- 通常文件 d 文件夾 l 軟鏈接(快捷方式) b 塊設備,存儲媒體文件爲主 c 表明鍵盤,鼠標等設備
r read可讀,能夠用cat等命令查看 w write寫入,能夠編輯或者刪除這個文件 x executable 能夠執行
權限這裏測試不要用root實驗!!!!root太牛逼了
請用普通用戶執行!!!!!測試文件、文件夾權限操做,請用普通用戶!
r 能夠對此目錄執行ls列出全部文件 w 能夠在這個目錄建立文件 x 能夠cd進入這個目錄,或者查看詳細信息
權限與數字轉化
普通用戶只能修改本身的文件名,時間與權限(注意) 所以修改其餘用戶權限,只能用最nb的root用戶
當前文件信息 -rw-r--r--. 1 root root 0 Jun 28 14:36 小護士電話.txt 修改屬主: chown roo 小護士電話.txt 查看信息: -rw-r--r--. 1 roo root 0 Jun 28 14:36 小護士電話.txt 修改屬組: chgrp roo 小護士電話.txt 查看信息: -rw-r--r--. 1 roo roo 0 Jun 28 14:36 小護士電話.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 11.txt 方法1 減去屬主的寫權限 chmod u-w 11.txt 查看權限 -r--rw-r-- 1 root root 0 8月 11 16:41 11.txt 方法2 屬主添加可讀可寫可執行權限 chmod 700 11.txt 屬主可讀可寫可執行 屬組可讀可執行 其餘人可讀可執行 chmod 755 11.txt
軟鏈接也叫作符號連接,相似於windows的快捷方式。
經常使用於安裝軟件的快捷方式配置,如python,nginx等
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]\$"
netstat [選項] -t或--tcp:顯示TCP傳輸協議的連線情況; -u或--udp:顯示UDP傳輸協議的連線情況; -n或--numeric:直接使用ip地址,而不經過域名服務器; -l或--listening:顯示監控中的服務器的Socket; -p或--programs:顯示正在使用Socket的程序識別碼和程序名稱; -a或--all:顯示全部連線中的Socket;
ps -ef 顯示全部進程 經過進程id號管理 #殺死進程的命令 kill 進程id kill還有一個參數 -9 參數 kill -9 用於殺死不重要的殭屍進程 ,強制殺死進程
批量殺死進程的命令
pkill 進程的名字
安裝:yum install -y 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:將範圍侷限在現行的文件系統中,若指定目錄下的某些子目錄,其存放於另外一個文件系統上,則將該目錄予以排除在尋找範圍外。
#dns解析流程 1.瀏覽器輸入域名的時候,瀏覽器優先去hosts文件中尋找是否有對應記錄 2.沒有記錄就去dns本地緩存中尋找,是否有記錄 3.尋找是否配置了dns服務器,而後去公網中尋找記錄 4.找到了就緩存到本地dns記錄中, 5.解析結束
#dns域名解析系統 做用:把域名解析爲ip地址,網絡中的一個超大電話簿 公網中,存在dns服務器,進行解析 在linux中的dns服務器配置文件是 /etc/resolv.conf 裏面定義了網絡中的dns dns : 阿里巴巴: 223.5.5.5 223.6.6.6 騰訊的dns:119.29.29.29 谷歌的dns:8.8.8.8 114的dns:114.114.114.114 #hosts文件,強制解析了,也可能更換了你的dns記錄,用於測試本地的假域名
什麼是計劃任務:
後臺運行,到了預約的時間就會自動執行的任務,前提是:事先手動將計劃任務設定好。這就用到了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 -e #編輯定時任務的文件 crontab -l #列出定時任務的規則
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任務配置基本格式:
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字段若是是星號,則表示在知足其它字段的制約條件後每個月都執行該命令操做。 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 每隔三分鐘執行下時間同步
全部命令必定要用絕對路徑來寫!
分 時 日 月 周 你要執行的命令的絕對路徑 * * * * * #每分鐘執行一次命令 * * * * * 命令絕對路徑 #每小時的3,15分組執行命令 分 時 日 月 周 你要執行的命令的絕對路徑 3,15 * * * * #每小時的整點執行命令 0 * * * * #在上午8-11點的第3和第15分鐘執行 3,15 8-11 * * * #每晚21:30執行命令 30 21 * * * #每週6、日的下午1:30執行命令 30 13 * * 6,0 #每週一到週五的凌晨1點,清空/tmp目錄的全部文件 0 1 * * 1-5 /usr/bin/rm -rf /tmp/* #每晚的21:30重啓nginx 30 21 * * * /usr/bin/systemctl restart nginx #每個月的1,10,22日的4:45重啓nginx 45 4 1,10,22 * * /usr/bin/systemctl restart nginx #每一個星期一的上午8點到11點的第3和15分鐘執行命令 3,15 8-11 * * 1
1
2
3
|
#linux的yum倉庫目錄是:
cd
/
etc
/
yum.repos.d
/
這個目錄下,第一層中,全部以.repo結尾的文件,都會識別爲一個yum倉庫
(這個倉庫就是一個url),url中提供了各類rpm包的下載,yum工具回去查找
|
配置阿里雲的yum源的步驟 1.地址以下:https://opsx.alibaba.com/mirror 2.備份本來的yum倉庫文件 cd /etc/yum.repos.d #新建文件夾 mkdir allrepo #移動全部的repo文件到這個目錄下,咱不用它了 mv * ./allrepo 3.下載新的阿里雲的yum倉庫文件 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #-O 表明把Centos-7.repo 下載到指定目錄,且更名 4.配置額外的第三方倉庫 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 5.能夠測試yum工具安裝一個nginx yum install nginx -y 6.啓動nginx測試訪問 systemctl start nginx 七、關閉nginx systemctl stop nginx
yum還提供了哪些用法
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 軟件包組 安裝軟件包組 centos7用systemctl 管理服務 例如: systemctl start/stop/reload/restart/ nginx systemctl enable nginx #設置nginx開機自啓 systemctl disable nginx #禁止nginx開機自啓 systemctl stop firewalld #臨時關閉防火牆服務 systemctl disable firewalld #永久關閉開機自啓
(注意,你的PATH變量,編譯安裝的python3必定要放在最前面)
一、下載虛擬環境工具(這裏是在物理環境下安裝的) pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv 二、建立虛擬環境,分別運行一個django1和django2 進入一個統一管理的目錄,管理虛擬環境例如/opt/allenv mkdir /opt/allenv cd /opt/allenv # 建立虛擬環境命令 virtualenv --no-site-packages --python=python3 venv1 #參數解釋 --no-site-packages 不要任何的第三方包 --python 是指定一個解釋器 咱們選的是python3 venv1是虛擬環境文件夾的名字,自定義 三、進入虛擬環境目錄,激活虛擬環境 source是linux的讀取命令,讀取一個腳本文件,激活虛擬環境 source /opt/allenv/venv1/bin/activate 四、虛擬環境使用原理是,修改了PATH變量,根據pATH的優先級,使用解釋器 echo $PATH 五、激活虛擬環境,在venv1下建立django1.11.9項目 pip3 install django==1.11.9 六、再開一個窗口,建立venv2,用於建立django2的項目 django-amind startproject mydjango01 七、退出虛擬環境的命令 deactivate
(將windows中解釋器的模塊,導出到一個文件,而後發送給linux一個新的虛擬環境安裝便可)
1.在windows中導出全部的模塊信息 pip3 freeze > requirements.txt 2.將次文件,發送給linux服務器,可選lrzsz 或scp 3.在linux中安裝便可 # 相對路徑安裝 pip3 install -i https://pypi.douban.com/simple -r requirements.txt # 絕對路徑安裝 pip3 install -i https://pypi.douban.com/simple -r /opt/Python-3.6.2/requirements.txt
window中也建立了虛擬環境,而且模塊都在虛擬環境下
想要導出這個虛擬環境中的模塊,給linxu
步驟: 1.第一步,在windows中激活虛擬環境,在虛擬環境下 pip3 freeze > requirements.txt 2.將次文件,發送給linux服務器,可選lrzsz 或scp 3.在linux中安裝便可 pip3 install -i https://pypi.douban.com/simple -r requirements.txt
一、安裝工具(退出虛擬環境)
1
|
pip3 install
-
i https:
/
/
pypi.douban.com
/
simple virtualenvwrapper
|
二、配置用戶我的變量配置文件,每次開機都加載這個virtualevnwrapper工具
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#系統變量配置文件
/
etc
/
profile
#我的用戶變量配置文件,在用戶家目錄下找到這個~/.bash_profile文件,寫入以下配置
vim ~
/
.bash_profile
#打開文件,寫入以下變量
#設置virtualenv的統一管理目錄
export WORKON_HOME
=
~
/
Envs
#添加virtualenvwrapper的參數,生成乾淨隔絕的環境
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS
=
'--no-site-packages'
#指定python解釋器
export VIRTUALENVWRAPPER_PYTHON
=
/
opt
/
python36
/
bin
/
python
#只有這一步,纔是讓這個工具生效的!!!!!!!
source
/
opt
/
python36
/
bin
/
virtualenvwrapper.sh
|
三、退出會話,從新登陸,查看是否加載了virtualenvwrapper工具
1
|
deactivate
|
四、工具建立後,使用命令管理
1
2
3
4
5
|
4.
工具建立後,使用命令管理
#建立虛擬環境
#建立虛擬環境後會自動激活
mkvirtualenv django1
mkvirtualenv django2
|
五、激活虛擬環境
1
2
|
#激活虛擬環境
workon 虛擬環境的名字(支持tab補全)
|
lsvirtualenv #列出全部虛擬環境的目錄 cdvirtualenv #進入已激活的虛擬環境的目錄 cdsitepackages #進入虛擬環境下的第三方模塊目錄