linux命令杂记 - 杂乱无章

1.巡检

磁盘使用率 df -h

查看文件目录使用 du -sh *

内存使用率 free -h

CPU空闲率 sar -u 1 5

网络连接数(tcp连接数) netstat -alntp|grep tcp|wc -l

查看指定目录所在磁盘逻辑卷的使用率

df -h /data

2.>重定向到文件(覆盖),>>追加到文件

tee重定向到文件并显示命令结果,tee -a追加;如:df -h | tee -a 1.txt

cat >> 1.txt 输入的内容追加到1.txt, ctrl+d保存

3.显示光标 : echo -e "\033[?25h"

隐藏光标 : echo -e "\033[?25l"

4.改名字

mv /home/mingyiiot/SRC_GD_D_wlwczpt_user_20221010.txt /home/mingyiiot/SRC_GD_D_wlwczpt_user_20221011.txt

​​谨慎使用 mv​​:跨文件系统移动大文件或大量文件时,会比较耗时并占用额外的磁盘I/O。对于重要数据,如果条件允许,可以先尝试复制(cp)验证数据完整性后再删除原文件。

跨文件系统移动的本质​​:理解跨文件系统移动实际上是复制后删除,这很重要。如果移动过程被中断(如断电),可能会导致数据不一致或文件损坏。

drwxr-xr-x 2 root root

注:

1)d是指这是文件,同理,l是软连接,c是字符设备,-是文件

2)rwx r-x r-x 表示所属用户,用户组,其他用户的权限,r4,w2,x1 目录最高权限是777,文件最高权限是666(默认,因为默认文件不可执行)

3)2是指这里有两个连接

4)root root 用户 用户组

5.获取日期

dat=$(date "+%Y%m%d")

6、定时(后台不挂断执行脚本)

crontab -e

00 11 * * * nohup sh /home/mingyiiot/wlw_user.sh > /home/mingyiiot/wlw_user.log 2>&1 &

重启

systemctl restart cron / systemctl restart crond

7.安装lftp

yum -y install lftp

8.服务器中文乱码

xshell,右击服务器,属性,终端,编码utf-8

2>&1解释:

将标准错误(2)重定向到标准输出(&1),

标准输出(&1)再被重定向输入到watch.log文件中

最后的&:

后台执行

10.明文脚本加密

gzexe test.sh

chmod +x test.sh

gzexe -d test.sh 解密

chmod +x和chmod a+x等价,都是为所有用户添加执行权限

11.grep多个或条件

grep -E "CHANGED|stdout"

12.查看文件编码格式

vi进文件

:set fileencoding

:set fileencoding=utf-8 修改

13.tar命令

打包

tar -cvf test.tar test

-c:表示创建归档文件包,将文件打包到新的归档文件中

-v:在解包/打包过程中,它会显示正在提取的文件名

-f:后面接要解包/打包的文件

压缩

tar -zcvf test.tar.gz test

-z:表示使用 gzip压缩 .tar.gz 或 .tgz 文件

-j:以bz2方式压缩 tar.bz2

-J:以xz方式压缩 tar.xz

zip test.zip *.txt

解包

tar -xvf test.tar -C /tmp/ # 将 test.tar归档包里的文件解包到tmp目录里

-x 解包

tar -C /tmp/ -xvf test.tar test1 # 只解包test.tar归档包里的test1文件,解包到tmp目录

tar -xvf test.tar --exclude=test1 # 除了test1都解包

解压

tar -zxvf xxx.tar.gz

-z:表示解压使用 gzip压缩的文件

unzip test.zip

查看归档文件但不解包

tar -tvf test.tar

将找到的文件全部压缩到一起

find . -name "*.deb" | xargs tar -zcPf test_deb.tar.gz

14.创建链接,方便统一管理目录

ln -sv /opt/soft/xxxxxxx /usr/local/prometheus

15.防火墙

设置开机启用/禁用防火墙:

systemctl enable/disable firewalld.service

启动/关闭防火墙:

systemctl start/stop firewalld

检查防火墙状态:

systemctl status firewalld

查看防火墙状态:

firewall-cmd --state

重新加载配置:

firewall-cmd --reload

查看开放的端口:

firewall-cmd --list-ports

开启防火墙端口:

firewall-cmd --zone=public --add-port=22/tcp --permanent

命令含义:

--zone #作用域

--add-port=9200/tcp #添加端口,格式为:端口/通讯协议

--permanent #永久生效,没有此参数重启后失效

注意:添加端口后,必须用命令

firewall-cmd --reload

重新加载一遍才会生效

关闭防火墙端口:

firewall-cmd --zone=public --remove-port=8001/tcp --permanent

firewall-cmd --zone=public --remove-port=443/tcp --permanent

firewall-cmd --zone=public --remove-port=22088/tcp --permanent

允许特定IP访问某个端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.238.24.233" port protocol="tcp" port="63001" accept"

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="132.120.15.16" port protocol="tcp" port="5432" accept"

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.18.200.73" port protocol="tcp" port="22088" accept"

允许某个IP访问所有端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.15.0.164/27" accept"

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="132.120.15.16" accept"

firewall-cmd --reload

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.18.200.73" accept"

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="132.120.15.16" port protocol="tcp" port="5432" accept"

清空规则:

systemctl stop firewalld && \

rm -rf /etc/firewalld/zones/* && \

rm -rf /etc/firewalld/services/* && \

rm -rf /etc/firewalld/direct.xml && \

systemctl start firewalld && \

firewall-cmd --reload && \

firewall-cmd --list-all-zones

16.配置免密

(1)你免密登录别人

生成私钥

ssh-keygen -t rsa -P ""

私钥公钥位置:私钥文件名默认是id_rsa,详见/etc/ssh/ssh_config的IdentityFile

/root/.ssh/id_rsa

/root/.ssh/id_rsa.pub

分发公钥到要免密登录的机 默认端口22,-p指定端口

ssh-copy-id root@114.132.54.82 -p 22

或者:

将你的~/.ssh/id_rsa.pub的内容复制到目标主机的~/.ssh/authorized_keys最后一行

然后chmod 600 ~/.ssh/authorized_keys

远程发送命令测试

ssh root@114.132.54.82 -p 22 "df -h"

注意:

免密登录的服务器发生变化时(如重装系统),要清理旧纪录,重新把你的公钥发送到那台服务器的用户目录下.ssh/authorized_keys

ssh-keygen -f "/root/.ssh/known_hosts" -R "114.132.54.82"

(2)别人免密登录你

生成私钥

ssh-keygen -t ed25519 -f id_ed25519_root

-t:指定加密格式

-f:指定文件名

注意私钥id_ed25519_root,公钥id_ed25519_root.pub

生成的公钥.pub放入要免密登录的用户的目录的

cat id_ed25519_root.pub >> /root/.ssh/authorized_keys

私钥放入用户机(客户端),xshell选择密钥登录

17.linux卸载软件

yum list installed |grep grafana # 先查出来全名

yum remove grafana-enterprise.x86_64 # 卸载

18.测网速speedtest安装

先检查有没有安装python

yum install speedtest-cli -y

speedtest-cli

19.sed全局替换

sed -i 's/14.157.105.182/14.157.105.253/g' nginx.conf

sed -i 's/14.150.68.162/14.157.107.187 ;\n allow 120.230.63.144 ;\n allow 219.137.94.91/g' nginx.conf

20.iptables放通ip

service iptables status #iptables状态

vim /etc/sysconfig/iptables #修改配置

-A INPUT -s 211.96.23.33 -j ACCEPT

service iptables restart #重启防火墙

service iptables stop

cd /etc/sysconfig

source iptables-config

21.查看iptables规则

iptables -nL

22.检测网络是否可达

traceroute 132.96.39.51

23.修改hostname

hostnamectl set-hostname 主机名

查看静态主机名

hostnamectl status

24.查看端口占用情况

lsof -i:端口号

lsof -i -P

列出指定进程所打开的文件

lsof -c grafana

查看哪些进程占用了该文件

lsof grafana.db

25.修改环境变量

vim /etc/profile

立刻生效

source /etc/profile

26.查看linux版本

cat /proc/version

cat /etc/redhat-release

hostnamectl

uname -a

27.核查openssl支持的tls版本

openssl ciphers -v | awk '{print $2}' | sort | uniq

openssl s_client -help 2>&1 > /dev/null | egrep "\-(ssl|tls)[^a-z]"

28.nginx未开ssl模块

报错:the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:38

解决:

cd /opt/soft/nginx-1.22.1

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

29.查cpu内核

查看物理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

31.查看systemctl启动日志

journalctl -u minio.service

32.安装rz sz命令

yum -y install lrzsz

33.远程传输文件

本地-->远程

scp -P 22089 /data/nginx/conf/nginx.conf root@192.168.1.199:/data/

scp -P 22088 /data/riversec_prod/edr/install-linux.bin riversec_prod@10.15.0.175:/home/riversec_prod/

scp -P 22 install-linux.bin root@220.199.6.27:/root/

远程-->本地

scp -P 22 root@192.168.1.199:/etc/shadow /data/shadow199

因目标主机发生更改导致scp失败

vim /root/.ssh/known_hosts

删除留下的记录,重新scp一次

34.去除行尾^M

%s/\r//g

%s/;/;/g

%s/opt/data\/opt/g

35.挂载

mount /dev/vdb /data/

设置自动挂盘:

blkid #查磁盘uuid以及格式

/dev/sdb: UUID="d8ca36f3-f629-4ee4-9580-35847580f10c" BLOCK_SIZE="4096" TYPE="ext4"

/dev/mapper/test--vg--1-test--lv1: UUID="e5aa706e-0d11-4fee-a995-8118a63d84f6" BLOCK_SIZE="4096" TYPE="ext4"

/dev/mapper/ubuntu--vg-ubuntu--lv: UUID="8081a149-8bb3-4b7e-a6f9-f360e14a4342" BLOCK_SIZE="4096" TYPE="ext4"

vim /etc/fstab #配置自动挂盘

UUID=ff11909b-115c-4af4-ba82-dea470019199 /iMedical ext4 defaults 0 0

配置完刷新:systemctl daemon-reload

配置完挂载并检查:mount -a

主要,格式化为ext4格式,后面也要整为ext4格式

推荐的挂载选项组合:

UUID=xxx /test ext4 defaults,noatime,nodiratime,errors=remount-ro 0 0

注:

defaults 默认选项,相当于:rw,suid,dev,exec,auto,nouser,async

noatime 不更新文件的访问时间,提升I/O性能

nodiratime 不更新目录的访问时间,提升性能

errors=remount-ro 文件系统错误时以只读方式重新挂载

最后字段建议用0 0 非系统分区用0 0即可

查看

df -h /data

36.运行shell脚本发现'/r'command not found

:set ff=unix

37.格式化磁盘:

mkfs.ext4 /dev/vdb2

查看挂载盘

fdisk -l

查看所有盘状态

lsblk

把盘变成物理卷

pvcreate /dev/vdb

查看所有物理卷

pvscan

pvdisplay

删除物理卷 pvremove /dev/vdb

创建卷组-将物理盘vdc加入到卷组

vgcreate test-vg-1 /dev/vdc

查看卷组

vgdisplay test-vg-1

往卷组添加物理卷

vgextend test-vg-1 /dev/vdb

删除卷组

vgremove test-vg-1

激活所有卷组中的所有逻辑卷

vgchange -ay

创建逻辑卷

lvcreate -L 70G -n test-lv1 test-vg-1

查看

ls /dev/test-vg-1/test-lv1

格式化逻辑卷

mkfs.ext4 /dev/test-vg-1/test-lv1

挂载

mount /dev/test-vg-1/test-lv1 /data

拓展逻辑卷

lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv

或:

lvresize -L +20G -n /dev/test-vg-1/test-lv1

调整逻辑卷上挂载的的文件系统

resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

xfs_growfs /dev/mapper/ubuntu--vg-ubuntu--lv

注:

  1. lvextend命令用于扩展逻辑卷的大小。lvresize能用于拓展或者缩小

  2. -l +100%FREE选项告诉lvextend使用剩余的全部可用空间扩展逻辑卷。

  3. /dev/mapper/ubuntu--vg-ubuntu--lv指定要扩展的逻辑卷的路径

  4. resize2fs命令用于调整ext2、ext3或ext4文件系统的大小。

xfs_growfs适配不高,建议用resize2fs

删除逻辑卷

lvremove /dev/test-vg-1/test-lv1

38.数据库导出语句:

mysqldump -u zlzt -p gdltdb > zqzs.sql

39.抓包命令

tcpdump -i 网卡 tcp port 端口

抓包示例

在8.218.92.230长ping端口:

while true; do tcping 106.55.188.11 22; sleep 5; done

或:tcping -i 5 106.55.188.11 22

或长ping ping -i 5 106.55.188.11

在106.55.188.11抓包:

tcpdump -i any src host 8.218.92.230 and dst port 22

检测任何网卡对来自8.218.92.230对本机22端口的访问

tcpdump -i any host 43.139.4.46 and port 22

截获所有从center发向sp-1节点且经过网卡ens33的包

tcpdump -i ens33 src host center and dst sp-1

截获所有从5000端口收发的有关192.168.126.141

tcpdump -i ens33 tcp port 5000 and host 192.168.126.141

对本机的UDP端口进行监控

tcpdump udp port 123 -i ens33

新建用户

useradd zqzs

passwd zqzs

你可以把用户添加到wheel组,以使它可以使用su命令成为root用户。

添加方法为:usermod -G wheel zqzs

查看账号详情

id zqzs

配置只允许wheel用户组的账号能提权root

vim /etc/pam.d/su

auth required pam_wheel.so use_uid

编辑sshd配置文件(vim /etc/ssh/sshd_config)。

在文件末尾添加以下行:

AllowUsers zqzs

重启sshd

systemctl restart sshd

配置成不可修改

chattr -i /etc/gshadow

chattr -i /etc/passwd

chattr -i /etc/group

chattr -i /etc/shadow

配置成仅不可删除

chattr +a /etc/shadow

低权账号切换root失败,查看日志

tailf -n 20 /var/log/secure

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

mysql导出数据库命令

mysqldump -u root -p --all-databases > all_databases.sql

vim小技巧:

撤回:u

恢复撤回:ctrl+r

替换:r

复制:yy

黏贴:p

多行输入:

ctrl+v,然后通过方向键选中多行,输入大写的i,然后输入你想输入的,然后按Esc键,完成多行输入。

多行删除:

ctrl+v,然后通过方向键选中多行,输入d,完成删除

粘贴模式,用于复制大量内容:

:set paste 然后再进入编辑模式粘贴

查找nghttp2包下载路径

repoquery --location nghttp2

centos7.9配置yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

配置yum源后

yum clean all

yum makecache

yum repolist

安装epel源--第三方源包,先yum install主要是为了注册epel公钥

yum install epel-release -y

配置阿里云epel源

curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

rm -f epel-testing.repo

刷新配置文件

source <配置文件全名>

查看所有的开机自启动服务

chkconfig --list

chkconfig --del service_name #删除开机自启动的服务

chkconfig --add service_name #添加服务开机自启动

ip route add 10.236.26.33/32 via 10.119.155.1 dev eth2

ubuntu20.04安装jdk8

apt-get install openjdk-8-jdk -y

service服务配置目录

systemctl 服务文件通常在 /etc/systemd/system/ 或 /usr/lib/systemd/system/ 目录下

nmap扫描器

扫描域名:nmap --script http-headers www.fengyi.jie

扫描主机:nmap -sV 10.0.8.2 10.0.8.3

主动扫描:nmap -A 10.0.8.2

linux清理内存的cache

1.删除不必要的进程

2.清理缓存文件

清理页面缓存(page cache):

sync; echo 1 > /proc/sys/vm/drop_caches

清理dentries和inodes:

sync; echo 2 > /proc/sys/vm/drop_caches

清理页面缓存、dentries和inodes:

sync; echo 3 > /proc/sys/vm/drop_caches

rpm使用

安装

rpm -ivh Nessus-10.7.2-el7.x86_64.rpm

卸载

rpm -e Nessus-10.7.2-el7.x86_64

ssh登录缓慢

  1. 禁用DNS解析

SSH在连接时会尝试反向解析客户端的IP地址。如果DNS设置不合理,或者DNS服务响应缓慢,这都可能造成登录延迟。我们可以在SSHD配置文件

(通常在 /etc/ssh/sshd_config)中将 UseDNS 设置为 no,以禁用这个功能。

vim /etc/ssh/sshd_config

UseDNS no

GSSAPIAuthentication no

  1. 关闭GSSAPI认证

如果你的网络中没有使用Kerberos认证,那么GSSAPI认证可能会造成不必要的延迟。我们可以在SSHD配置文件中将 GSSAPIAuthentication 设置为 no,关闭这个功能。

整个linux都很慢

使用命令查看哪些进程占用的内存最多

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -n 10

查看读写io

iotop

ctrl+a移动到行首

ctrl+e移动到行尾

将程序进程交给systemctl管理

查看firewalld的service文件,以及获取本系统的service仓库路径

systemctl cat firewalld

在service仓库下新增该程序的service文件

以prometheus为例,主要,实际操作时把注释去掉

vim prometheus.service

Unit

Description=Prometheus service # 描述

After=network-online.target # 在network运行之后才运行这个

Service

Type=simple # 服务类型 - simple表示该服务将被视为在ExecStart命令启动后立即运行。

ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --log.level=warn --storage.tsdb.path=/usr/local/prometheus/data/ # 当服务启动时要执行的命令,这里指定了Prometheus的可执行文件路径、配置文件、日志级别和存储路径。

Restart=on-failure # 如果服务失败,自动重启

ExecStop=/bin/kill -9 $MAINPID # stop时执行的

Install

WantedBy=multi-user.target # 指示当系统达到multi-user.target(多用户目标,即非图形化的多用户运行级别)时,该服务应该被启动。

重载配置

systemctl daemon-reload

检查状态

systemctl status prometheus

查看日志

journalctl -u prometheus.service

free -h解释

free:未被使用的内存

available:可被使用,可分配的内存,available=free+cache+buffer

cache:文件系统缓存

buffer:块缓存

shared:多个进程共享的内存

SReclaimable:可回收的内存,被需要时可释放,但不算可分配内存

负载:

影响负载值高低的因素:CPU核心数量,应用程序性能,io操作,系统资源(内存/磁盘)限制

判断高低标准,如果超过cpu核心数则为过高,如2核cpu,5分钟负载数值超过2

命令:top 在第一行后面可查看,分别是1分钟负载,5分钟负载,15分钟负载

sponge命令

主要功能是将标准输入的数据保存到一个临时文件中,等待所有输入都完成后,再将数据输出到标准输出

常用于处理管道中的数据,尤其是需要对大文件进行处理时,可以避免一次性读取整个文件导致的内存问题

而如果输入数据量较小,或者内存资源相对充足,那么使用 sponge 是一个方便且可靠的方式来处理输出内容,确保数据的完整性。

sh test.sh | sponge tcpsockets.prom

sponge命令在moreutils包,moreutils在epel-release

yum install moreutils -y

已安装epel-release,但是安装它下面的源包缺一直报找不到

办法:

yum remove -y epel-release

yum install -y epel-release

查看硬件信息

dmesg -T

查看系统日志

/var/log/messages

查看ssh连接方面的日志

/var/log/secure

opencloudos 安装mysql

yum -y install mysql-server

然后运行安全脚本

mysql_secure_installation

忽略ssl登录

mysql --ssl=false -h 192.168.1.188 -u root -p

查看文件的第一列

awk '{print $1}' /etc/hosts

ubuntu 配置不检测第1个网口是否成功启动

vim /etc/netplan/00-installer-config.yaml

enp1s0:

dhcp4: true

optional: true # 这表示该接口是可选的,如果未连接,系统将继续启动而不会等待该接口

swap

当内存使用过高时,系统会开始使用swap内存

但当内存使用量回落时,swap不会完全释放,需要手动

手动释放swap方法

同步,内存文件回刷给真正内存

sync

关闭swap,回收swap空间

swapoff -a

开启swap

swapon -a

ubuntu改默认编辑器

select-editor

选择--vim基础版本

/usr/bin/vim.basic

校准时间:

timedatectl set-timezone Asia/Shanghai

设置时间:

timedatectl set-time '2025-08-12 09:40:56'

yml文件校验器

yamllint alertmanager.yml

临时传送

python3 -m http.server 82

当前目录下的文件,其他主机都可以用wget的方式获取,建议内网获取,公网速度一般

配置pip国内镜像源

vim /etc/pip.conf

global

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

install

trusted-host = pypi.tuna.tsinghua.edu.cn

pip依赖告警:

Running pip as the 'root' user can result in broken permissions

分析:使用root用户使用pip,看你会破坏原有的环境依赖,从而影响到其他项目

解决办法:

1.用普通用户执行

2.创建虚拟环境,在里面安装依赖,各项目互不干扰

pip install virtualenv

virtualenv venv

激活虚拟环境:只有激活中才能使用虚拟环境的依赖,退出后则使用系统全局依赖

source venv/bin/activate

在将项目迁移到新的环境或开发机上时,可以使用 requirements.txt 文件来安装所有依赖

pip freeze > requirements.txt

退出:

deactivate

新环境中:使用 pip 安装 requirements.txt 中的所有依赖,方便迁移

pip install -r requirements.txt

监控磁盘异常

apt install sysstat -y

iostat -x 1

注意查看wait的数据:await,r_await,w_await

因为当磁盘出现坏道时,延迟会明显增高

查看登录服务器的ip

lastb -s -1d | awk '{ip[$3]++} END {for (i in ip) print ip[i], i}'| sort -n -k1,1

basename 只输出文件名,去除目录路径

basename /root/fengyi-ip.txt

find / -name "nginx.*" -exec basename {} \;

监听5000端口并等待连接

nc -l 5000

-v:显示详情;

-u:指定使用udp协议;

-t:指定使用tcp协议,默认值;

-w:连接超时时间;

-z:在作为客户端连接时,不发送任何数据;

使用nc完成文件的传输:

启动nc服务,监听5000端口,将接收到的数据全部写入test.txt中

nc -l 5000 > test.txt

在客户端上使用nc向节点的5000端口写入数据,从而实现文本传输:

nc 192.168.126.140 5000 < test.txt

多命令或,前面的命令执行失败才会执行后面的命令

grep "hello" test.txt || echo "hello" >> test.txt

多命令与,前面的命令执行成功才会执行后面的命令

grep "hello" test.txt || echo "hello" >> test.txt

查ip属于哪个城市

curl ipinfo.io/43.134.59.39

Linux常见日志文件:

/var/log/syslog:记录系统的通用日志信息,适用于大多数Linux发行版。

/var/log/messages:记录系统的通用日志信息,通常在Red Hat系的发行版中使用。

/var/log/auth.log:记录身份验证相关的日志信息,如登录尝试、sudo命令使用等。

/var/log/kern.log:记录内核相关的日志信息。

/var/log/dmesg:记录系统启动时的内核消息。

/var/log/boot.log:记录系统启动过程中的消息。

/var/log/cron.log:记录定时任务相关的日志信息。

/var/log/mail.log:记录邮件系统相关的日志信息。

/var/log/apache2/access.log和/var/log/apache2/error.log:记录Apache服务器的访问日志和错误日志。

/var/log/nginx/access.log和/var/log/nginx/error.log:记录Nginx服务器的访问日志和错误日志。

为当前用户添加环境变量:

编辑当前用户的 .bashrc 文件:

vim ~/.bashrc

在文件的末尾添加以下行:

export PATH=$PATH:/usr/sbin

使配置生效

source ~/.bashrc

取消export配置的变量

unset PATH 如:(unset http_proxy)

查看(二进制文件/命令)来自哪个包

rpm -qf `which vim`

快捷键:

ctrl +l 清屏

ctrl +u 删除整行命令

ctrl +w 删除一小段命令

ctrl +a 光标移动到命令头

ctrl +e 光标移动到命令尾

pycharm安装依赖报错时:

删除现有虚拟环境目录(根据实际路径调整)

del /s/q E:\python-workplace\websocket-server\venv

重新创建虚拟环境

python -m venv D:\python_project\pythonProject\venv

激活虚拟环境

D:\python_project\pythonProject\venv\Scripts\activate

查看系统运行时间

uptime

查看系统负载,登录系统的用户和持续登录时间

w

查看系统shell类型

echo $SHELL # centos使用的是bash,kali使用的是zsh,zsh比bash更强,且兼容bash

判断上一条命令是否执行成功

echo $?

查看一个时间段的日志:

sed -n '/时间点1/,/时间点2/p' 日志文件

sed -n '/2025\/02\/28 15:58:32/,/2025\/03\/13 18:33:24/p' error.log

sed -n '/2025\/02\/28/,/2025\/03\/13/p' error.log

升级openssh版本

yum update -y

yum update openssh -y

systemctl restart sshd

回退:

yum history list openssh 找到要回退的版本的id

yum history undo id

查看公网ip

curl ip.sb

curl 测试post请求

curl http://www.example.com/api -d "参数"

get:

curl http://www.example.com/api\&参数

ssh登录很慢

vim /etc/ssh/sshd_config

UseDNS no

GSSAPIAuthentication no

systemctl restart sshd

定时关机:马上关机,然后3600秒后开机

/usr/sbin/rtcwake -m off -s 3600

00 04 */30 * * nohup /usr/sbin/rtcwake -m off -s 3600 &

压测:

yum -y install httpd-tools

模拟10000次请求,并发量100

ab -n 10000 -c 100 http://192.168.1.108/

-n: 在测试会话中所执行的请求个数。默认时,仅执行一个请求。

-c: 一次产生的请求个数。默认是一次一个。

忘记root密码,去本机重启进入boot选择模式,设置单用户模式single。

注:centos6及以下和centos7以上的进入single模式不一样,且centos7进入需要改可写状态,且要关闭selinux

无法卸载挂载盘

原因:有进程占用

方案一:杀死占用进程

fuser -vm /dev/vda1

-v:详细模式,显示指定文件进程信息。

-m:指定挂载点或设备文件。会寻找挂载点,然后以挂载点的范畴显示

-k:杀死占用文件的进程(慎用!)。

lsof /dev/vda1

方案二:强行卸载

umount -f

inode号:

定义:每个文件或目录在创建时会被分配一个唯一的 inode 号,用于记录文件的元信息(如权限、大小、所有者等),但 ​​不包含文件名​​。

文件名通过目录项(directory entry)关联到 inode 号,用户通过文件名访问文件时,系统会先找到对应的 inode,再通过 inode 访问实际数据。

唯一性​​:每个 inode 在同一个文件系统内唯一,但不同文件系统可能有重复的 inode 号。

​​与文件名分离​​:重命名或移动文件时,inode 号不变;删除文件时,inode 会被释放(硬链接计数归零后)。

​​空间限制​​:文件系统的 inode 总数是固定的(格式化时决定),用尽后即使磁盘有空间也无法创建新文件(可通过 df -i查看 inode 使用情况)

ls -i 文件名 # 显示文件名和 inode 号

stat 文件名 # 显示文件的详细 inode 信息

df -i # 显示各文件系统的 inode 使用情况

nginx优化

user nginx nginx; # 用户为nginx,组为nginx

在http块中添加或修改

http {

server_tokens off; # 关闭显示Nginx版本号

client_max_body_size 100M; # 允许客户端上传的最大文件大小,默认为1m,可根据需要调整,在http、server或location块中调整

limit_req_zone $binary_remote_addr zone=reqperip:10m rate=10r/s; # 定义限制区域,键为客户端IP,分配10m内存空间,允许每秒10个请求

limit_req_zone $server_name zone=reqperserver:10m rate=100r/s; # 按服务器名限制总速率

limit_conn_zone $binary_remote_addr zone=connperip:10m; # 定义限制区域,键为客户端IP,分配10m内存空间

limit_conn_zone $server_name zone=connperserver:10m; # 按服务器名限制总连接数

gzip on; # 开启gzip压缩

gzip_vary on; # 响应头中添加Vary: Accept-Encoding,告知代理服务器缓存多种版本的资源

gzip_min_length 1k; # 只压缩大于1KB的文件

gzip_comp_level 6; # 压缩级别(1-9),6是常用级别,权衡压缩比和CPU开销

gzip_buffers 4 16k; # 压缩缓冲区大小

gzip_proxied any; # 对所有代理请求都启用压缩

gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss image/svg+xml; # 指定压缩的文件类型

在server或location块中应用

server {

listen 443 ssl http2; # 监听443端口,启用SSL和HTTP/2

server_name yourdomain.com;

ssl_certificate /path/to/your/server.crt; # SSL证书文件

ssl_certificate_key /path/to/your/server.key; # SSL私钥文件

ssl_protocols TLSv1.2 TLSv1.3; # 启用安全协议版本,禁用旧的不安全协议

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256; # 指定加密套件,推荐使用强加密套件

ssl_prefer_server_ciphers on; # 优先使用服务器端的加密套件

ssl_session_cache shared:SSL:10m; # 配置SSL会话缓存,提高性能

ssl_session_timeout 10m; # SSL会话超时时间

location / {

limit_req zone=reqperip burst=20 nodelay; # 应用限制,burst是突发请求队列大小,nodelay表示对突发请求也立即处理但可能返回503

limit_conn connperip 10; # 限制每个IP同时最多10个连接

limit_conn connperserver 1000; # 限制该服务器总连接数不超过1000

...

}

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { # 匹配常见静态文件

valid_referers none blocked *.yourdomain.com yourdomain.com; # 定义有效的来源域名,none表示直接访问,blocked指没有referer信息或值被防火墙修改

if ($invalid_referer) { # 如果来源不在上述列表

return 403; # 返回403禁止访问

或者重写到一张警告图片 rewrite ^ /images/forbidden.png;

}

root /path/to/your/static/files;

expires 30d; # 设置浏览器缓存时间

}

还可以根据需求配置其他location,比如对特定目录的访问限制

location /admin/ {

allow 192.168.1.0/24; # 只允许特定IP段访问

deny all; # 拒绝其他所有

auth_basic "Restricted Area"; # 基础认证

auth_basic_user_file /etc/nginx/conf.d/htpasswd;

}

}

...

}

对未格式化​​的块设备(如 /dev/sdb1)-创建文件系统(格式化)

mke2fs

如:

mke2fs -t ext4 /dev/sdb1

对​​已创建​​但可能出问题的文件系统检查并修复

fsck

如:

fsck -y /dev/sdb1

如何查看系统的资源限制

ulimit -a

查找大文件

find /data -size +524M

找到修改30天以上的文件并删除

find 目录 -ctime +30

#c:表示属性被修改过

#a:表示文件被访问过

#m:表示内容被修改过

#time:按天查找

#min:按分钟查找

find ./ -name application-local.yaml -exec grep -l 'jdbc:mysql://127.0.0.1:3306' {} +

​1.​{} + 的作用​​:find会先找出当前目录及其子目录下所有名为 application-local.yaml的文件,然后将这些文件的路径​​作为一个列表​​,一次性传递给 grep命令。

2.-exec ... {} + 的作用​​:对 find找到的每个文件执行后续命令(grep)。

3.grep -l 'jdbc:mysql://127.0.0.1:3306' 的作用​​:在文件中搜索字符串 jdbc:mysql://127.0.0.1:3306,并只打印​​包含该字符串的文件名​​。

4.-l(小写 L):仅输出匹配的文件名,而非具体匹配行。

find ./ -name application-local.yaml -print0 | xargs -0 sed -i 's|jdbc:mysql://127.0.0.1:3306|jdbc:mysql://10.0.8.2:3306|g'

​​-print0​​:​​关键选项​​ - 用空字符(null character \0)而不是换行符作为文件路径的分隔符

​​为什么需要 -print0?​​

默认情况下,find用换行符分隔文件名

但如果文件名包含空格、换行等特殊字符,会导致解析错误

-print0使用空字符分隔,可以安全处理任何特殊字符的文件名

xargs -0​​

​​xargs​​:将标准输入的数据转换为后面命令的参数

​​-0​​:与 find -print0配对使用,告诉 xargs用空字符作为输入分隔符

​​xargs的工作机制​​:

读取 find传来的文件路径列表

将这些路径作为参数传递给 sed命令

自动处理参数数量,避免"参数列表过长"的错误

找到删除的文件对应的进程号

lsof | grep deleted

docker缩容

更新运行中容器的CPU限制

docker update --cpus 1 <container_name>

更新运行中容器的内存限制

docker update --memory 512m <container_name>

maven 构建服务:

mvn clean package -Dmaven.test.skip=true

在项目下查看项目所有的tag

git tag

这里使用指定版本的tag:

git checkout v2.1.0\(jdk17/21\)

查看服务器目前多少打开了多少个终端窗口

tty # /dev/pts/1 1表示第二个,即使0终端已经关闭了,他还是1

echo 你好啊 > /dev/pts/2 # 将 你好啊 发送给第三个终端,能发送证明目标终端窗口正在使用

时间同步

ntpdate ntp.aliyun.com # 同步阿里云的ntp时间服务器

date "+%F %T" # 查看时间 %F日期,%T时间。结果:2025-10-30 23:11:30

显示程序/进程的pid

pgrep top # 查找top进程的pid

yum查找命令工具所在包

yum provides */ifconfig

时间同步

1. 安装chrony时间同步服务(比ntpdate更稳定,开机自启,自动同步)

yum install -y chrony

2. 启动chronyd服务+设置开机自启

systemctl start chronyd && systemctl enable chronyd

3. 强制同步一次时间

chronyc -a makestep

4. 验证同步状态(显示同步成功即可)

chronyc tracking

静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33

BOOTPROTO=static

ONBOOT=yes #/不配yes开机不会开启网卡

IPADDR=192.168.10.129

NETMASK=255.255.255.0

GATEWAY=192.168.10.2

DNS1=114.114.114.114

DNS2=8.8.8.8

相关推荐
handler012 小时前
Linux 进程探索:从 PCB 管理到 fork() 的写时拷贝
linux·c语言·c++·笔记·学习
solihawk2 小时前
服务器内存被谁“偷”走了?
服务器·数据库
域中四大2 小时前
rk3568中修改波特率
linux·运维
互联网推荐官2 小时前
大模型应用开发的上下文工程与推理链路深度拆解
大数据·运维·人工智能
风曦Kisaki2 小时前
# Linux Shell 编程入门 Day01:Shell 基础认知、脚本编写规范、变量四大类型、数值运算
linux·运维·chrome
德彪稳坐倒骑驴2 小时前
SQL连续登录问题
服务器·数据库·sql
云智慧AIOps社区2 小时前
云智慧亮相第二十八届智能体驱动的GOPS全球运维大会2026 · 深圳站!以运维智能体 Castrel AI (SRE Agent)保障系统稳定可靠!
运维·人工智能·ai agent·运维自动化·sre 智能体
校羽干2 小时前
ubuntu22.04 安装卸载更新 ollama
运维·服务器
大强同学3 小时前
Obsidian链接收藏自动化
运维·自动化