netstat 显示网络状态

快速用法

netstat -nlptu
-n 不解析主机名
-l 监听端口
-p 显示PID
-t 显示TCP连接
-u 显示UDP连接

windows下用法

netstat -ano
#列出监听端口

scp 远程复制文件

快速用法

从本地发送到远程
scp -r -P 目标主机端口号 本地文件/目录 目标主机用户名@目标主机:目标目录
-r 递归复制目录内文件
-P 指定数据传输用端口号

从远程复制到本地
scp -r -P 目标主机端口号 目标主机用户名@目标主机:目标文件/目录

#实例:
scp  -P 22  -r /mysql_bak root@192.168.1.10:/opt/backup/mysql_bak

#使用ssh密钥登录
scp -i <ssh密钥文件> -r  /mysql_bak/ root@192.168.1.10:/opt/backup/mysql_bak/

在压缩文件名中加入日期

$(date +%Y%m%d-%H%M)
#使用格式

创建带时间的tar压缩包
tar -zcvf backup-$(date +%Y%m%d).tar.gz abc.txt
backup-20200730.tar.gz
#文件名称中将含有当前日期

tar -zcf attachments-$(date +%Y_%m_%d).tar.gz attachments
#格式2
#attachments-2021_01_01.tar.gz

定期删除1个月前的日志或备份文件

快速用法

0 0 * * *  find /opt/hexo_bak/  -mtime +31 -type f -name '*.tar.gz' -exec rm -rf {} \;
#在crontab中增加计划任务。

0 */4 * * * find /opt/hexo_bak/  -mtime +31 -type f -name '*.tar.gz' -exec rm -rf {} \;
#每4小时执行一次

删除超过指定大小的文件

find /tmp/ -size +50M -exec rm {} \;

查找大文件

find / -type f -size +100M -print0

列出当前目录中最大的前20个文件

du -sh * | sort -rh | head -n 20

MySQL数据库定期备份脚本

#!/bin/sh
# Database info
DB_USER="root"
DB_PASS="password"
DB_HOST="localhost"
# Database array
DB_NAME=("DB_1" "DB_2")
# Others vars
BIN_DIR="/opt/mysql/bin"      #the mysql bin path
BCK_DIR="/home/mysql-backups"  #the backup file directory
DATE=`date +%F`
# create file
mkdir $BCK_DIR/$DATE
# TODO
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql
for var in ${DB_NAME[@]};
do
  $BIN_DIR/mysqldump --opt --single-transaction --master-data=2 -u$DB_USER -p$DB_PASS -h$DB_HOST --databases $DB_NAME > $BCK_DIR/$DATE/db_$var.sql
done

通过进程号PID找到文件路径和程序

ll /proc/1378/cwd
#对应的目录

ll /proc/1378/exe
#对应的可执行程序

设置CentOS的系统语言为中文

方法一
1.查看当前系统支持语言

locale -a

2.安装中文语言包

dnf install langpacks-zh_CN

3.设置语言为中文

localectl set-locale LANG=zh_CN.utf8

4.重新连接服务器
重新ssh连接后可以看到已经显示中文

方法二

修改配置文件
vim /etc/locale.conf

LANG="zh_CN.UTF-8" 
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" 
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" 
SYSFONT="lat0-sun16"

查看CentOS发行版本号

cat /etc/redhat-release
输出如下:
CentOS Linux release 7.6.1810 (Core)

查看当前系统每个IP的连接数

netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn

生成一个32位的随机密码

cat /dev/urandom | head -1 | md5sum | head -c 32

修改软连接

将一个已有的软连接指向其它目标

ln -snf 新目标文件 软连接名称

使用rm命令时没有确认

在家目录中.bashrc文件中添加:

alias rm='rm -i'

接着重新载入.bashrc

source .bashrc

停止进程脚本

kill -9 $(ps -ef | grep 进程名称 | grep -v 'grep' | awk '{print $2}')
#停止包含指定名称的进程

yum update 不更新内核

yum --exclude=kernel* update

nginx反向代理使用客户端真实IP

    location /xx {
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass http://0.0.0.0;
    }

java项目启动脚本

cat << EOF > /data/restart_safety.sh
kill -9 \$(ps -ef | grep "safety" | grep -v 'grep' | awk '{print \$2}')
nohup java -jar -Dspring.profiles.active=dev /data/produce.jar > /data/logs/produce.log 2>&1 &
tail -f /data/logs/produce.log
EOF

解压缩tar.bz2文件

tar -jxf xxx.tar.bz2

#如果解压缩失败,安装bzip2
yum install bzip2

解压缩xz文件

tar -xf xxx.tar.xz

解压文件到指定目录

tar -xf example.tar.gz -C /opt
#将压缩文件解压到opt目录

在vim中修改编码格式

set ff=unix

列出yum中指定软件的所有版本

yum list docker-ce --showduplicate

wget命令保存文件到指定位置

wget https://xxxxx -P /opt/
#将下载的文件保存到/opt下

删除软连接

当删除一个目录的软连接时,不能带有/号,否则将会删除源目录内的文件,而非删除这个软连接。
谨防操作失误。

建议的删除方法:
rm -i links
使用-i参数,删除时会有提醒。
rm: remove symbolic link 'apps'? 
看到这个提示,就能确定要删除的是软连接,而非目录内的文件了。

windows刷新dns缓存

打开CMD

ipconfig /flushdns 

windows中注册bat或exe为服务

sc create 服务名称 binPath= C:\123.bat start= auto
[SC] CreateService 成功
#注册服务

sc delete 服务名称
#删除服务

windows下使用类tail命令

powershell下可使用
gc c:\log.txt -wait
#实现类似linux中tial命令的效果,持续输出日志内容。

cmd不显示运行窗口

cmd 后台运行 不显示窗口 隐藏

@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

查看cpu信息

cat /proc/cpuinfo
#查看CPU信息

lscpu
#查看CPU信息

nproc
#查看cpu核心数
#可以用于make时指定线程数等场景下使用。

使用tree显示目录树状结构

tree /data
使用树状结构显示全部文件

tree /data -L 2
#显示3层目录

快速格式化大硬盘

mkfs.ext4 -T largefile /dev/sdxx

vim搜索替换

%s/foo/bar/g
#%s 全文搜索替换
#s 单行搜索替换
#/g 贪婪,替换一行内所有匹配项
#不贪婪,替换一行内第一个匹配项后,读取下一行
#分隔符/可以换成别的符号,如@或者+等等

循环执行shell命令

while true;do curl http://192.168.3.60/;sleep 1;done

tcpdump抓包

tcpdump -i eth0 -nn host 224.0.0.18
#抓指定ip主机的包
#

nginx禁用http特定方法请求

if ($request_method !~ ^(POST|GET|PUT|OPTIONS|DELETE)$) {return 403;}

可添加在server中 或 location中

通过lsof查看进程开启的文件

lsof -p 进程pid
#查看进程打开的文件

lsof -i:80
#查看80端口监听程序

crontab 定时任务注意事项

  1. 如果要设置每隔几个小时执行一次,在分钟处需要写具体分钟(一般是0),不能使用*号。
0 */8 * * * cmd

* */8 * * * cmd

这2种写法的区别:
第一种:每隔8小时执行一次。(24小时会执行4次)
第二种:每天8点的每个1分钟都会执行一次。(每天8点,执行60次,每1分钟执行一次)
意义完全不同

定时任务:重启后自动执行

@reboot /root/app.sh

sed进行文件内容替换

sed命令可以通过查找和替换,快速修改配置文件内容。
sed依次读取文件的一行,执行处理。处理完毕后再读取下一行,直到文件全部读取完毕。因此sed默认为贪婪模式。

#在以SELINUX=开头的行中,查找enforcing并将其替换为disabled。
sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
            1️⃣           2️⃣         3️⃣  

#在以SELINUX开头的行,把整行替换为SELINUX=disabled。
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
           1️⃣              2️⃣

#查找替换全部匹配内容
sed -i 's/192.168.1.1/192.168.10.10/' /server.conf

#查找并删除
删除所有#开头的行,即删除文件内的注释。
sed -i '/^#/d' config.conf

使用rsync同步文件

rsync和scp都可以用来传输文件。

rsync -avz -e"ssh -p 22" /localpath root@1.1.1.1:/remotepath
#把本地同步文件到远程服务器

rsync -avz -e"ssh -p 22" --delete /localpath root@1.1.1.1:/remotepath
#把本地同步文件到远程服务器
--delete 与源看齐,如果有和源不一致的多余文件,则删除。
--update 只传输源中修改时间更晚的文件。

#从远程服务器同步到本地
rsync -avz -e“ssh -p22” root@1.1.1.1:/remotepath /localpath

-a 归档模式,保持所有文件属性。
-v 显示传输时的信息信息。
-z 传输过程中压缩,节省带宽。

修改docker的data路径

docker的默认data路径,存放在根目录,可能会空间不足。需要移动data目录位置。

#停止docker服务

#编辑配置
vim /etc/docker/daemon.json

"data-root":"/data/docker-data"

#原有文件要手动移动到新目录下。
#重启docker

后台启动程序

nohup java -jar app.jar > /log/app.log 2>&1 &

以后台方式启动程序,并将日志输出到文件。
例子:minio

nohup ./minio server /mnt/data --console-address "0.0.0.0:9001" > /var/logs/minio.log 2>&1 &

wget断点续传

wget -c -t 0 https://xxxxx.tgz
-c 断电续传
-t 重试次数 0表示一直重试

跨服务器拷贝文件

yum install nmap -y

#服务器端执行
cd /data/
nc -l 10080 < xxxx.tar.gz
#执行后保持执行状态。

#客户端执行
nc 10.10.10.10 10080 > xxxx.tar.gz
ls -lh
#查看文件是否传输完成,完成后ctrl+z结束nc进程。

curl 测试命令

#显示https证书信息
curl -vvIk https://www.baidu.com
-v  详细模式,输出请求和响应的详细信息
-I  检查服务器的响应状态和头信息
-k  忽略证书验证
-L  跟随重定向

非root用户nginx监听80端口

使用root用户执行

setcap cap_net_bind_service=+eip /usr/local/nginx/sbin/nginx

(持续更新)

标签: System Management

添加新评论