程序、虛擬環境、mysql
ICMP協議 ---> ping使用的
檢視程序 ps
ps[options]
支援的命令格式
- unix格式,如:-h -e
- BSD格式,如:a,x,u
- GNU長格式,如: --help
選項
#ps
PIDTTYTIMECMD
28019pts/400:00:00ps
83674pts/400:00:00bash
pid終端當前命令佔用cpu的時間命令
a所有的終端
x包括不連線終端的程序(系統自動開啟的)
u顯示程序詳細資訊
f顯示程序樹
k指定排序方式,預設是遞增,如果想遞減,則需要在排序的欄位上加上-
psaux-k%cpu
o指定顯示的屬性,不能跟u同時使用,多個屬性用,分隔
L獲取支援的選項,
-L顯示執行緒
-e相當於ax
-f顯示詳細資訊,相當於u
-F顯示更詳細資訊
-H顯示樹狀結構
-Uusername獲取指定的使用者資訊
常用選項:aux-ef-eFH
ps輸出屬性
VSZ 虛擬記憶體(程式認為可以獲取到的)
RSS 實際記憶體
psr cpu的編號
STAT 狀態
%cpu cpu的佔用率
%mem 記憶體的佔用率
根據名稱來查詢程序
pidofname
#pidofpython
1169825
系統工具
uptime
#uptime
09:17:40up1day,22:19,5users,loadaverage:2.14,1.59,0.84
當前時間當前伺服器執行時長當前的線上使用者數cpu的負載1分鐘5分鐘15分鐘
cpu平均負載:在特定時間之內cpu執行的平均程序數,不超過cpu核心數的2倍認為為良好
top
選項:
-d
重新整理時間
-b
-n #
指定重新整理#次後退出
首部資訊
- uptime資訊。按
l
:顯示與隱藏 - tasks :程序總數,執行,睡眠數,停止數,殭屍程序。
t
- cpu資訊:
%Cpu(s):0.3us,4.6sy,0.0ni,95.0id,0.0wa,0.0hi,0.0si,0.0st
使用者空間系統空間nice值空閒等待硬中斷軟中斷虛擬機器偷走時間
- 記憶體資訊。
m
- cpu分別顯示 。
1
(數字)
排序:
預設是cpu的佔用率。P
M
:記憶體佔用率
T
: cpu的佔用時間
退出:q
修改重新整理頻率:s
,預設是3秒
殺死程序:k
,預設是第一個
W
儲存檔案
htop
在epel源中
效能分析
free
-b位元組
-kkb
-mmb
-ggb
-h人類易讀方式
-c#重新整理次數
vmstat
vmstat[options][delay[count]]
#vmstat13每秒重新整理一次,重新整理3次
procs-----------memory-------------swap-------io-----system--------cpu-----
rbswpdfreebuffcachesisobiboincsussyidwast
1037028162708080858800863434029700
procs:
r:正在執行的程序個數
b:阻塞佇列的長度
memory:
swap:虛擬內容大小
free:空閒實體記憶體的大小
buff:用於buff的大小
cache:使用者cache的大小
swap:
si:從磁碟交換到記憶體的資料速率(kb/s)
so:從記憶體交換到磁碟的資料速率(kb/s)
io:
bi:從磁碟讀取到系統的速率(kb/s)
bo:從系統寫入到磁碟的速率(kb/s)
system:
in:中斷頻率
cs:程序之前切換的頻率
cpu:
us
sy
id
wa
st
iostat
檢視磁碟讀寫速度
iostat 1 10 重新整理頻率與次數
dstat 檢視所有
-ccpu
-d硬碟
-m記憶體
-n網路
-p程序
-rio請求
-sswap
--top-cpu顯示佔用cpu最多的程序
--top-io顯示佔用io最多的程序
--top-mem顯示佔用記憶體最多的程序
--tcp顯示tcp的資訊
--udp顯示udp的資訊
iftop 顯示網絡卡的流量
程序的管理工具
kill
:向程序傳送訊號,實現對程序的管理,每個訊號,對應不同的值,對應不同的含義,不區分大小寫
查詢可用訊號:kill -l
常用訊號:
- sighub 不需要關閉程式,重新載入配置檔案
- sigint 終止程序,相當於ctrl+c
- sigkill 強制殺死程序
- sigterm 終止正在執行的程序
- sigcont 繼續執行
- sigstop 後臺休眠
按照pid: kill-n pid
按照名稱:killall -n name
按照名稱:pkill -n name
作業管理
前臺作業:一直佔用終端的作業
後臺作業:不佔用當前的終端
讓作業運行於後臺:
- ctrl+z 對於啟動中
command &
也會輸出到終端
脫離終端:
nohup command &>/dev/null &
screen
-list檢視所有的screen視窗
-r進入
安全
防火牆
綠盟、深信服、啟明星辰、飛塔、思科、華為、華三等等
4表5鏈
iptables-L檢視防火牆策略
iptables-F清空防火牆
systemctldisablefirewalld開機並啟動
systemctlstopfirewalled
selinux
一般將其關閉:進入配置檔案,修改SELINUX=disabled
。
- 配置檔案 /etc/selinux/config
- setenforce 0 臨時生效
- getenforce 檢視selinux的狀態
Linux中編譯後的軟體如果想刪除,直接刪除編譯生成到目錄就可以
虛擬環境
安裝:
pip3installvirtualenv-ihttps://pypi.tuna.tsinghua.edu.cn/simple
建立虛擬環境:
virtualenv--no-site-packagesenvdir_name
--no-site-packages建立一個全新的python環境
--python指定以哪個python來建立虛擬環境
進入虛擬環境:
sourceenvdir/bin/activate
退出虛擬環境:
deactivate
將Windows中的專案放在Linux中執行,確保環境一致:
在windows上執行如下命令:
#將windows上安裝的包做快照
pipfreeze>requirement.txt
#將requirement.txt傳送到linux上
#切換虛擬機器
pipinstall-rrequirement.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple
virtualenvwrapper
為了解決虛擬環境管理的問題,因為虛擬環境可以在任何目錄下建立
1.安裝
pip3installvirtualenvwrapper-ihttps://pypi.tuna.tsinghua.edu.cn/simple
2.修改檔案
vim~/.bashrc
exportWORKON_HOME=/envdir#設定virtualenv的統一管理目錄
exportVIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'#新增virtualenvwrapper的引數,生成乾淨隔絕的環境
exportVIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3#指定python直譯器
source/opt/python36/bin/virtualenvwrapper.sh#執行virtualenvwrapper安裝指令碼
3.載入~/.bashrc
source~/.bashrc
4.建立環境
mkvirtualenvdjango11建立並切換
5.進入虛擬環境
workonname
6.切換到當前虛擬環境的資料夾
cdvirtualenv
7.切換到當前虛擬環境的第三方包的資料夾
cdsitepackages
8.退出
deactivate
9.列出當前管理的虛擬環境
lsvirtualenv
10.列出當前虛擬環境的第三方包
lssitepackages
11.刪除虛擬環境
rmvirtualenv必須要退出才能刪除
mysql
mariadb是mysql的分支,可以直接在官方網站下載。
下載:
wgethttp://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar
解壓:
tarxfMySQL-5.6.44-1.el7.x86_64.rpm-bundle.tar
安裝:
yuminstall-y*.rpm
預設安裝位置:/var/lib/mysql
,配置檔案/etc/my.cnf
為mysql系統使用者增加讀寫許可權chown mysql -R /mydata/mysql
其中mydata目錄是mysql資料儲存位置,可在配置檔案中檢視與修改。
啟動服務systemctl start mysqld
報錯資訊:
2019-08-30T11:18:22.976635Z0[Warning]Can'tcreatetestfile/mydata/mysql/localhost.lower-test
2019-08-30T11:18:22.976687Z0[Note]/usr/sbin/mysqld(mysqld5.7.27)startingasprocess2788...
2019-08-30T11:18:22.980289Z0[Warning]Can'tcreatetestfile/mydata/mysql/localhost.lower-test
2019-08-30T11:18:22.980338Z0[Warning]Can'tcreatetestfile/mydata/mysql/localhost.lower-test
原因:selinux
解決辦法:setenforce0
重置密碼
日誌檔案/var/log/mysqld.log
預設密碼:
grep'pass'/var/log/mysqld.log
#初識化密碼
mysql_secure_installation
輸入root密碼
是否要修改密碼
是否要修改root密碼(大小寫、數字、特殊字元)
是否要刪除匿名使用者
是否禁止root遠端登入
是否要刪除test資料庫
是否要重新整理表的許可權
密碼校驗規則
設定密碼的校驗規則
mysql>setglobalvalidate_password_policy=0;
0校驗級別最低,只校驗密碼的長度,長度可以設定
1必須包括大寫字母、小寫字母、數字、特殊字元
2必須滿足上面兩條,並追加,對於密碼中任意連續的4個(或者4個以上)字元不能是字典中的單詞
mysql>setglobalvalidate_password_length=3;修改密碼的最短長度
建立使用者
createuser'username'@'ip'identifiedby'password';
全部ip的話則是%
檢視許可權
showgrants;
使用者授權
mysql>grantallon*.*to'root'@'%'identifiedby'1234';
QueryOK,0rowsaffected,1warning(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
mysql主從
主伺服器上配置如下,進入配置檔案/etc/my.cnf
server-id=1設定id
log-bin=/mydata/log/master-bin啟動binlog日誌
sync_binlog=1確保主從複製事務安全
主伺服器執行如下sql
mysql>grantreplicationslaveon*.*to'slave'@'192.168.21.131'identifiedby'1234';
QueryOK,0rowsaffected,1warning(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.01sec)
showmasterstatus\G
從服務配置如下:
server-id=12
relay_log=/mydata/log/slave-log
sync_binlog=1
read-only=ON
從伺服器執行如下sql
CHANGEMASTERTO
MASTER_HOST='master2.example.com',
MASTER_USER='replication',
MASTER_PASSWORD='password',
MASTER_PORT=3306,
MASTER_LOG_FILE='master2-bin.001',
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;#監控主伺服器的時間
#連線主庫
changemastertomaster_host='192.168.21.128',master_user='slave',master_password='1234';
#啟動程序
startslave;
#檢視狀態
showslavestatus\G
問題:
Last_IO_Error:Fatalerror:TheslaveI/OthreadstopsbecausemasterandslavehaveequalMySQLserverUUIDs;theseUUIDsmustbedifferentforreplicationtowork.
解決辦法:
rm-rf/mydata/mysql/auto.cnf
systemctlrestartmysqld
mysql備份與恢復
備份
mysqldump
- 鎖表
- 備份特別慢,適用於資料量較小
- 不可以做增量備份
- 單執行緒
-A,--all-databases所有的庫
-B指定備份的庫
—F備份前重新整理日誌
--flush-privileges重新整理授權表
-p密碼
-u使用者
-P埠
觸發器
儲存過程和儲存函式
##備份
mysqldump-uroot-S/mydata/mysql/mysql.sock-A-p>mysql.sql
##恢復一
直接在資料庫裡面sourcemysql.sql檔案
##恢復二
mysql-uroot-p<mysql.sql
xtrabackup
- 多程序
- 支援增量備份
- 鎖行
安裝
yuminstallhttps://repo.percona.com/yum/percona-release-latest.noarch.rpm#安裝yum倉庫
yuminstall-ypercona-xtrabackup-24
--target-dir=name#指定備份生成的目錄
--backup備份
--prepare準備
--databases=namefilteringbylistofdatabases.
--databases-file=name配置檔案
建立一個使用者
mysql>createuser'backup'@'localhost'identifiedby'backup';
QueryOK,0rowsaffected(0.00sec)
mysql>grantreload,locktables,process,replicationclienton*.*to'backup'@'localhost';
QueryOK,0rowsaffected(0.00sec)
mysql>flushprivileges;
QueryOK,0rowsaffected(0.00sec)
備份
xtrabackup--backup--target-dir=/mydata/backup/base-ubackup-pbackup--socket=/mydata/mysql/mysql.sock
###看得如下資訊,代表成功
xtrabackup:Transactionlogoflsn(5480853)to(5480862)wascopied.
19090209:25:09completedOK!
恢復
準備檔案
xtrabackup--prepare--target-dir=/mydata/backup/base
InnoDB:Startingshutdown...
InnoDB:Shutdowncompleted;logsequencenumber5482536
19090209:28:12completedOK!
恢復檔案
cd/mydata/backup/base
cp-rfhello/mydata/mysql/
chownmysql.mysql/mydata/mysql/hello/-R
恢復全部檔案
xtrabackup--copy-back--target-dir=/mydata/backup/base
chownmysql.mysql*-R
增量備份
xtrabackup--backup--target-dir=/mydata/backup/t1--incremental-basedir=/mydata/backup/base-uroot-p--socket=/mydata/mysql/mysql.sock
--incremental-dir全備的路徑
xtrabackup--backup--target-dir=/mydata/backup/t2--incremental-basedir=/mydata/backup/t1-uroot-p--socket=/mydata/mysql/mysql.sock
--incremental-basedir應該是上一次的增量備份目錄
xtrabackup--prepare--apply-log-only--target-dir=/mydata/backup/base
恢復(只能全部刪除以後再恢復)
xtrabackup--prepare--apply-log-only--target-dir=/mydata/backup/base
xtrabackup--prepare--apply-log-only--target-dir=/mydata/backup/base--incremental-dir=/mydata/backup/t1
xtrabackup--prepare--apply-log-only--target-dir=/mydata/backup/base--incremental-dir=/mydata/backup/t2
xtrabackup--copy-back--target-dir=/mydata/backup/base
chownmysql.mysql*-R
systemctlrestartmysqld