A.NID B.PID C.UID C.CID # process ID 進程id號 # UID 用戶iD號 ,如何查看?查看的是當前登陸的用戶信息
A./boot B./etc C./var D./dev df -h # 查看linux磁盤空間剩餘量的 ls -lh # 顯示文件夾詳細信息和大小的 du -h # 顯示當前目錄 全部文件大小信息 du -sh . # 顯示當前目錄,總大小 man du # 查看du命令的幫助信息 du -–help # 顯示幫助信息
A.ctrl B.tab C.alt D.esc # B
A.:q B.q C.:wq D.:q! # C
A.rwx B.xrw C.rdx D.rws r 4 w 2 x 1 對應的數字權限轉化 - rw- r-- r-- 1 root root 0 Apr 20 17:31 s16.py - 普通文本的類型 rw- users root用戶讀寫不可執行 r-- 屬組 root組內的成員 只讀 r-- 其餘人 只讀
A.467 B.674 C.476 D.764 # others r-- 4 users u rwx 4+2+1=7 group r+w 6
A.chmod B.touch C.chown D.cat chmod # 修改文件權限的 touch # 建立普通根本 chown change owner # 更改用戶者,更改屬主 chgrp # 更改屬組
A.tar -zxvf mydjango.tar.gz B.tar -xvz mydjango.tar.gz C.tar -czf mydjango.tar.gz D.tar - xvf mydjango.tar.gz # ------------------------ .gz .tar 均可以通多tar命令解壓 tar -x 解壓縮tar後綴的 tar -z 解壓縮 gz後綴的 tar -f 必須制定一個壓縮文件名,這個-f參數,必須寫在最後面 tar -v 顯示壓縮/解壓縮過程
A.rpm -ivh nginx B.rpm -q nginx C.rpm -U nginx D.rpm -x nginx # ------------------ linux的軟件包格式都是rpm的 rpm也是linux提供的一個命令,用於查詢經過yum安裝的軟件 rpm -i # 是安裝軟件 rpm -q query # 查詢軟件 rpm -qi # 詳細信息 rpm -ql # 詳細安裝路徑
A.etc B.bin C.lib D.dev # bin(可執行文件)
A.top B.last c.free D.lastcomm # top - linux任務管理器,查看系統負載狀態,動態進程信息的 # last - 用戶最後登陸的信息
A.free B.top C.lastcomm D.df
A.rwxr—rw- B.rw-r—r— C.—xr—rwx D.rwxr—r—
A.ls .txt B.find /opt -name 「.txt」 C.ls -d .txt D.find -name 「.txt」
A.ssh B.netstat C.ping D.exit # ssh - 遠程登陸 # netstat - 查看linux端口信息的 # ping D.exit(退出會話)
A:q! B.quit C.; D.exit # 建立文件夾,若是父目錄不存在,怎麼辦? 經過小寫的 -p參數,遞歸建立父目錄 mkdir -p
A.-P B.-d C.-f D.-p
A./etc/hostname #主機名 B./etc/hosts #強制寫入域名解析記錄 C./etc/resolv.conf 存放dns服務器的文件 D./etc/networks
centos7 cat /etc/os-release
物理服務器 dell power R720 型號 - 單獨安裝一個操做系統 -經過虛擬化技術,在一臺機器上,安裝N個操做系統 vmware虛擬化技術 我的學習版:vmware workstation 企業版虛擬化 是 vmware vsphere ,安裝處一個esxi虛擬化服務器 雲服務器:一個路飛學城的業務,就是8臺阿里雲,數據庫用的也都是阿里的rds數據庫,提供主從複製,高可用等功能
命令模式 編輯模式 底線命令模式
nginx.conf 多個server{} proxy_pass http://ip
gipz -d *.gz
tar -xf .tar
xz -d .xz
Browser/Server
/etc/resolv.conf 添加2條主備dns記錄 nameserver dns服務器ip
ctontab -e 50 17 5,15,25 /usr/bin/systemctl restart nginx 50 17 5,15,25 /opt/nginx112/sbin/nginx -s reload
/usr/bin/rm -rf /tmp/*
html
30 6 /usr/bin/rm -rf /tmp/
前端
5-15 18,20 3 /usr/bin/cp -r /var/lib/mysql /opt/
vue
rw- 屬主:可讀可寫 r— 屬組:可讀 rw- other:可讀可寫
systemctl
ssh root@123.206.16.61
node
mysqldump -uroot -p
python
root用戶的身份提示符 重啓定向覆蓋寫 重定向追加寫 $PATH 取值符 . 當前目錄 .. 上級目錄
別名alias
mysql
chgrp alex test.py
linux
xftp lrzsz scp
ios
pkill mariadb ps -ef|grep mysql kill pid killall mariadb
nginx
自上而下的順序 1.優先查找本地dns緩存 2.查找本地/etc/hosts文件,是否有強制解析 3.若是沒有去/etc/resolv.conf指定的dns服務器中查找記錄(需聯網 4.在dns服務器中找到解析記錄後,在本地dns中添加緩存 5.完成一次dns解析
yum rpm 源碼包
更改端口 port 6380 開啓protomode yes安全模式 設置redis密碼 redis-server redis.conf redis.conf 內容以下 port 6380 protomode yes
1.docker打包鏡像 2.手動解決環境問題 pip3 freeze導出依賴 pip3 install -r xxx.txt
在開發Python應用程序的時候,系統安裝的Python3只有一個版本:3.4。全部第三方的包都會被pip安裝到Python3的site-packages目錄下。 若是咱們要同時開發多個應用程序,那這些應用程序都會共用一個Python,就是安裝在系統的Python 3。若是應用A須要jinja 2.7,而應用B須要jinja 2.6怎麼辦? 這種狀況下,每一個應用可能須要各自擁有一套「獨立」的Python運行環境。virtualenv就是用來爲一個應用建立一套「隔離」的Python運行環境。 1.安裝 pip3 install virtualenv 2.建立虛擬環境 virtualenv —no-site-packages —python=python3 venv1 3.激活虛擬環境 sourcce /opt/MyVirtualenv/venvDjango1/bin/activate 4.測試 python3 或者 pip3 list 5.如何證實虛擬環境是正常的?
virtualenv 的一個最大的缺點就是,每次開啓虛擬環境以前要去虛擬環境所在目錄下的 bin 目錄下 source 一下 activate,這就須要咱們記住每一個虛擬環境所在的目錄。 Virtaulenvwrapper是virtualenv的擴展包,用於更方便管理虛擬環 1.安裝虛擬環境 pip3 install virtualenvwrapper 2.建立並進入虛擬環境 mkvirtualenv env1 3.切換虛擬環境 workon 虛擬環境名 redis是什麼? Redis是一個開源的基於內存的,key-value數據結構的緩存數據庫,支持數據持久化,m-s複製,經常使用數據類型有string set hash list, 最佳應用場景:適用於數據變化快且數據庫大小可碰見(適合內存容量)的應用程序。 例如:股票價格、數據分析、實時數據蒐集、實時通信。 Redis只能使用單線程,性能受限於CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒 其餘nosql數據庫? Memcached能夠利用多核優點,單實例吞吐量極高,能夠達到幾十萬QPS(取決於key、value的字節大小以及服務器硬件性能,平常環境中QPS高峯大約在4-6w左右)。適用於最大程度扛量。 只支持簡單的key/value數據結構,不像Redis能夠支持豐富的數據類型。 沒法進行持久化,數據不能備份,只能用於緩存使用,且重啓後數據所有丟失。 MongoDB 更高的寫負載,MongoDB擁有更高的插入速度,支持高可用性,支持索引高速查詢,佔用磁盤空間較大,支持持久化
Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案 redis哨兵是監控redis主從服務,不存儲數據的,做用是用於自動切換reidis服務主從關係,即當主庫服務中止後,會將其中一個從庫變爲主庫
即便使用哨兵,redis每一個實例也是全量數據存儲,每一個redis存儲的內容都是完整的數據。 爲了最大化利用內存,能夠採用cluster羣集,就是分佈式存儲。即每臺redis存儲不一樣的內容。 採用redis-cluster架構正是知足這種分佈式存儲要求的集羣的一種體現。redis-cluster架構中,被設計成共有16384個hash slot。每一個master分得一部分slot,其算法爲:hash_slot = crc16(key) mod 16384 ,這就找到對應slot。採用hash slot的算法,其實是解決了redis-cluster架構下,有多個master節點的時候,數據如何分佈到這些節點上去。key是可用key,若是有{}則取{}內的做爲可用key,不然整個能夠是可用key。羣集至少須要3主3從,且每一個實例使用不一樣的配置文件。
nginx實現動靜分離,靜態請求nginx直接返回 動態請求 uwsgi_pass 後端uwsgi的地址 靜態資源指定的是網站的CSS/JS/HTML文件 動態資源通常指的是數據,即後端給前端提供的數據
ln -s 目標文件名 軟鏈接名
/etc/profile 全局變量配置文件,每次機器開機都會加載這個文件中的變量 vim /etc/profile 添加PATH = /opt/python36/bin: source /etc/profile
server{ # 一個虛擬主機 listen 80; # 監聽的端口,訪問的端口80 server_name 192.168.11.11; # 訪問的域名192.168.11.11 location / { # 訪問的路徑 / root html; # 指定頁面的目錄,訪問/會找到html目錄 index index.html # 指定網頁,訪問/就是訪問index.html } } server{ #虛擬主機 listen 8080; #nginx監聽端口 server_name 192.168.11.11; #nginx訪問域名 location / { #location匹配url include uwsgi_params; #將uwsgi參數添加進nginx uwsgi_pass 0.0.0.0:8000; #反向代理轉發請求給uwsgi } }
supervisor進程管理工具 使用: 1.安裝 easy_install supervisor 2.生成配置文件 echo_supervisord_conf > /etc/supervisor.conf 3.寫入自定義的配置 vim /etc/supervisor.conf
部署路飛: 1.安裝python3 環境 2.安裝 mysql,redis,nginx 3.部署前端 1.安裝node.js的環境 2.安裝依賴包 npm install 3.修改axios的發送的端口接口 axios.get('後臺接口的地址') 4.打包 4.部署後端 1.安裝virtualenv 2.建立虛擬環境 3.安裝django和uwsgi,以及項目的依賴包 4.修改uwsgi的配置文件 5.經過uwsgi -ini 配置文件啓動django項目 5.配置nginx 1.建立兩個虛擬主機,分別監聽80和8000端口 2.訪問80端口是訪問呢vue 3.訪問8000端口是vue發起的8000端口請求,反向代理到9000的uwsgi 6.啓動nginx,mysql,redis 7.經過supervisor來管理
linux容器技術實現軟件 docker應用於快速構建應用,解決環境依賴等問題
鏡像 容器 倉庫 三大生命週期 1.下載鏡像,運行出容器實例,經過docker hub 或者私有容器倉庫,管理鏡像文件 2.安裝啓動後,使用 獲取docker鏡像 ,這個鏡像就如同那個iso鏡像系統文件 docker pull centos 獲取centos鏡像文件
經過鏡像,生成容器實例 docker run centos
容器中必須有進程在後臺運行,不然就會掛掉
容器就是將應用程序隔離,如同一個集裝箱git
class foo(): def init(self): self.name="我是郭德綱" f1=foo() f2=foo() f3=foo() 1.掌握dockerfile的編寫 2.掌握經常使用docker管理命令便可
docker images # 查看本地鏡像 docker serach 鏡像 # 經過docker hub搜索鏡像 docker rmi 鏡像 # 刪除鏡像 docker save 鏡像 > 路徑 # 導出鏡像 docker load < 路徑 # 導入鏡像 docker build -t . # 打包生成鏡像
docker run -d 鏡像 解釋器 # 根據鏡像生成容器,後臺容許 docker run -it 鏡像 解釋器 # 根據鏡像生成並進入容器 docker start/stop 容器id # 啓動/中止容器 docker ps # 查看當前運行的容器 docker rm 容器id # 刪除容器 docker exec 容器id # 進入當前正在運行的容器 docker commit 容器id 鏡像名 # 將容器提交爲鏡像 docker contain ls # 查看當前運行的容器
docker pull 鏡像 # 下載鏡像 docker push 鏡像 # 推送鏡像
A.tac B.more C.head D.man
A.命令全部參數 B.是否真的刪除 C.是否有寫的權限 D.文件的路徑 rm -rf -r 遞歸刪除文件夾 -f 強制刪除
rm -rf -r 遞歸刪除文件夾 -f 強制刪除
os subpreocess sys
netstat -tunlp | grep 8080
rdb redis.conf save Redis會按期保存數據快照至一個rbd文件中,並在啓動時自動加載rdb文件,恢復以前保存的數據,經過save指令觸發持久化,redis單獨開啓一個子進程進行數據持久化。 rdb缺點,按期執行,可能會丟失數據,而且數據量特別大時候,若是服務器cpu性能較低,rdb開啓子進程持久化性能影響很大,影響redis對外提供服務的能力。 aof Redis會把每個寫請求都記錄(對數據進行修改的命令)在一個日誌文件裏。 在Redis重啓時,會把AOF文件中記錄的全部寫操做順序執行一遍,確保數據恢復到最新。 隨着AOF不斷地記錄寫操做日誌,由於全部的操做都會記錄,因此一定會出現一些無用的日誌。大量無用的日誌會讓AOF文件過大,也會讓數據恢復的時間過長。 優先:數據安全,不怕數據損壞,如斷電燈問題,還能夠用redis-check-aof修復數據,AOF文件人爲可讀 缺點:佔磁盤,性能損耗高,數據恢復慢 怎麼用rdb和aof 若是既配置了RDB,又配置了AOF,則在進行數據持久化的時候,都會進行,可是在根據文件恢復數據的時候,以AOF文件爲準,RDB文件做廢
(1) master將改變記錄到二進制日誌(binary log)中(這些記錄叫作二進制日誌事件,binary log events); (2) slave將master的binary log events拷貝到它的中繼日誌(relay log); (3) slave重作中繼日誌中的事件,將改變反映它本身的數據。
grant select on . to alex@’%’;
upstream {}
調度算法 概述 輪詢 按時間順序逐一分配到不一樣的後端服務器(默認) weight 加權輪詢,weight值越大,分配到的訪問概率越高 ip_hash 每一個請求按訪問IP的hash結果分配,這樣來自同一IP的固定訪問一個後端服務器 url_hash 按照訪問URL的hash結果來分配請求,是每一個URL定向到同一個後端服務器 least_conn 最少連接數,那個機器連接數少就分發
wget url地址 curl 也是發起http請求的命令
xshell putty securecrt
chmod u+x file
grep -v 「^#」 file |grep -v 「^$」
grep 「abc$」 file1
docker ps -a #查看全部容器記錄 不會丟,由於容器中止了,並無被刪除 docker ps -a能夠看到
docker rm `docker ps -aq` 反引號的做用是 取出命令的結果
docker logs -f 容器id #實時刷新容器內的日誌
WSGI是Web服務器網關接口。它是一個協議,描述了Web服務器(nginx)如何與Web應用程序通訊(django)。 python3 manage.py runserver wsgi wsgiref單機模塊 ,性能很低 uwsgi --socket :8000 --chdir crm.wsgi 在線上,走的協議是 nginx 經過 uwsgi_socket找到 web應用程序 uwsgi
答:Django中實現wsgi的是:wsgiref和uwsgi,wsgiref是開發測試用的,uwsgi是線上用的支持多進程,多線程的web應用 Flask中實現wsgi的是:werkzurg Tornado中實現wsgi的是:tornado和gevent
1)程序解耦 2)數據冗餘,例如rabbitmq的ack機制,消息確認機制 3)削峯能力 4)可恢復性,就算系統中部分組件掛掉,消息在隊列也不丟失,待組件恢復後繼續處理消息。 5)異步通訊,如發紅包,短信等流程丟入隊列,能夠優先級很低的去處理。
1.查看系統負載狀況例如使用 top命令 2.殺死無用的 佔資源的進程 3.系統全局搜索,找到病毒文件, rm -rf 刪掉它 4.還須要檢查定時任務,是否添加了些東西
1:git init—————————初始化 2:git add .————————-從工做區,添加到版本庫 3:git commit -m」xxx」————從暫存區,添加到分支 4.git push origin master 4:git status————————查看狀態 5:git log —————————查看版本庫的日誌 6:git reflog————————查看全部日誌 7:git reset —head 版本號—-切換 8:git stash————————-保存 9:git stash————————-將第一個記錄從「某個地方」從新拿到工做區(可能有衝突) git stash list————————查看「某個地方」存儲的全部記錄 git stash clear——————-清空「某個地方」 git stash pop————————-將第一個記錄從「某個地方」從新拿到工做區(可能有衝突) git stash apply ——————編號,將指定編號記錄從「某個地方」從新拿到工做區(可能有衝突) git stash drop ————————編號 ,刪除指定編號的記錄 10:git branch dev—————建立分支 11:git branch -d dev———-刪除分支 12:git checkout dev————切換分支 13:git merge dev—————-合併分支 14:git branch—————查看全部分支 15:git clone https:xxx——-克隆 16:git add origin https:xxx-起個別名 17:git push origin dev ——添加到dev分支 18:git pull origin master—拉代碼 19:git fetch origin master-去倉庫獲取 20:git merge origin/master-和網上下的master分支合併 協同開發: 默認是master分支————master 開發的分支—————dev 作代碼review————reciew 程序員本身的分支————……. 1:每一個員工建立本身的分支 2:將本身的代碼提交的到本身的分支——xxx,sss,wwww……. 3:由組長或老大作代碼的review,——-代碼提交的review分支 4:再提交到dev. 5: 再合併到master分支
1:man rm————————————查看命令幫助 2:mkdir————————————-建立目錄 3:touch————————————-建立文件 4:cd————————————————切換。 5:ls—————————————————查看目錄 6:ls -lh——————————————查看目錄詳細 7:pwd————————————————-查看當前目錄 8:vim————————————————-添加內容 9:echo————————————————追加內容 10:cat————————————————查看文件內容 11:mv————————————————-移動 12:cp————————————————-拷貝 13:mv————————————————重命名 15:find——————————————-搜索 16:rm————————————————-刪除數據 17:ping———————————————-查看能不能上網 19:tar cf —————————————打壓縮 20:tar xf—————————————-解壓縮 安裝: yum install rpm包安裝 編譯安裝 快捷鍵: 1:Tab鍵—————————————-自動補全命令或路勁。 2:ctrl+l—————————————清屏 3: ctrl+c—————————————取消當前操做 4:vi/vim 快捷鍵: 複製當前行 ——————————yy 粘貼—————————————p 剪切—————————————dd 撤銷—————————————u 恢復—————————————ctrl + r