工作用到的 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 * 
在“*”后输入你要发送的内容即可

怎么通过cmd连接Redis服务器_docker

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,然后可以在服务器上运行这个包

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_02


注意

docker save name:tag > t1.tar
docker save 镜像ID > t2.tar

两种方式最好用第一种
用镜像ID保存会少一个repositories的文件

加载镜像

-i 指定加载的镜像

docker load -i /mydocker/images/redis.tar

pom 文件配置打包到容器的内容

打包时,忘记把某个资源打包,需要手动把文件上传到容器中

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_03


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 的缩写。

怎么通过cmd连接Redis服务器_docker_04

怎么通过cmd连接Redis服务器_linux_05

统计一个文件中某个字符串的个数

[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

查看文件的字节数、字数、行数

怎么通过cmd连接Redis服务器_用户名_06

7:第一列表示行数。
7:第二列表示单词数。
57:第三列表示字节数。
log.txt:第四列表示文件名。

统计单词数

怎么通过cmd连接Redis服务器_linux_07

统计字节数

怎么通过cmd连接Redis服务器_用户名_08

统计字符数

怎么通过cmd连接Redis服务器_bash_09

统计行数【★★★★★】

怎么通过cmd连接Redis服务器_bash_10

不输出文件名

怎么通过cmd连接Redis服务器_docker_11

计算字符串长度

怎么通过cmd连接Redis服务器_linux_12

与管道符结合使用

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_13

判断 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

怎么通过cmd连接Redis服务器_linux_14


df(disk free):显示磁盘分区上可以使用的磁盘空间

-a    #查看全部文件系统,单位默认KB
-h    #使用-h选项以KB、MB、GB的单位来显示,可读性高~~~(最常用)

怎么通过cmd连接Redis服务器_用户名_15

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 命令才能查看。

怎么通过cmd连接Redis服务器_bash_16


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

怎么通过cmd连接Redis服务器_bash_17

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目录的子目录或者子子目录中

怎么通过cmd连接Redis服务器_linux_18


怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_19


怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_20


按文件修改时间查找

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

怎么通过cmd连接Redis服务器_bash_21

linux 文件颜色

绿色文件---------- 可执行文件,可执行的程序 

红色文件-----------压缩文件或者包文件

蓝色文件----------目录    

白色文件----------普通,如文本文件,配置文件,源码文件等 

浅蓝色文件----------链接文件,主要是使用ln命令建立的文件

红色闪烁----------表示链接的文件有问题

黄色文件----------表示设备文件

灰色文件----------表示其它文件

怎么通过cmd连接Redis服务器_linux_22

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 .
#不加引号,但是为了标准最好写上,因为某些时候不加会有问题.

怎么通过cmd连接Redis服务器_docker_23


jq把数据转换成易读格式,还添加了颜色高亮说明,其中key和value使用了不同的颜色。

如果json数据很大,我们只想看其中某个字段数据

#key是字段名称
jq '.<key>'

怎么通过cmd连接Redis服务器_docker_24


当某个字段是一个列表,jq可以对其进行切片

jq '.<list-key>[s:e]'

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_25

区别一下’.skills’和’.skills[]'两种,可以看到前者输出是一个列表,后者是非json格式的列表成员。

key filter

'.<key>'

过滤满足key的字段名,输出这个key的值。

因为key-value必须归属于某个对象,所以添加外层{}

怎么通过cmd连接Redis服务器_linux_26


递归展开json结构

有时候我们需要在一个json里边查找某个字段,但是确不知道这个字段在哪个嵌套里边,如果嵌套很深那么很难找到,jq可以把嵌套展开打平之后再查找。
#展开嵌套
jq '..' data.json

怎么通过cmd连接Redis服务器_用户名_27

length filter

计算元素长度,对于对象,length表示对象里的元素个数,对于string,length表示string字符数,对于列表,表示列表元素个数。

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_28


keys filter输出全部的key,列表形式

怎么通过cmd连接Redis服务器_bash_29


删除某个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”

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_30

想知道它的进程名称
tasklist | findstr “3017”

怎么通过cmd连接Redis服务器_怎么通过cmd连接Redis服务器_31

关闭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位端口号

怎么通过cmd连接Redis服务器_bash_32

发现5623的端口,被28425的进程id所占用,继续进一步跟踪,到底是哪个程序所占用了。

通过进程id查找程序–ps

ps -aux | grep pid  查看进程程序名称

怎么通过cmd连接Redis服务器_用户名_33


能够确认目前冲突的端口是哪个程序已经占用了,我们是重新启用换一个端口号,还是结束已经占用的端口号所用的程序,清空被占用的端口号。

直接查找 端口 对应的 进程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-8zh代表中文,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