工作中涉及运维知识点的汇总
对工作中常见运维知识点的一个简单汇总
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