Appearance
防火墙
查看防火墙状态:
firewall-cmd --state
或systemctl status firewalld.service
开启防火墙:
systemctl start firewalld.service
开机启动防火墙:
systemctl enable firewalld.service
重启防火墙:
systemctl restart firewalld.service
查看防火墙是否设置了开机自启动:
systemctl is-enabled firewalld.service;echo $?
关闭防火墙:
systemctl stop firewalld.service
打开单独个窗口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
打开20000-29999端口:
firewall-cmd --zone=public --add-port=20000-29999/tcp --permanent
=
前后不要加空格,否则命令报错,如图所示--permanent
为永久生效,不加为单次有效(重启失效)查看开启端口:
netstat -ntlp
或firewall-cmd --list-ports
关闭端口:
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
查看单个端口是否打开:
firewall-cmd --zone=public --query-port=3306/tcp
远程复制
scp -r 124.222.70.26:/var/lib/jenkins/workspace/medicine-institute/ruoyi-admin/target/ruoyi-admin.jar /usr/nginx/admin/ruoyi-admin.jar
scp -r 124.222.70.26:/usr/local/nginx/html/static/js/app.c1e248f5.js /usr/nginx/html/static/js/app.c1e248f5.js
scp -r 124.222.70.26:/usr/local/nginx/html/ /usr/nginx/
scp -r 124.222.70.26:/home/ruoyi/ /home/
查看系统,CPU信息
# 查看系统内核信息
uname -a
# 查看系统内核版本
cat /proc/version
# 查看当前用户环境变量
env
cat /proc/cpuinfo
# 查看有几个逻辑cpu,包括cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看有几个cpu ,每个分别是几核
cat /proc/cpuinfo | grep physical | uniq -c
# 查看当前CPU运行在32bit还是64bit模式下,如果是运行在32bit下也不代表cpu不支持64bit
getconf LONG_BIT
# 结果大于0,说明支持64bit计算,lm指long mode,支持lm则是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' wc - l
# 查看磁盘使用情况
dh -h
# 内存
cat /proc/meminfo
# 查看内存使用情况
free -m
建立软连接
ln -s /usr/local/jdk1.8/ jdk
rpm相关
rpm -qa | greo 软件名
sshkey相关
# 创建sshkey
ssh-keygen -t rsa -C my_email@126.com
# id_rsa.pub 的内容拷贝到要控制的服务器的 home/username/.ssh/authorized_keys 中,如果没有则新建。.ssh权限为700,authorized_keys权限为600
同步服务器时间
# 查看时间
date -R
# 安装ntp
yum -y install ntp
# 同步时间
ntpdate time.nist.gov
# 设置定时更新任务
crontab -e
# 每隔10分钟,同步一次
*/10 * * * * ntpdate time.nist.gov
后台运行命令(nohup)
# 后台运行,并且有nohup.out输出
nohup xxx &
# 后台运行,不输出任何日志
nohup xxx > /dev/null &
# 后台运行,并将错误信息做标准输出到日志中
nohup xxx > out.log 2>&1 &
强制活动用户退出
# 其中TTY标识终端名称
pkill -kill -t [TTY]
查看最近登录信息列表
# 最近登录的5个账号
last -n 5
设置固定IP
ifconfig em1 192.168.1.1 netmask 255.255.255.0
添加用户,配置sudo权限
# 新增用户
useradd 用户名
passwd 用户名
# 增加sudo权限
vim /etc/sudoers
# 修改文件里面的
# root ALL=(ALL) ALL
# 用户名 ALL=(ALL) ALL
强制关闭进程名包含xxx的所有进程
ps aux | grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9
vim操作
# normal模式下,g标识全局,x标识查找的内容,y表示替换后的内容
:%s/x/y/g
# normal模式下
0 # 光标移动行首(数字0)
$ # 光标移至行尾
shift + g # 跳转文件最后
gg # 跳到文件头
# 显示号
:set nu
# 去除行号
:set nonu
# 检索【xxx(检索内容)】
/xxx # 从头检索,按n查找下一个
?xxx # 从尾巴检索
打开只读文件,修改后需求保存时(不用切换用户即可保存的方式)
# normal模式下
:w !sudo tee %
查看磁盘,文件目录基本信息
# 查看磁盘挂载情况
mount
# 查看磁盘分区信息
df
# 查看目录及目录大小
du -H -h
# 查看当前目录下各个文件,文件夹占了多少空间,不会递归
du -sh *
压缩命令
# 压缩目录
tar czvf xxx.tar
zip -r xxx.zip
解压缩命令
tar zxvf xxx-tar
# 解压到指定文件夹
tar zxvf xxx.tar -C /xxx/yyy/
unzip xxx.zip
变更文件所属用户,用户组
chown username.userGroup xxx.log
cp、scp、mkdir
# 复制文件
cp xxx.log
# 复制并覆盖同名文件
cp -f xxx.log
# 复制文件夹
cp -r xxx(源文件夹路径) yyy(目标文件夹路径)
# 远程复制
scp -P ssh端口 username@192.168.1.2:/home/data/ /yyy(目标路径)
# 级联创建目录
mkdir -p /xxx/yyy/xxx
# 批量创建文件夹,会在test、main下都创建java、resources文件夹
mkdir -p src/{test,main}/{java,resources}
比较两个文件
diff -u 1.txt 2.txt
日志输出的字节书,可以用作性能测试
# 如果性能测试,可以每执行依次,往日志里面输出".",这样日志中的字节就是实际的性能测试运行的次数,还可以看见事实速率
tail -f xxx.log | pv -bt
检索相关
# 反向匹配,查找不包含xxx的内容
grep -V xxx
# 排除所有空行
grep -V '^pre>
# 返回结果2,则说明第二行时空行
grep -n '^$' 111.txt
# 查询以abc开头的行
grep -n "^abc" 111.txt
# 同时列出该词语出现文章的第几行
grep 'xxx' -n xxx.log
# 计算一下该字符出现的次数
grep 'xxx' -c xxx.log
检索命令
which
which用于查找并显示给定命令的绝对路径,环境变量中PATH参数也可以被查出来
语法:
例
which bash
-> /usr/bin/bash
find命令
# 在目录下找后缀是.mysql的文件
find /home/local -name '*.mysql' -print
# 会从/usr目录下开始往下找,找最近3天之内存取过的文件
find /usr -atime 3 -print
# 会从/usr 目录开始往下找,找最近5天之内修改过的文件
find /usr -ctime 5 -print
# 会从/doc 目录开始往下找,找jacky用户的,文件名开头是j的文件
find /doc -user jacky -name 'j*' -print
# 会从/doc目录开始往下找,找寻文件名是ja开头或者ma开头的文件
find /doc \(-name 'ja*' -o- -name 'ma*' \) -print
# 会从/doc 目录开始往下找,找到凡是文件名结尾为bak的文件,把它删除掉。-exec选项是执行的意思。rm是删除命令,{}表示文件名,'\;'是规定的命令结尾
find /doc -name '*bak' -exec rm {} \;
网络相关
查找什么进程使用了该端口
# 安装lsof:
yum install lsof -y
lsof -i:port
获取本机ip地址
/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d 'addr:'
ss
# 显示本地打开的所有端口
ss -l
# 显示每个进程具体的socket
ss -pl
# 显示所有tcp socket
ss -t -a
# 显示所有的UDP socket
ss -u -a
# 显示所有已建立的SMTP
ss -o state established '(dport = :smpt or sport = :smtp)'
# 显示所有已建立的http连接
ss -o state established '(dport = :http or sport = :http)'
# 找出所有连接x服务器的进程
ss -x src /temp/.x11-unit/*
nc命令、tcp调试器
# 给某一个endpoint 发送TCP请求,就将data的内容发送到对端
nc 192.168.1.11 8000 < data.txt
# nc 可以当作服务器,监听某个端口号,把某一次请求的内容存储到received_data里
nc -l 8000 > received_data
# 上边监听一次,如果多次可以加上-k参数
nc -lk 8000
监控linux性能命令
top
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序, 然后回车。而大写的 R 键可以将当前的排序倒转
列名 | 含义 |
---|---|
PID | 进程id |
PPID | 父进程id |
RUSER | Real user name |
UID | 进程所有者的用户id |
USER | 进程所有者的用户名 |
GROUP | 进程所有者的组名 |
TTY | 启动进程的终端名。不是从终端启动的进程则显示为 ? |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
P | 最后使用的CPU,仅在多CPU环境下有意义 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
TIME | 进程使用的CPU时间总计,单位秒 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
%MEM | 进程使用的物理内存百分比 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb。 |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
CODE | 可执行代码占用的物理内存大小,单位kb |
DATA | 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
SHR | 共享内存大小,单位kb |
nFLT | 页面错误次数 |
nDRT | 最后一次写入到现在,被修改过的页面数。 |
S | 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程 |
COMMAND | 命令名/命令行 |
WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags | 任务标志,参考 sched.h |
dmesg,查看系统日志
dmesg
iostat,磁盘IO情况监控
iostat -xz 1
# r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
# await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
# avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
# %util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。
# 如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。
telnet
telnet: command not found =>
yum install telnet-serve
;yum install telnet.*
explame
telnet 192.168.1.4 3306
Shell文件
更改文件为可执行文件
// 将window复制到linux的文件改成linux
:set ff=unix
// 给sh变成可执行文件
chmod +x test.sh
// bash启动sh文件
bash ./test.sh
授权目录
// ubuntu普通用户,java 权限不够时
sudo chmod -R 777 /usr/local/jdk1.8.0_181
nrm安装
1、npm install -g nrm
2、nrm add local http://116.8.109.23:20119/repository/3rd_npm_group/
3、nrm ls
4、nrm use local
5、npm login
6、username输入:
7、password输入:
8、email输入: 自己的邮箱
更改目录所有者
// 更改文件目录所有者
sudo chown -R szxc /data/szxc/typt/avatar
更改文件读写权限
sudo chmod 777 rabbitmq_delayed_message_exchange-3.11.1.ez
window结束端口
window结束端口:
netstat -ano | findstr "8080" =》得到pid
tasklist | findstr 31476 =》查看pid进程名称
taskkill /f /pid 31476 》结束31476的pid