學習內容博客html
swapon -s
mkswap /dev/sdb2
> 激活 swapon -a /dev/sdb2
便可swapoff /dev/sdb2
cat /etc/redhat-release
> more /etc/*release
能夠看到更多信息echo 3 > /proc/sys/vm/drop_caches
echo $[88316+8764]
進行簡單的計算(+-*/)dd if=/dev/zero of=/root/test bs=50M count=1
測試磁盤速度,zero爲空文件ps aux
查看全部進程 > grep
過濾的意思ps aux | grep firefox
kill -9 3489
( 9表示強制殺) 或者 pkill -9 firefox
firefox &
即命令後接&
在後臺啓動,在當前終端使用jobs
能夠查看工做號 > kill -9 %1
使用工做號殺yum install psmisc
rpm -ivh rpm文件名
i 安裝, v 顯示安裝信息, h顯示進度條 後接--nodeps
忽略以來,--force
覆蓋安裝node
rpm -qi 軟件名
查看軟件的詳細信息 ,q 表示查詢, i informationpython
rpm -ql 軟件名
查看軟件位置, l 表示位置linux
rpm -qf 文件名
查看該文件是由哪一個軟件包產生的ios
查看命令對應的文件的真實位置 which ls
nginx
rpm -qa
顯示所有安裝的rpm包,跟grep結合驗證是否安裝了某個包,rpm -qa | grep vsftp
或者 rpm -q vsftpd
必須知道軟件包全名正則表達式
ls ----> /etc/usr/ls --color=auto 這是流程 ,alias s='ls'
爲ls命令起別名, 永久的話修改vim /etc/bashrc
或者vim /etc/profile
shell
rpm -e 軟件包名
卸載軟件vim
rpm -e `rpm -qa \grep vsftp
這裏反引號的做用是把後面的結果看做變量做爲前面的輸入centos
rpm安裝對依賴性問題很差解決,須要先手動安裝依賴包,yum自動解決依賴性
手動配置yum源,事先將完整的光盤掛載到/opt
,移走原有的repo,而後 vi /etc/yum.repos.d/loal.repo
[local] name=local.repo baseurl=file:///opt #能夠本地也能夠網上 enable=1 gpgcheck=0
yum clean all
清除緩存後就能夠用本身配置的yum源安裝yum -y install xxxxx
yum erase xxx
刪除已經安裝的軟件 或 yum remove xxx
yum install epel-*
安裝擴展源
yum makecache
建立緩存提升下次裝軟件的速度
要想保留yum下載的rpm包,須要更改設置vim /etc/yum.conf
cachedir=/root/rpm_bak #路徑本身設置 keepcache=1 #0改成1
部署本身的yum倉庫
mkdir /repo_httpd
createrepo /repo_httpd
, 以後在該文件夾中生成repodata文件夾baseurl=file:///repo_httpd
baseurl=http://xxxxx
能夠自定義網絡yum源yum grouplist
列出有哪些軟件包組, yum groupinstall "開發工具"
安裝開發工具
wget --no-check-certificate https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz
下載,tar xvf Python-3.6.1.tgz
解壓,進入目錄,configure爲安裝配置文件,爲了生成makefile文件,./configure --prefix=/usr/local/python3.6
, 而後 make && make install
編譯並安裝,報錯的話缺啥裝啥yum install zlib*
PATH=/usr/local/python3.6/bin:$PATH
設置臨時的環境變量, 永久的話vim /etc/profile
在末尾加上
PATH=/usr/local/python3.6/bin:$PATH export PATH
yum update
所有更新包括配置和內核,yum upgrade
只更新軟件包
安裝yum install sysstat*
裏面有查看運行信息的軟件vmstat
iostat
安裝yum install net-tools
,執行netstat -tunalp
查看端口詳細信息 能夠netstat -tunalp | grep 22
查看目的端口 。另外sar
啥也能看
yum install nginx
安裝
寫配置 vim /etc/nginx/nginx.conf
摘取部分以下
worker_processes auto; #自動檢測CPU數目,幾個CPU開幾個進程 error_log /var/log/nginx/error.log; #錯誤日誌 include /usr/share/nginx/modules/*.conf; #包含的模塊 events { #一個進程開多少線程 worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #日誌格式 access_log /var/log/nginx/access.log main; #訪問日誌,以main格式寫入 sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; #包含的配配置文件 server { #核心配置 listen 80 default_server; #監聽端口號 listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; #Web根目錄 # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { #匹配/a/b/c/d.txt,若以/開頭則匹配這個配置,沒有內容則按全局配置 } }
URL 統一資源定位符 11.12.13.14:80 找到惟一的一個軟件
URI 統一資源標識符 /a/b/c/d.txt 找到惟一的一個文件 /usr/share/nginx/html/a/b/c/d.txt
systemctl start nginx
啓動nginx status查看狀態
systemctl stop firewalld
關閉防火牆,systemctl disable firewalld
開機不啓動,enable開機啓動, iptables -F
清除防火牆配置
tail -f /var/log/nginx/access.log
動態查看日誌文件
將虛擬機拷貝3個提供Web功能,原虛擬機提供反向代理
按照官網的手冊 Using nginx as HTTP load balancer 配置提供反向代理的機器
爲實現數據的一致,給幾臺Web服務器提供共享存儲 如 NFS,文件存儲
對象存儲--->像網盤同樣,下載下來修改再上傳覆蓋,經過URI定位。 塊存儲 ---> 相似一整塊磁盤
能夠給NFS服務器專門掛載一塊硬盤
臨時配置IP地址 ifconfig 網卡名 IP地址
##服務端配置 [root@localhost ~]# mkdir /share #新建文件夾 [root@localhost ~]# mount /dev/sdb1 /share/^C #掛載一塊硬盤 [root@localhost ~]# touch /share/share.txt [root@localhost ~]# echo 'hello share' > /share/share.txt [root@localhost ~]# vim /etc/exports #編輯配置文件 [root@localhost ~]# cat /etc/exports /share 192.168.58.0/24(rw,sync,fsid=0) #配置文件內容 [root@localhost ~]# chmod -R o+w /share #爲文件夾添加權限 [root@localhost ~]# systemctl start rpcbind.service #先開啓RPC服務 [root@localhost ~]# systemctl start nfs-server.service #再開啓NFS服務 [root@localhost ~]# systemctl enable nfs-server.service #設置開機啓動 Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. [root@localhost ~]# systemctl enable rpcbind.service
##客戶端配置 [root@localhost ~]# systemctl enable rpcbind.service && systemctl enable nfs-server.service Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service. #開機啓動 [root@localhost ~]# showmount -e 192.168.58.129 #查看共享服務 Export list for 192.168.58.129: /share 192.168.58.0/24 [root@localhost ~]# mount -t nfs 192.168.58.129:/share /usr/share/nginx/html/ #掛載 [root@localhost ~]# ls /usr/share/nginx/html/ #查看掛載後文件內容 share.txt [root@localhost ~]# df |grep 129 #查看磁盤信息 192.168.58.129:/share 18351104 2376448 15974656 13% /usr/share/nginx/html
ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>#功能# mtu 1500#最大傳輸單元,字節單位# inet 192.168.58.129 netmask 255.255.255.0 broadcast 192.168.58.255 inet6 fe80::c00d:cb8b:4aed:6cc7 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:1c:9a:5a#MAC地址# txqueuelen 1000 (Ethernet) RX packets 3422 bytes 444096 (433.6 KiB) #收了多少包# RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2374 bytes 418819 (409.0 KiB) #傳了多少包# TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 20 bytes 1524 (1.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20 bytes 1524 (1.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ifconfig ens33 192.168.58.200/24
手動配置IP地址, 24表示子網掩碼255.255.255.0
vim /etc/resolv.conf
修改DNS信息 nameserver 192.168.58.2
route add default gw 192.168.58.254 netmask 255.255.255.0
添加網關,route -n
查看路由信息, del爲刪除
[root@localhost share]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.58.2 0.0.0.0 UG 100 0 0 ens33 #不一個子網 192.168.58.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 #同一個自網內
要想永久修改 cd /etc/sysconfig/network-scripts/
該目錄下有不少配置信息 vim ifcfg-ens33
TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.58.200 NETMASK=255.255.255.0 GATEWAY=192.168.58.254 DNS1=192.168.58.254 DNS2=114.114.114.114 DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=2ceec922-bd48-4fcb-8c96-56a288ddb680 DEVICE=ens33 ONBOOT=yes #開機激活網卡
重啓網絡服務systemctl restart network
便可
vim /etc/hosts
修改hosts
[root@localhost network-scripts]# hostnamectl set-hostname centostest #設置hostname [root@localhost network-scripts]# hostname #查看hostname centostest
[root@localhost ~]# ssh 192.168.58.129 #登陸默認root 實際ssh root@192.168.58.129 The authenticity of host '192.168.58.129 (192.168.58.129)' can't be established. ECDSA key fingerprint is 82:68:11:05:e9:98:f9:bb:df:a1:02:e2:72:59:cb:0e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.58.129' (ECDSA) to the list of known hosts. root@192.168.58.129's password: #輸入密碼 Last login: Mon Apr 3 22:48:51 2017 from 192.168.58.1 [root@centostest ~]# #SSH登陸成功,先後主機名不同
scp遠程複製文件
[root@centostest ~]# scp /etc/hosts 192.168.58.131:/tmp #遠程複製,也可用域名,先後位置可換 -r目錄 The authenticity of host '192.168.58.131 (192.168.58.131)' can't be established. ECDSA key fingerprint is 82:68:11:05:e9:98:f9:bb:df:a1:02:e2:72:59:cb:0e. Are you sure you want to continue connecting (yes/no)? y Please type 'yes' or 'no': yes Warning: Permanently added '192.168.58.131' (ECDSA) to the list of known hosts. root@192.168.58.131's password: #輸入密碼 hosts 100% 159 0.2KB/s 00:00 #複製成功
在客戶端把SSH密鑰生成 ssh-keygen
以後在/root/.ssh/
目錄下有生成的信息id_rsa.pub
把密鑰等發給服務端 ssh-copy-id -i 192.168.58.131
以後在服務端的相同路徑下會找到相關文件authorized_keys
, 即發給了root用戶目錄下,如發給其餘用戶能夠在該用戶目錄下找到公鑰
以後客戶端直接ssh 192.168.58.131
不須要輸入密碼便可登錄成功
配置文件在vim /etc/ssh/sshd_config
。若服務端更改端口爲8888,以上發送密鑰時須要ssh-copy-id -i id_rsa.pub 192.168.58.131 -p 8888
,鏈接時ssh 192.168.58.131 -p 8888
便可
source a.sh
沒加權限也能夠執行
命令優先級
1. alias #alias查看當前的別名 alias ppp='ls -l'設置 unalias ppp取消 2. compound commands #if for while 3. function #function ppp() { echo hello;echo bash; }定義 ppp執行 set查看當前函數 unset ppp清除 4. build_in #內建 如cd 5. hash #hash查看 hash -r清除 6. $PATH #路徑 7. error:command not found
通配符
$[] #運算 同$(()) $() #同``同樣 ${} # % 取餘 ^ ! #取反 & #後臺運行 && 與 | 管道 || 或 * 任意 ? 任意一個 = 賦值 == 判斷是否相等 [ $x == $y ] ---> test echo $? 取上一條命令的執行結果 \ ---> "$x"軟引用,取值 '$x'硬引用,$沒有其餘意義 : 永遠爲真,常與while連用 ; 命令分割 / 路徑分割符 >> 追加 > 覆蓋
#以登陸的方式加載順序 /etc/profile /etc/profile.d/a.sh /root/.bash_profile /root/.bashrc /etc/bashrc #不登陸的方式加載順序 /root/.bashrc /etc/bashrc /etc/profile.d/a.sh
經常使用參數
-n :顯示行號 -e :指定多個規則 -o :只顯示匹配的內容 -q :靜默模式,沒有任何輸出,得用echo $?來判斷執行成功(0)沒有,即有沒有過濾到想要的內容 -l :若是匹配成功,則只將文件名打印出來,失敗則不打印,一般-rl一塊兒用,grep -rl 'root' /etc -A :若是匹配成功,則將匹配行及其後n行一塊兒打印出來 如 grep -A 2 'root' test.txt -B :若是匹配成功,則將匹配行及其前n行一塊兒打印出來 -C :若是匹配成功,則將匹配行及其先後n行一塊兒打印出來 --color -c :若是匹配成功,則將匹配到的行數打印出來 -E :等於egrep,擴展 -i :忽略大小寫 -v :取反,不匹配 -w:匹配單詞 例:過濾掉無用的行,包括註釋和空格 grep -v '^#' /etc/ssh/sshd_config | grep -v '^ *$'
正則表達式
^ 行首 $ 行尾 . 除了換行符之外的任意單個字符 * 前導字符的零個或多個 .* 全部字符 [] 字符組內的任一字符 #若要匹配-須要放在最後\- [^] 對字符組內的每一個字符取反(不匹配字符組內的每一個字符) ^[^] 非字符組內的字符開頭的行 [a-z] 小寫字母 [A-Z] 大寫字母 [a-Z] 小寫和大寫字母 [0-9] 數字 \< 單詞頭 單詞通常以空格或特殊字符作分隔,連續的字符串被當作單詞 \> 單詞尾 ? 前導字符零個或一個 + 前導字符一個或多個 abc|def abc或def a(bc|de)f abcf 或 adef x\{m\} x出現m次 #egrep不加\ x\{m,\} x出現m次至屢次(至少m次) x\{m,n\} x出現m次至n次
sed [options] 'command' in_file[s] options 部分 -n 靜默模式,不顯示默認輸出 -e 指定多個規則 -i 直接修改原文件 -f 指定匹配規則文件 command 部分 '[地址1,地址2] [函數] [參數(標記)]' //裏面正則表達式定址 例: sed -r '1 s/()()()/\1\2\3/g' passwdbk 1表示定位第幾行,g表示把這一行的全部匹配的都修改了,括號表示第幾部分,後面的\1表示第一部分顯示的位置
awk [options] 'commands' files option -F 定義字段分隔符,默認的分隔符是連續的空格或製表符 使用option中的-F參數定義間隔符號 用$1,$2,$3等的順序表示files中每行以間隔符號分隔的各列不一樣域 例:awk -F: '{print $1,$4}' passwdbk $0全部 NF變量表示當前記錄的字段數 可用 $NF 取最後一段 NR表示行號 例: awk -F: 'NR>=3 && NR<=5{print NR,"----",$1}' passwdbk ||或 //裏面正則表達式定址 例 awk -F: '/nologin$/{print $1}' passwdbk 讓某一部分匹配正則 awk -F: '$1~/^r.*t$/{print $NF}' passwdbk -v 定義變量並賦值 也能夠借用次方式從shell變量中引入 例: count=7 awk -v x=$count -F: '$3 >= x{print $1}' passwdbk addr=`ifconfig |awk 'NR==2{print $2}'` 取IP地址
du -sh /boot/ #統計目錄大小 cat test |sort |uniq -c #排序去重,c顯示重複的行數 cat /etc/passwd |cut -d: -f2,3 #d表示以什麼分割 f指定取第幾部分 可做爲awk的簡單模式 dd if=/dev/zero of=/test.ha bs=20M count=1 #新建一個指定大小的文件 find / -size +10M -size -30M -type f -name \*.ha #在/目錄下尋找文件大小>10M且<30M,類型爲普通文件,後綴名爲ha的文件 grep -rl 'root' /etc #在/etc目錄下尋找文件內含有'root'的文件並把文件名輸出,r表示遞歸,l表示顯示文件名
中括號 [] 至關於 test 獲取當前內存使用率: mem_per=`echo "scale=2;$mem_used/$mem_total" | bc -l | cut -d. -f2` #scale保留幾位小數,bc浮點運算 echo ${mem_per}% $$ 進程PID $* 全部參數 $# 參數個數 當nginx關閉時開啓nginx #!/bin/bash var=`systemctl status nginx| awk 'NR==3{print $2}'` if [ $var = inactive ] then systemctl start nginx fi 將x.sh文件移動到/usr/bin/目錄下能夠在任何位置使用x執行改腳本
rondtab -e -u root #e表示編輯 u表示用戶 在計劃任務中全部命令都使用絕對路徑!!!
------------本地有md文件備份----------
-----------------end------------------