對工作中常見運維知識點的一個簡單匯總
0)設置阿里雲pip源,加速pip更新速度
mkdir ~/.pip #創建文件夾
vi ~/.pip/pip.conf #添加如下內容
[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
如果是臨時使用,在使用的時候,也可以采用如下方式:
pip install django -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
1)獲取當前系統時間 YYYY-MM-DD HH:MM:SS
v_time_eq=`date "+%F %T"`
v_time=`date "+%Y-%m-%d %H:%M:%S"`
一個簡單的日志函數
function log()
{
echo `date "+%Y-%m-%d %H:%M:%S"`
}
2)shell函數
#!/bin/sh
function test()
{
echo "arg1 = $1"
if [ $1 = "1" ] ;then
echo "19010"
else
echo "0"
fi
}
echo 語句
該方式是一個非常安全的返回方式,即通過輸出到標准輸出返回。因為子進程會繼承父進程的標准輸出,因此,子進程的輸出也就直接反應到父進程。
接收方式:可以通過$( )獲取返回值
vul=$(test 1)
$?:是顯示最后命令的退出狀態,0表示沒有錯誤,其他表示有錯誤;當函數有return時,$?表示函數的返回值;
4)Linux文件查看命令cut
-d:指定字段的分隔符,默認的字段分隔符為“TAB”;
-f:顯示指定字段的內容;
樣例
cat wang.txt |cut -d "," -f2 |cut -d ":" -f2
5)linux shell腳本中執行多個命令的方法
第一種是以分號(;)進行划分:
表示:各命令的執行的果,不會影響其它命令的執行。換句話說,各個命令都會執行,但不保證每個命令都執行成功。
第二種命令之間&&隔開
表示:若前面的命令執行成功,才會去執行后面的命令。這樣可以保證所有的命令執行完畢后,執行過程都是成功的。
第三種每個命令之間用||隔開
表示:||是或的意思,只有前面的命令執行失敗后才去執行下一條命令,直到執行成功一條命令為止。
5)
^ 匹配行開始,如:/^sed/匹配所有以sed開頭的行。
$ 匹配行結束,如:/sed$/匹配所有以sed結尾的行。
6)當出現有多個雙引號和單引號,又想一塊顯示出來,可以采用如下的方式
echo '{"insecure-registries":["{$ip}:4000"]}' > /etc/docker/daemon.json
string1='{"insecure-registries":["'
string2=':4000"]}"'
ip="172.168.0.1"
echo "$string1" "$ip" "$string2"
7) wget 用來從指定的URL下載文件
文件自動儲存到指定的目錄下,則需要借用-P這個參數,可以使用以下的指令
wget -P 目錄 網址
舉例來說,如果你要放到/root底下,你可以打下列的指令:
wget -P /root 網址
8)gzip知識點
壓縮文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。
gzip是在Linux系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。
語法:gzip [選項] 壓縮(解壓縮)的文件名
語法:gzip [選項] 壓縮(解壓縮)的文件名
各選項的含義:
-c 將輸出寫到標准輸出上,並保留原有文件。
-d 將壓縮文件解壓。
-l 對每個壓縮文件,顯示下列字段: 壓縮文件的大小 未壓縮文件的大小 壓縮比 未壓縮文件的名字
-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮。
-t 測試,檢查壓縮文件是否完整。
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比。
-num 用指定的數字num調整壓縮的速度,
壓縮效率是一個介於1-9的數值,預設值為"6",指定愈大的數值,壓縮效率就會愈高。
--best 此參數的效果和指定"-9"參數相同。
--fast 此參數的效果和指定"-1"參數相同。
-1或--fast表示最快壓縮方法(低壓縮比),
-9或--best表示最慢壓縮方法(高壓縮比)。系統缺省值為6。
樣例:
gzip *壓縮
gzip -dv * 解壓
解壓縮:
Linux下以tar.gz為擴展名的軟件包,是用tar程序打包並用gzip程序壓縮的軟件包。要安裝這種軟件包,
需要先對軟件包進行解壓縮,使用“tar -zxfv filename.tar.gz”可以對軟件包進行解壓縮,
解壓縮所得的文件在以filename為名的目錄中。進入該目錄,可以看到解壓縮出來的文件了
tar –czf jpg.tar.gz *.jpg 將目錄里所有jpg文件打包成jpg.tar后,並且將其用gzip壓縮,生成一個gzip壓縮過的包,命名為jpg.tar.gz
9)將文件 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt
10)只是下載pip依賴包,但是不安裝
pip download -r /root/kolla/requirements.txt -r /root/kolla/test-requirements.txt
或者
pip install -d /root/pypiserver -r /root/kolla/requirements.txt -r /root/kolla/test-requirements.txt
11)sed相關內容
sed -i 就是直接對文本文件進行操作的
sed -i 's/原字符串/新字符串/' /home/1.txt ---只改出現的第一個
sed -i 's/原字符串/新字符串/g' /home/1.txt ----所有的涉及原字符串的都修改
sed -i 's/原字符串/替換字符串/g' filename //替換文件中的所有匹配項
11)yum源知識點
顯示yum倉庫
yum repolist 查看yum倉庫信息
yum repolist all(顯示所有)
使用新的repo源時,必須要做得步驟
yum clean all
yum makecache
12)把遠程yum源服務器的包同步到本地yum源服務器上
方式一:前提是遠程服務器支持rsync
rsync命令是一個遠程數據同步工具
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD。
-r, --recursive 對子目錄以遞歸模式處理
-v, --verbose 詳細模式輸出。
-t, --times 保持文件時間信息。
樣例:
rsync -avrt --delete rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/ /home/www/Centos/7/os/x86_64/Packages
紅色部分為遠程yum源服務器上要同步的目錄(repodata所在的那一級),粉色為要存放數據的本地yum源服務器上的路徑
rsync -avrt --delete rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/extras/x86_64/Packages/ /home/www/Centos/7/extras/x86_64/Packages
rsync -avrt --delete rsync://mirrors.tuna.tsinghua.edu.cn/centos/7/updates/x86_64/Packages/ /home/www/Centos/7/updates/x86_64/Packages
提供幾個支持rsync同步的網站
http://mirrors.kernel.org
http://rsync.mirrors.ustc.edu.cn
http://mirrors.neusoft.edu.cn
方式二:使用reposync 命令
在使用第二種方法之前,需要提前把同步網站的repo文件下載到本地(url可以具體到某個具有repodata的目錄),並且yum makecache一下
yum install createrepo yum-utils -y
安裝這兩個工具主要使用 createrepo 和reposync 這兩個命令
reposync (前提條件是遠程的.repo文件,已經拷貝到本地,.repo文件中url換成你要的地址,有repodata那一級目錄)
-r REPOID, --repoid=REPOID
specify repo ids to query, can be specified multiple times (default is all enabled)
-p DESTDIR, --download_path=DESTDIR
Path to download packages to: defaults to current dir
如果有新的包添加進了x86_64、extra、updates的任意一個目錄中,都需要createrepo --update dir來更新yum源服務器的索引。客戶端也需要yum makecache一下
已經下載過的會跳過,執行下載的時候 -p為指定目錄,不然它會自動在當前目錄創建”/base/Packages”目錄,再將rpm包存入該目錄下。
樣例:reposync -r epel -p /home/www/bak
操作步驟:先yum clean all了一下,然后把repo文件的url寫成遠程yum源你要同步目錄的url,再yum makecache ,通過yum repolist 把repoid找出來,最后通過reposync -r yum-cd -p /home/www/suning,同步到本地
兩種方式同步完以后,使用createrepo 建立本地索引
createrepo -pdo /var/www/html/epel/ /var/www/html/epel/
會在epel目錄下出現一個repodata的目錄
#第一個目錄是repodata存放目錄,第二個目錄是需要生成索引信息yum源倉庫目錄,在建立索引的時候,不能在/var/www/html/epel/ 的子目錄創建,否則一直創建失敗
樣例:createrepo -pdo /home/www/mariadb/10.0/centos7-amd64 /home/www/mariadb/10.0/centos7-amd64
13)確認你的CentOS 的版本
# cat /etc/redhat-release
CentOS release 6.6 (Final)
14)其他
RPMS中的軟件包是直接可以用rpm來安裝的,而SRPMS中的軟件包是需要先編譯再用rpm安裝的
noarch是no architecture的縮寫,說明這個包可以在各個不同的cpu上使用percona-release-0.1-3.noarch.rpm以noarch命名的rpm包,是一個yum 倉庫包,安裝完這個包以后,yum倉庫就自動有了,並且這個rpm包里面還有gpg key,自動把gpg key放入相應的/etc/pki/rpm-gpg目錄
15)只是下載rpm包,而不進行安裝
1)方法一:yum
yum命令本身就可以用來下載一個RPM包,標准的yum命令提供了--downloadonly(只下載)的選項來達到這個目的。
$ sudo yum install --downloadonly <package-name>
默認情況下,一個下載的RPM包會保存在下面的目錄中:
/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages
以上的[repository]表示下載包的來源倉庫的名稱(例如:base、fedora、updates)
如果你想要將一個包下載到一個指定的目錄(如/tmp):
$ sudo yum install --downloadonly --downloaddir=/tmp <package-name>
注意,如果下載的包包含了任何沒有滿足的依賴關系,yum將會把所有的依賴關系包下載,但是都不會被安裝。
另外一個重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安裝一個單獨yum插件(名稱為 yum-plugin-downloadonly)才能使用--downloadonly命令選項:
$ sudo yum install yum-plugin-downloadonly
如果沒有該插件,你會在使用yum時會報如下錯誤
Command line error: no such option: --downloadonly
2)方法二: Yumdownloader
另外一個下載RPM包的方法就是通過一個專門的包下載工具--yumdownloader。 這個工具是yum工具包(包含了用來進行yum包管理的幫助工具套件)的子集。
$ sudo yum install yum-utils
下載一個RPM包:
$ sudo yumdownloader <package-name>
下載的包會被保存在當前目錄中。你需要使用root權限,因為yumdownloader會在下載過程中更新包索引文件。與yum命令不同的是,任何依賴包不會被下載。
下載示例:
yumdownloader lsof --resolve --destdir=/data/mydepot/ #resolve下載依賴
16)配置本地yum源
掛載本地iso鏡像
[root]#cd /mnt // 定位到/mnt目錄
[root]#mkdir /mnt/cdrom // 創建目錄cdrom
[root]#mount /dev/cdrom /mnt/cdrom // 掛載iso鏡像到/mnt/cdrom
注:先將本地ios鏡像,掛載到linux虛擬機。
配置本地源
[root]#cd /etc/yum.repos.d // 定位到源配置目錄
[root]#cd ls // 列表
[root]#vi local.repo // 修改源配置文件
[local]
name=local
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root]#yum makecache // 更新源緩存
注:需要將/mnt/cdrom的本地iso鏡像,作為本地源。
17)查看緩存的yum源
yum repolist
查看命令(yum repolist)執行結果如下
[root@promote ~]# yum repolist
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* epel: epel.scopesky.iq
docker-ce-stable | 3.5 kB 00:00:00
(1/2): docker-ce-stable/x86_64/primary_db | 25 kB 00:00:00
(2/2): docker-ce-stable/x86_64/updateinfo | 55 B 00:00:00
源標識 源名稱 狀態
base/7/x86_64 CentOS-7 - Base 10,019
docker-ce-stable/x86_64 Docker CE Stable - x86_64 36
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,018
extras/7/x86_64 CentOS-7 - Extras 382
updates/7/x86_64 CentOS-7 - Updates 1,477
zabbix/x86_64 Zabbix Official Repository - x86_64 93
zabbix-non-supported/x86_64 Zabbix Official Repository non-supported - x86_64 4
repolist: 25,029