工作用到的 cmd git docker linux redis k8s 命令
- cmd
- git
- docker
- 常用命令
- 保存镜像
- 加载镜像
- pom 文件配置打包到容器的内容
- 容器和服务器间拷贝文件
- linux
- wc
- 统计一个文件中某个字符串的个数
- 前 10 个匹配字符所在行
- 正则
- 查看文件的字节数、字数、行数
- 统计单词数
- 统计字节数
- 统计字符数
- 统计行数【★★★★★】
- 不输出文件名
- 计算字符串长度
- 与管道符结合使用
- 判断 ip/port 是否可达
- 管理员登入
- linux修改用户名、密码、组名
- 查看 hostname
- chmod
- du 和 di
- df -h 和 df -i
- alias
- grep
- find
- linux 文件颜色
- jq
- 查看环境变量
- 环境变量
- 设置环境变量
- 系统启动读取顺序
- 查看环境变量
- 查看占用端口
- win 中
- linux 中
- 防火墙操作
- 查看jar包内文件
- vim
- vim 中 快速查找
- echo
- vim 不能用,用 echo
- base64 编码解码
- 输出日志到文件
- locale -- 设置和显示程序运行的语言环境
- 查看当前 locale 设置
- 设置系统的 locale
- curl
- 执行文件命令
- scp
- tree
- ntpdate时间报错
- nginx
- redis
- 运行redis
- 模糊查询
- 拿到 value
- 其他
- 修改环境变量不重启生效
- k8s
cmd
msg
功能:向对方电脑发送一条文本提示
$ msg /server:对方电脑IP *
在“*”后输入你要发送的内容即可
Nslookup
作用:检查网站IP地址
$ nslookup 对方网站域名
C:\Users\dingdang>nslookup www.baidu.com
服务器: UnKnown
Address: fe80::1
非权威应答:
名称: www.a.shifen.com
Addresses: 14.215.177.39
14.215.177.38
Aliases: www.baidu.com
telnet
看电影《星球大战》
$ telnet towel.blinkenlights.nl
|
作用:将命令结果输出到剪贴板
任意命令 | 导出位置
ls | clip 导出到剪切板
ls | xxx.txt 是导出到xxx.txt
&&
作用:将多个命令“连接”起来,一步运行多组命令
操作方法:&& 是 CMD 里一项 “命令连接” 语句,直接放在要连接的命令行中间即可
git
git 沙盒
远程仓库更改了。需要更新本地链接
git remote set-url origin 新的对应项目的clone的 .git 后缀链接
git pull
# git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址
# 1.查看git配置信息
$ git config --list
# 2.查看git用户名、密码、邮箱的配置
$ git config user.name
$ git config user.password
$ git config user.email
# 3.设置git用户名、密码、邮箱的配置
$ git config user.name "freedom"
$ git config user.password "123456"
$ git config user.email "1548429568@qq.com"
# 3.设置git用户名、密码、邮箱的配置(全局配置)
$ git config --global user.name 用户名
$ git config --global user.password 密码
$ git config --global user.password 邮箱
# 4.修改git用户名、密码、邮箱的配置(跟设置语法一样,没有用户名就添加,有了用户名就修改)
$ git config user.name "freedom"
# 4.修改git用户名、密码、邮箱的配置(全局配置)
$ git config --global user.name "freedom"
# 5.删除git用户名、密码、邮箱的配置
docker
常用命令
登陆:docker login registry.公司域名.com
下载镜像:docker pull REPOSITORY:TAG
删除本地镜像:docker rm xxx:version(tag) docker image prune (删除未命名镜像)
运行镜像生成容器实例: docker run -itd --restart=always --name 镜像运行名字:tag -p 映射端口:80
查看本地镜像:docker images
查看在运行的container:docker ps docker container list
进入容器查看:docker exec -it containerID bash docker exec -it containerID /bin/bash
构建:docker build ./ -t name:version
推送镜像:docker push registry.公司域名.com/demos/test:0.1.1
导出镜像包:docker save -o 导出的镜像包名 REPOSITORY:TAG
导入镜像包:docker load -i 镜像包
保存镜像
# 把镜像打包成 .tar
# -o 要保存路径.tar
# > 要保存路径.tar
# docker save 镜像id > /存储路径/xxx.ta
将镜像 centos保存为 /root目录下得 c24.tar
docker save -o /root/c24.tar centos
docker save centos > /root/c24.tar
docker save -o test.jar registry.公司域名.com/demos/test:0.1.1
就是把仓库中的包,保存到服务器为test.jar,然后可以在服务器上运行这个包
注意
docker save name:tag > t1.tar
docker save 镜像ID > t2.tar
两种方式最好用第一种
用镜像ID保存会少一个repositories的文件
加载镜像
-i 指定加载的镜像
docker load -i /mydocker/images/redis.tar
pom 文件配置打包到容器的内容
当打包
时,忘记把某个资源打包
,需要手动把文件上传到容器中
pom.xml
文件中忘记加 *.xlsx
,或者写错
导致 xlsx 没有被打包
<build>
<finalName>xxxx</finalName>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>**/*.properties</include>
<include>*.xml</include>
<include>*.conf</include>
<include>**/*.xml</include>
<include>*.yml</include>
<include>*.xlsx</include> !!!这里
</includes>
</resource>
</resources>
</build>
容器和服务器间拷贝文件
docker cp 本地路径 容器ID:容器路径
docker cp /Users/xubowen/xxx.txt 38ef22:/root/xxx.txt
将主机/www/1.conf 拷贝到容器96f7f14e99ab的test目录下
docker cp /www/1.conf 96f7f14e99ab:/test/
将容器96f7f14e99ab中www目录下的12.conf文件,拷贝到主机的/目录中
docker cp 96f7f14e99ab:/www/2.conf /
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中
docker cp 96f7f14e99ab:/www /tmp/
linux
linux 常用命令linux 命令大全
linux 学习网站
wc
wc
命令用于统计指定文件中的字节数、字数、行数
,并将统计结果显示输出。wc 是 word count 的缩写。
统计一个文件中某个字符串的个数
[root@bzhou test]# cat file
hafsdha
hahafsdfsdhaha
haha
想匹配 ‘haha’ 这个字符串
grep的-o选项
[root@bzhou test]# grep -c 'haha' file
2
最开始的时候是用-c这个 选项,不过-c只能统计一行的,如果一行里面有多个匹配的字符串,那-c就无能为力了。
这个是正确的
[root@bzhou test]# grep -o 'haha' file | wc -l
3
或者 cat file | grep -o 'haha' | wc -l
grep -o “” 会显示出文本中出现的string,仅显示被搜索的关键字
文本中有几次就显示几次
-n 显示行号
前 10 个匹配字符所在行
abcabababab
abcabababab
abcabababab
abcabababab
abcabababab
只输出匹配字符串
grep -n -o 'ab' file.txt | head -n 10
输出匹配字符串所在行
grep -n 'ab' file.txt | head -n 10
正则
匹配 b 到 b,中间任意多个
grep -o -n "b.*b" file.txt | head -n 4
1:bcabababab
2:bcabababab
3:bcabababab
4:bcabababab
匹配 b 到 b,中间一个
grep -o -n "b.b" file.txt | head -n 4
1:bab
1:bab
2:bab
2:bab
查看文件的字节数、字数、行数
7:第一列表示行数。
7:第二列表示单词数。
57:第三列表示字节数。
log.txt:第四列表示文件名。
统计单词数
统计字节数
统计字符数
统计行数【★★★★★】
不输出文件名
计算字符串长度
与管道符结合使用
判断 ip/port 是否可达
判断端口是否ping通
ping 10.4.121.42
判断端口是否可达
telnet 10.4.121.42 9092
管理员登入
[chend@c9 ~]$ sudo su
[root@c9 ~]#
linux修改用户名、密码、组名
1、修改root密码
sudo passwd root
2、修改用户密码(如abc)
sudo passwd abc
3、修改主机名:
sudo vim /etc/hostname 将旧主机名 改为 新主机名
sudo vim /etc/hosts 将旧主机名 改为 新主机名
4、切换到root账户
su
5、修改用户名:
vim /etc/passwd
找到旧用户名 改为 新用户名,但是 /home/旧用户名 不能更改,若更改重启后,便登陆不了系统了。
vim /etc/shadow
找到旧用户名 改为 新用户名
6、重启系统
reboot
7、重启后进入系统后切换到root账户
su
8、修改home目录
mv aaa<旧用户名> bbb<新用户名>
修改/home/旧用户名 重命名 新用户名
sudo vi /etc/passwd
将其中的 /home/旧用户名 改为 /home/新用户名
或者
sudo usermod -d /home/新用户名 -m 新用户名
9、修改组名
groupmod -n 新用户名 旧用户名
10、修改UID
sudo usermod -u 1000 新用户名
11、检查
id 新用户名
12、重启系统
reboot
查看 hostname
[root@controller-111 ~]# hostname
controller-111
[root@controller-92 ~]#
chmod
例如 linux中新建的sh文件不能执行
linux中执行shell文件需要权限,使用vim编辑器新建的shell文件并没有执行的权限,使用
chmod 777 *.sh
即可给权限
或者通过 sh 命令执行 sh ./*.sh
du 和 di
du (disk usage):
显示每个文件和目录的磁盘使用空间
,也就是文件的大小。
命令参数:
-k 、 -m #显示目录中文件的大小,-k 单位KB,-m 单位MB
-h #以K M G为单位显示,提高可读性(最常用的一个)
--max-depth=1 #显示层级
du -h --max-depth=1
df(disk free):
显示磁盘分区上可以使用的磁盘空间
-a #查看全部文件系统,单位默认KB
-h #使用-h选项以KB、MB、GB的单位来显示,可读性高~~~(最常用)
df -h 和 df -i
df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况
。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
必要参数:
-a 全部文件系统列表
-h 方便阅读方式显示
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
--no-sync 忽略 sync 命令
-P 输出格式为POSIX
--sync 在取得磁盘信息前,先执行sync命令
-T 文件系统类型
df -h 和df -i的区别是什么?同样是显示磁盘使用情况,为什么显示占用百分比相差甚远?
df -h的比较好解释,就是查看磁盘容量的使用情况。
df -h 是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。??
df -i 则去删除数量过多的小文件-----------过多的文件占用了大量的inode号。??
alias
alias命令允许为常用的命令创建另一个名称
查看和设置 命令的简写
# 查看系统内存状态
alias mem="free -h"
# 查看CPU信息
alias cpu="lscpu"
# 磁盘信息
alias disk="df -h"
# 系统版本(以RH系统为例)
alias os="cat /etc/redhat-release"
# 更新系统
alias update="sudo yum update -y"
# 安装软件命令
alias install="sudo yum install $1 -y"
# 使用
# 比如安装:wget
install wget
# k8s命令
alias k8s='kubectl'
# 获取所有pod的详情信息
alias k8sp='kubectl get po -o wide'
# 获取所有namespace下的运行的所有pod
alias k8spa='kubectl get po --all-namespaces'
# 其他
alias k8sd='kubectl describe'
alias k8sd='kubectl get deploy'
alias k8sp='kubectl get pods'
alias k8sc='kubectl get cm'
alias k8ss='kubectl get svc'
...
查看当前可用的别名
alias -p 或者 alias
[root@Allen ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
当前shell进程设置别名
因为命令别名属于内部命令,一个别名仅在它所被定义的shell进程中才有效
alias k='kubectl'
设置永久别名
如果想要使得设置的别名永久生效,可以把它加入Linux启动文件.bashrc或.bash_profile中
。
如何找到.bashrc或.bash_profile文件?
直接执行 cd 命令,然后就会进入到当前用户的用户根目录,在这个目录下就可以找到上述系统文件。注意:这两个文件是隐藏文件,需要使用 ls -a 命令才能查看。
1、vim /etc/bashrc ###针对全局用户
注意:/etc/bashrc
文件内其他任何内容如果不是专门要修改,请不要删除,会出现其他问题
[root@Allen ~]# vim /etc/bashrc
# /etc/bashrc
alias h='date'
# System wide functions and aliases
# Environment stuff goes in /etc/profile
[root@Allen ~]# source /etc/bashrc ####使创建的别名立刻生效
2、vim/root/.bashrc ###只有root用户有权限
注意:/root/bashrc
文件内其他任何内容如果不是专门要修改,请不要删除,会出现其他问题
[root@Allen ~]# source /etc/bashrc
# .bashrc
alias n='hostname'
# User specific aliases and funct
##########设置好后,退出保存
3、重新连接终端发现生效了
grep
grep -A 显示匹配指定内容及 之后 的n行
grep -B 显示匹配指定内容及 之前 的n行
grep -C 显示匹配指定内容及其 前后 各n行
示例 搜索匹配test.txt文件中与”name”字符串匹配的行,并显示其后的5行
$ grep -A 5 name test.txt
grep keyword /opt/filename
将/opt/filename,有出现keyword的行取出来
grep -c keyword filename1
在文件1 中查找keyword 的个数
grep -c keyword filename1 filename2
在文件1 文件2中查找keyword 的个数
grep -v 反查,一般是利用管道符和其他命令一起使用
cd /opt/filename1 | grep -v hello 显示出filename文件中除hello以外的内容
grep -i 忽略大小写
find
find命令是系统中查找文件的命令,可以帮助用户快速找出自己所需要的文件。
通过文件名查找
-not 非
-o 或
-a 与
find -name 文件名
find /etc/ -name passwd ###查找/etc目录下的passwd
find /etc/ -name “*passwd” ###查找/etc目录下的以passwd结尾的文件
不行的话用 find /etc/ -name *passwd 去掉括号
find -name *.conf ##查找以.conf结尾的文件
通过文件嵌套层数查找
find -maxdepth 层数 ###查找文件时最大层数
find -mindepth 层数 ###查找文件时最小层数
我们查找/etc中所有.conf文件,可以看到,这些文件有的在/etc目录下,有的在/etc目录的子目录或者子子目录中
按文件修改时间查找
find -cmin 1 ###查找修改时间为1min的文件
find -cmin -1 ###查找修改时间小于1min的文件
find -cmin +1 ###查找修改时间大于1min的文件
find -ctime 5 ##5天内修改过的文件
find . -type f -mtime +1 当前目录1天前修改过的常规文件
find . -type f -mmin -30 当前目录30分钟内修改过的文件
通过文件类型查找
find -type 类型
f:文件| l:软链接| d:目录| c:字符设备| b:快设备| s:套接字
查找文件
find ./ -type f
查找目录
find ./ -type d
查找名字为test的文件或目录
find ./ -name test
linux 文件颜色
绿色文件---------- 可执行文件,可执行的程序
红色文件-----------压缩文件或者包文件
蓝色文件----------目录
白色文件----------普通,如文本文件,配置文件,源码文件等
浅蓝色文件----------链接文件,主要是使用ln命令建立的文件
红色闪烁----------表示链接的文件有问题
黄色文件----------表示设备文件
灰色文件----------表示其它文件
jq
当我们拿到一个json格式的数据时
,如何有效对这个数据进行分析?我们可以采用python结合json库来分析,但是linux有一个很好用的工具,让我们可以方便地处理json文本
,功能非常强大
下载
sudo apt-get install jq
原数据。json字符串
{"skills": ["C/C++", "Python", "Golang", "Node.js"], "age": 21, "birthday": "10th August", "name": "xueyuan", "email": "im.hexueyuan@outlook.com"}
转换成易读的形式
cat json2.data | jq '.'
#也可以写作 cat json2.data | jq .
#不加引号,但是为了标准最好写上,因为某些时候不加会有问题.
jq把数据转换成易读格式,还添加了颜色高亮说明,其中key和value使用了不同的颜色。
如果json数据很大,我们只想看其中某个字段数据
#key是字段名称
jq '.<key>'
当某个字段是一个列表,jq可以对其进行切片
jq '.<list-key>[s:e]'
区别一下’.skills’和’.skills[]'两种,可以看到前者输出是一个列表,后者是非json格式的列表成员。
key filter
'.<key>'
过滤满足key的字段名,输出这个key的值。
因为key-value必须归属于某个对象,所以添加外层{}
。
递归展开json结构
有时候我们需要在一个json里边查找某个字段,但是确不知道这个字段在哪个嵌套里边,如果嵌套很深那么很难找到,jq可以把嵌套展开打平之后再查找。
#展开嵌套
jq '..' data.json
length filter
计算元素长度,对于对象,length表示对象里的元素个数,对于string,length表示string字符数,对于列表,表示列表元素个数。
keys filter输出全部的key,列表形式
删除某个key
使用del()删除filter描述的key-value
jq 'del(filter)' json.data
查看环境变量
环境变量
环境变量,简要的说,就是指定一个目录
,运行软件的时候,相关的程序将会按照该目录寻找相关文件
。设置变量对于一般人最实用的功能
就是:不用拷贝某些dll文件到系统目录中了
,而path这一系统变量就是系统搜索dll文件的一系列路径
。
在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容
。如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁琐了
。这涉及到环境变量 PATH
的设置问题,而 PATH的设置也是在linux下定制环境变量的一个组成部分
。
设置环境变量
----------1---------- 在/etc/profile
文件中添加变量
【对所有用户生效(永久的)
】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效
,并且是“永久的
”。
例如:编辑/etc/profile文件,添加CLASSPATH变量
vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行
$ source /etc/profile
不然只能在下次重进此用户时生效。
----------2---------- 在用户目录下
的 .bash_profile
文件中增加变量【对单一用户生效(永久的)
】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”
。 这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别
,这里是针对某一个特定的用户
如果你需要给某个用户权限使用这些环境变量
,你只需要修改其个人用户主目录
下的 .bash_profile
文件就可以了。通常 .bash_profile
和.bashrc
认为效果一样,也就是此处在 .bashrc中增加环境变量也行。
例如:编辑guok用户目录(/home/guok)下的.bash_profile
$ vi /home/guok/.bash.profile
添加如下内容:
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想马上生效还要运行
$ source /home/guok/.bash_profile
不然只能在下次重进此用户时生效。
----------3---------- 终端
直接运行 export 命令
定义变量【只对当前shell(BASH)有效(临时的)
】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,
$ export HELLO="Hello!"
该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。
系统启动读取顺序
/etc/profile,/etc/bashrc
是系统全局环境变量
设定~/.bashrc ,~/.bash_profile
是用户目录
下的私有环境变量
设定
当登入系统时候获得一个shell进程时
,其读取环境设定档有三步 :
/etc/profile -> ~/.bash_profile -> ~/.bashrc
1、首先读入的是全局环境变量设定档 /etc/profile,然后根据其内容读取额外的设定的文档,如 /etc/profile.d和/etc/inputrc 。
2、然后根据不同使用者帐号,去其根目录读取 ~/.bash_profile ,如果这读取不了就读取~/.bash_login,这个也读取不了才会读取 ~/.profile,这三个文档设定基本上是一样的,读取有优先关系 。其中,Unbutu默认没有~/.bash_profile文件,可新建。
3、最后在根据用户帐号读取~/.bashrc 。
查看环境变量
1 显示已知的环境变量
$ echo $HELLO
echo $JAVA_HOME
2 用env命令显示所有的环境变量
$ env
3 用set命令显示所有本地定义的Shell变量
$ set
4 用unset
命令 清除环境变量
set 可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ env|grep TEST #此命令有输入,证明环境变量TEST已经存在了
TEST=Test...
$ unset $TEST #删除环境变量TEST
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经存在了
5 用 readonly
命令设置只读变量
如果使用了readonly命令的话,变量就不可以被修改或清除了。示例如下:
$ export TEST="Test..." #增加一个环境变量TEST
$ readonly TEST #将环境变量TEST设为只读
$ unset TEST #会发现此变量不能被删除
-bash: unset: TEST: cannot unset: readonly variable
$ TEST="New" #会发现此也变量不能被修改
-bash: TEST: readonly variable
查看占用端口
win 中
参考 Windows端口开启关闭
netstat -a #显示所有活动的TCP连接以及计算机监听的TCP和UDP端口。
netstat -e #显示以太网发送和接收的字节数、数据包数等。
netstat -n #以数字形式显示所有活动的TCP连接的地址和端口号。
netstat -o #显示活动的TCP连接并包括每个连接的进程ID(PID)。
netstat -s #按协议显示各种连接的统计信息,包括端口号。
netstat -an #查看所有开放的端口。
netstat -nao | grep “8080” 查询8080端口
不支持 grep 可以 findstr “8080”
想知道它的进程名称
tasklist | findstr “3017”
关闭pid为3017的进程
/f 表示强行
taskkill /pid 3017 /f
taskkill -pid 3017 /f
taskkill /pid 2152 /pid 1284
taskkill /im notepad.exe
或者 ctrl + shift + delete 任务管理器,查看这个PID对应的进程名;
如果PID没有显示,菜单》查看》选择列》选中PID即可;得知进程后,我们可以将进程杀掉
有的关闭不掉可以暂时不关,试一试可不可以运行程序,不行的话可以重启电脑
linux 中
如果发现某个端口被占用后,可以用命令查看,该端口到底是被哪个进程所占用
netstat -pan | grep 5623
#其中5623位端口号
发现5623的端口,被28425的进程id所占用,继续进一步跟踪,到底是哪个程序所占用了。
通过进程id查找程序–ps
ps -aux | grep pid 查看进程程序名称
能够确认目前冲突的端口是哪个程序已经占用了,我们是重新启用换一个端口号,还是结束已经占用的端口号所用的程序,清空被占用的端口号。
直接查找 端口 对应的 进程id
sudo fuser -k 80/tcp
fuser -k 80/tcp
[root@nav-master sbin]# sudo fuser -k 80/tcp
80/tcp: 96603 96604
杀死端口
kill -9 [pid]
[root@nav-worker ~]# netstat -anp |grep 10250
tcp6 0 0 :::10250 :::* LISTEN 6353/kubelet
[root@nav-worker ~]# kill -9 6353
防火墙操作
Centos7
默认安装了firewalld
,如果没有安装的话,可以使用 yum install firewalld firewalld-config
进行安装。
查看版本
firewall-cmd --version
查看帮助
firewall-cmd --help
查看防火状态
systemctl status firewalld
service iptables status
firewall-cmd --state
暂时关闭防火墙/禁用防火墙
systemctl stop firewalld
service iptables stop
永久关闭防火墙/停止并禁用开机启动
systemctl disable firewalld
chkconfig iptables off
重启防火墙/设置开机启动
systemctl enable firewalld
service iptables restart
重启防火墙
firewall-cmd --reload
永久关闭后重启
//暂时还没有试过
chkconfig iptables on
查看区域信息
firewall-cmd --get-active-zones
查看指定接口所属区域信息
firewall-cmd --get-zone-of-interface=eth0
拒绝所有包
firewall-cmd --panic-on
取消拒绝状态
firewall-cmd --panic-off
查看是否拒绝
firewall-cmd --query-panic
将接口添加到区域(默认接口都在public)
firewall-cmd --zone=public --add-interface=eth0(永久生效再加上 --permanent 然后reload防火墙)
设置默认接口区域
firewall-cmd --set-default-zone=public(立即生效,无需重启)
更新防火墙规则
firewall-cmd --reload
firewall-cmd --complete-reload
(两者的区别就是第一个无需断开连接,就是firewalld特性之一动态
添加规则,第二个需要断开连接,类似重启服务)
查看指定区域所有打开的端口
firewall-cmd --zone=public --list-ports
在指定区域打开端口(记得重启防火墙)
firewall-cmd --zone=public --add-port=80/tcp
(永久生效再加上 --permanent)
–zone 作用域
–add-port=8080/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
查看jar包内文件
jar vtf fileName.jar
-v 在标准输出中生成详细输出
-t 列出归档目录
-f 指定归档文件名
-c 创建新的归档文件
-x 解压缩已归档的指定(或所有)文件
-u 更新现有的归档文件
-m 包含指定清单文件中的清单信息
-e 为捆绑到可执行 jar 文件的独立应用程序
指定应用程序入口点
-0 仅存储;不使用任何 ZIP 压缩
-M 不创建条目的清单文件
-i 为指定的 jar 文件生成索引信息
-C 更改为指定的目录并包含其中的文件
如果有任何目录文件,则对其进行递归处理。
vim
vim 中 快速查找
vim 中 /{要匹配的字符串}
n 或 N 进行上一个或下一个的匹配
echo
vim 不能用,用 echo
可以用 echo
在 app.txt 最后一行追加 HELLO
echo "HELLO" >> app.txt
1. 执行echo时,如果用 > 输出到文件,会 将文件内容清空 并输出
2. 执行echo时,如果用 >> 输出到文件,会将内容从文件 最后面 另起一行输出
base64 编码解码
用 gtalk@gmail.com 作为明文
加密代码:
echo "gtalk@gmail.com" |base64 -i
得到:Z3RhbGtAZ21haWwuY29tCg==
解密代码:
echo "Z3RhbGtAZ21haWwuY29tCg==" |base64 -d
得到:gtalk@gmail.com
实现使用 base64 加密、解密字符串并赋值给变量。网上绝大多数是使用 echo 管道实现 加密和解密字符串的输出。
wd=$( base64 -d <<< MQo= ) # 解码
in=$( base64 <<< "123456") # 加密
另外一种方式:
test=$(printf "%s""123456" | base64) # 加密
echo $test
test=$(printf "%s" MTIzNDU2| base64 -d) # 解密
输出日志到文件
比如想看 pod 的前几行日志
,又没有 --head 参数
ls > ls.txt #或者 ls-->ls.txt #把ls命令的运行结果保存到文件ls.txt中
> 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留
>> 是把输出附向到文件的后面,文件原内容会保留下来
上面的方法在写入文件的时候,终端没有任何输出
,如果想要同时在终端显示,需要用tee指令
$ ls | tee ls.txt #将会在终端上显示ls命令的执行结果,并把执行结果输出到ls.txt 文件中
$ ls | tee -a ls.txt #保留ls.txt文件中原来的内容,并把ls命令的执行结果添加到ls.txt文件的后面
上面的方法是写一句指令的输出
,如果需要运行多条指令
,还用同样的方法,就会比较麻烦,这个时候就用到了script指令
$ script
#Script. started, file is typescript
$ ls
#…… 内容省略
$ exit
#exit
#Script. done, file is typescript
启动script时没有指定文件名
,它会自动记录到当前目录
下一个名为 typescript的文件
中。也可以用 -a
参数指定文件名
,比如
$script. -a example.txt #终端的输出内容被记录到 example.txt这个文件中
退出script
时,用exit
,事实上script就是启动了一个shell
locale – 设置和显示程序运行的语言环境
Linux 中,使用 locale 命令来设置和显示程序运行的语言环境
,locale 会根据计算机用户所使用的语言,所在国家或者地区,以及当地的文化传统定义一个软件运行时的语言环境
通过 locale 来设置程序运行的不同语言环境
,locale 由ANSI C提供支持。locale 的命名规则
为<语言>_<地区>.<字符集编码>
,如zh_CN.UTF-8
,zh代表中文,CN代表大陆地区,UTF-8表示字符集
。在locale环境中,有一组变量,代表国际化环境中的不同设置
<语言>_<地区>.<字符集编码><@修正值>
zh_CN.utf8
zh:表示中文
CN:表示大陆地区
Utf8:表示字符集
de_DE.utf-8@euro
de:表示德语
DE:表示德国
Utf-8:表示字符集
euro:表示按照欧洲习惯加以修正
设置locale的根本就是设置一组总共12个LC开头的变量,不包括LANG和LC_ALL
locale默认文件存放位置: /usr/share/i18n/locales
查看当前 locale 设置
列出所有启用的 locale:
[root@htlwk0001host ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
优先级:LC_ALL > LC_* > LANG
LANG:LANG的优先级是最低的,它是所有LC_*变量的默认值
下方所有以LC_开头变量(LC_ALL除外)中,如果存在没有设置变量值的变量,那么系统将会使用LANG的变量值来给这个变量进行赋值。如果变量有值,则保持不变
LC_ALL:它不是环境变量,它是一个宏,它可通过该变量的设置覆盖所有LC_*变量
这个变量设置之后,可以废除LC_*的设置值,使得这些变量的设置值与LC_ALL的值一致,注意LANG变量不受影响。
LC_CTYPE:用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等,非常重要的一个变量。
LC_NUMERIC:用于格式化非货币的数字显示
LC_TIME:用于格式化时间和日期
LC_COLLATE:用于比较和排序
LC_MONETARY:用于格式化货币单位
LC_MESSAGES:用于控制程序输出时所使用的语言,主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等
LC_PAPER:默认纸张尺寸大小
LC_NAME:姓名书写方式
LC_ADDRESS:地址书写方式
LC_TELEPHONE:电话号码书写方式
LC_MEASUREMENT:度量衡表达方式
LC_IDENTIFICATION:locale对自身包含信息的概述
查看当前系统所有可用 locale
[root@htlwk0001host ~]# locale -a
设置系统的 locale
1 可以修改/etc/profile
文件
修改/etc/profile
文件,在最下面增加
export LC_ALL=zh_CN.utf8
export LANG=zh_CN.utf8
命令行中使用命令 source 配置文件
,使其生效
source /etc/locale.conf
2 修改/etc/locale.gen
文件
apt-get install locales #安装locale-gen命令;
vim /etc/locale.gen #编辑保存退出;
locale-gen #生效;
3 命令行模式
localectl set-locale LANG=en_US.UTF-8
4 修改/etc/default/locale
将注释打开即可,修改完成后,执行下 locale-gen 命令使其生效
LANG=“en_US.UTF-8”
LANGUAGE=“en_US:en”
source
使其生效
5 创建/etc/locale.conf文件
LANG=en_AU.UTF-8
LC_COLLATE=C
LC_TIME=en_DK.UTF-8
source
使其生效
curl
curl -H "Content-Type: application/json"
-X POST
-d '{"user_id": "123", "coin":100, "success":1, "msg":"OK!" }'
"http://192.168.0.1:8001/test"
-k
-H 请求头
-d POST内容
-X 请求协议
-k 跳过协议
执行文件命令
$ source 命令文件
例如 pod 中执行 sql 脚本
服务器 /opt目录下有一个 insert.sql文件,需要将其执行到 mysql pod 中
1 docker cp 拷贝服务器中 insert.sql 到 mysql pod 容器中 /sql 目录
2 进入 mysql pod
3 执行 $ source /sql/insert.sql;
scp
从本地复制文件到服务器:
注意:是将所在机器的文件复制到指定服务器,所以执行scp命令直接在命令行执行,而不需要登录服务器再scp
scp /home/myfile/test.txt root@192.168.1.100:/data/ scp 文件本地路径 root@服务器端口:服务器路径
从本地复制文件夹到服务器:
scp -r /home/myfile/ root@192.168.1.100:/data/
从服务器复制文件到本地:
scp root@192.168.1.100:/data/test.txt /home/myfile/
从服务器复制文件夹到本地:
scp -r root@192.168.1.100:/data/ /home/myfile/
tree
linux 获取文件夹的目录结构
$ tree mongodb
mongodb
├── Chart.yaml
├── charts
├── templates
│ ├── NOTES.txt
如果提示 command not found
,则
yum -y install tree
install 失败
ntpdate时间报错
报错1
[root@nginx01-41 ~]# ntpdate times.aliyun.com
Error resolving times.aliyun.com: Servname not supported for ai_socktype (-8)
31 Aug 21:04:20 ntpdate[1287]: Can't find host times.aliyun.com: Servname not supported for ai_socktype (-8)
31 Aug 21:04:20 ntpdate[1287]: no servers can be used, exiting
看到这个错误之后,第一反应是域名解析不正确,找不到请求资源,但是发现ping times.aliyun.com
正常
,这个时候想是不是时区出问题
,查看发现时区正常,如果不正常Centos7按照下面方法设置时区
timedatectl status 查看当前的系统时间状态
timedatectl list-timezones 查看时区,找到Asia/Shanghai
timedatectl set-timezone Asia/Shanghai
设置完成之后测试还是一样的错误,查找资料找到解决办法:
是因为/etc/services 里面需要有下面这两行
ntp 123/tcp
ntp 123/udp # Network Time Protocol
如果没有这个文件则别的虚拟机里面拷贝
/ect/services文件
,然后测试正常
报错2
ntpdate同步时间出现:no server suitable for synchronization found 最终解决方案!
nginx
源码安装Nginx的 配置文件默认在 /usr/local/nginx/conf 里面的 nginx.conf文件!
./nginx - t : 表示检测 nginx.conf文件的语法是否有问题!
./nginx - s reload : 表示重新加载 nginx.conf文件!
./nginx - s quit : 表示强制或正常退出 Nginx 服务!
./nginx : 表示开启 Nginx 服务!
redis
Redis 命令参考 如果是集群,先进入 redis 的 pod
运行redis
进入pod 输入 redis-cli
模糊查询
* :通配任意多个字符
? :通配单个字符
[] :通配括号内的某一个字符
注意区分大小写
keys * 查看所有 key
> keys *ge
"vge"、"sge"
> keys *e
"vge"、"sge"
> keys ?ge
"vge"、"sge"
> keys ???
"vge"、"sge"
keys *l* //代表含有l的键
// "cdf_xl"、"abc_lele"
keys *_? //代表倒数第二个为_的键
//"1_c"
keys *[_xl]? //代表倒数第二个在[]里面的都会被返回
// "cdf_xl"、"abc_lele"、"1_c"
拿到 value
get key_name
其他
memory usage 返回字节数
127.0.0.1:6006> memory usage key_name
(integer) 1489075554
llen 返回长度,数量
llen key_name
修改环境变量不重启生效
window系统修改环境变量
之后一般通过重启来使环境变量生效
,但是又一种更加简单的方法,直接通过Dos窗口打印要修改的环境变量来刷新环境变量
,从而使立刻环境变量生效
具体操作如下:
win+r 输入 cmd 调出Dos窗口
//打印你所要修改的环境变量名称,按回车即可
输出echo %path%
k8s
k8s过程学到的命令
查看 pod 实时占用内存
kubectl top po -n polaris