linux 常用命令总结
netstst 命令详解
[root@study~]# netstat -[atunlp]
选项与参数:
-a : 将目前系统上所有的联机、监听、Socket数据都列出来
-t : 列出 tcp 网络封包的数据
-u : 列出从 udp 网络封包的数据
-n : 不以进程的服务名称,以端口号(port number)来显示
-l :列出目前正在网络监听的服务;
-p :列出该网络服务的进程 PID
强制不安装依赖安装软件
rpm -ivh --force --nodeps
系统任务
将当前任务暂停
ctrl + z
查看后台所有任务
jobs -l
将后台任务拿到前台来处理
fg jobnumber
CHATTR(配置文件隐藏属性)
chattr [+-=][ASacdistu] 文件或目录名称netstat
chattr +i xxx 不能被删除、改名、设定连结也无法写入或新增数据
chattr +a xxx 让某个文件只能往里面追加内容,不能删除nf
lsattr(显示文件隐藏属性)hos
选项与参数:
-a :将隐藏文件的属性也秀出来;
-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;ti
-R :连同子目录的数据也一并列出来!
ls 返回绝对路径
ls -d /a/b/c/*
GODOC
godoc -http=:6060 本地运行goDoc
FIND
查找文件
find / -name ""hg
find <指定目录> <指定条件> <指定动作>
远程执行命令
ssh user@host "cd /var/;ls"
环境变量不生效
ssh user@host "source /etc/profile;cd /var/;ls"
执行带有参数的脚本
ssh root@192.168.9..9 /home/centos/rafte2e/test.sh helloworld
一行for循环
list="";for i in ls -al
; do list="$list $i"; done; echo $list
替换时区文件
sudo timedatectl set-timezone Asia/Shanghai
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
创建目录
mkdir {src,pkg,bin} 创建多个同级目录
mkdir -p /usr/gopath
kill进程名
kill -9 $(pidof 进程名关键字)
SCP
- 1、从服务器下载文件
scp username@servername:/path/filename /tmp/local_destination
- 2、上传本地文件到服务器
scp /path/local_filename username@servername:/path
- 3、从服务器下载整个目录
scp -r username@servername:remote_dir/ /tmp/local_dir
- 4、上传目录到服务器
scp -r /tmp/local_dir username@servername:remote_dir
查进程
ps aux | grep xxx 关键字
MYSQL
mysql -u yunphant -p
linux 固定IP
进入 /etc/sysconfig/network-scipts 文件夹下
vim ifcfg-eno1
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eno1
UUID=7654bafa-235a-47fa-ac0e-fb91075fd218
DEVICE=eno1
ONBOOT=yes
IPADDR="192.168.9.250"
NETMASK=255.255.255.0
GATEWAY="192.168.9.1"
PREFIX="24"
nohup
nohup ......... & 在后台运行进程
2>&1 重定向错误输出到标准输出
/dev/null 或者 > filename 重定向标准输出到空设备(忽略输出)或到文件
DNS
119.29.105.234
linux系统信息查看
df -hl 查看内存使用情况
cat /etc/os-release 查看系统详情
/etc/-release 此处的代表发行版名称
/etc/issue 也可看到发行版名称
cat /proc/version 查看内核版本命令
cat /etc/redhat-release 查看安装的系统版本
uname -a # 查看内核/操作系统/CPU信息
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备
lsmod # 列出加载的内核模块
env # 查看环境变量
资源
free -m # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh <目录名> # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载
磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息
进程
ps -ef # 查看所有进程
top # 实时显示进程状态
用户
w # 查看活动用户
id <用户名> # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务
服务
chkconfig --list # 列出所有系统服务
chkconfig --list | grep on # 列出所有启动的系统服务
程序
rpm -qa # 查看所有安装的软件包
ls的时间格式
ls -l --time-style '+%Y/%m/%d %H:%M:%S'
ls -l --time-style=full
更改文件权限
chown -R username file
查询大文件
find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr
查询当前目录的大文件
du -h . --max-depth=1
关机
shutdown -h now
halt
重启
shutdown -r now
reboot
AWK拼接
awk '{print $1,$2"核"$3"G"}'
awk 'NR=2{print $1}' 打印第2行
awk '{print $NF}' 取最后一列
1、打印文件的第一列(域) : awk '{print $1}' filename
2、打印文件的前两列(域) : awk '{print $1,$2}' filename
3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename
4、打印文本文件的总行数 : awk 'END{print NR}' filename
5、打印文本第一行 :awk 'NR==1{print}' filename
6、打印文本第二行第一列 :sed -n "2, 1p" filename | awk 'print $1'
nfs挂载
- centos
yum install rpcbind nfs-utils
- Ubuntu 14.04
apt-get install nfs-kernel-server rpcbind
echo " /root/nfs_data *(rw,sync,no_root_squash) " > /etc/exports
sudo service rpcbind restart && sudo service nfs restart
挂载nfs需要用到的端口
nfs tcp 2049 这个很明显到处都是
sunrpc tcp 111 这个很明显到处都是
sunrpc udp 111 其中这个很难发现,仔细排查才看到
acp-proto udp 4046 其中仔细看udp的会找到
nfs 依赖
keyutils libnfsidmap2 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib libtirpc1 nfs-common nfs-kernel-server python python-minimal python2.7 python2.7-minimal rpcbind
-t 选项用于指定文件系统的类型为nfs。
mount -t nfs 192.168.9.26:/home/ubuntu/nfs_data
exports -a
showmount -e 127.0.0.1
启动rpc服务:
sudo systemctl restart rpcbind.service nfs.service
启动nfs服务:
systemctl restart nfs.service
设置rpc自己自启动:
systemctl enable rpcbind.service
设置rpc自己自启动 :
systemctl enable nfs.service
systemctl nfs-kernel-server restart
- 查看rpc状态:active
systemctl status rpcbind.service
- 查看nfs状态:active
systemctl status nfs.service
- 安装nfs
yum install -y nfs-utils
- nfs卸载
umount /root/remote_dir
修改hostname
hostnamectl set-hostname Linuxidc
vim /etc/hostname
vim /etc/hosts
service systemd-hostnamed restart
k8s中,hostname修改之后,重启 rancher/agent:v1.2.6 可以生效
ssh证书生成
ssh-keygen -t rsa -C "root@aliyun.com"
chmod 755 ~/.ssh/
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 644 ~/.ssh/known_hosts
sudo chmod 755 /home/vnt
ssh秘钥登录
配置服务器上/etc/ssh/sshd_config文件,修改以下配置项
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
sed 替换字符
sed -i "s/$old/$new/g" config.yaml 替换变量 用双引号
sed -i 's/old/new/g' config.yaml 替换字符 用单引号
查看某个程序的资源占用情况
pidstat -r -u -h -C masami
时间格式化输出
-
[root@root ~]# date "+%Y-%m-%d"
-
2013-02-19
-
[root@root ~]# date "+%H:%M:%S"
-
13:13:59
-
[root@root ~]# date "+%Y-%m-%d %H:%M:%S"
-
2013-02-19 13:14:19
-
[root@root ~]# date "+%Y_%m_%d %H:%M:%S"
-
2013_02_19 13:14:58
-
[root@root ~]# date -d today
-
Tue Feb 19 13:10:38 CST 2013
-
[root@root ~]# date -d now
-
Tue Feb 19 13:10:43 CST 2013
-
[root@root ~]# date -d tomorrow
-
Wed Feb 20 13:11:06 CST 2013
-
[root@root ~]# date -d yesterday
-
Mon Feb 18 13:11:58 CST 2013
查看流量
dstat -nf
bad ELF interpreter恢复
LD_LIBRARY_PATH=/lib64.bak /lib64.bak/ld-linux-x86-64.so.2 /bin/mv /lib64.bak/ /lib64
测试硬盘IO
dd if=/dev/zero of=out.file bs=512K count=2048 conv=fdatasync
不实际占用block
dd if=/dev/zero of=test bs=1M count=0 seek=100000
创建的文件在文件系统中的显示大小为100000MB,但是并不实际占用block
随机生成1百万个1K的文件
seq 1000000 | xargs -i dd if=/dev/zero of={}.dat bs=1024 count=1
跨服务器执行脚本
ssh -p $port $user@$p 'cmd'
关闭防火墙
sudo yum -y install iptables-services
service iptables stop
service docker restart
禁止Linux系统You have new mail
echo “unset MAILCHECK” >> /etc/profile
source /etc/profile
nc 常用方法
- 1、 传文件
nc -l -p 8210 > demo.txt 接收方
nc dest_ip 8210 < demo.txt 发送方
- 2、端口扫描
nc -v -w 2 192.168.2.34 -z 20000-30000
- 3、聊天
nc -l 3232 ip(1.1.1.1)
nc 1.1.1.1 3232
在工程目录中查找所有main函数
grep "func main" * -r -n --include=*.go > func_main.txt
查看程序内存占用
yum install sysstat
pidstat -r -u -h -C masami |awk 'NR==4{print "%cpu="$7,"%mem="$13" masami"}'
docker容器控制网络流量
tc只是控制到达自己的网络包,并不能控制自己发出的网络包,而我本地wget时,无法设置进程的net_cls,所以可以设置默认的类别处理
kbps 千字节/秒
mbps 兆字节/秒
kbit KBits/秒
mbit MBits/秒
bps或者一个无单位数字 字节数/秒
这样就可以这样做:
- 删除原有规则,并创建队列,并设置默认用类别2
tc qdisc del dev veth5528eed root
tc qd add dev veth5528eed root handle 1: htb default 2
- 增加类别,两个类别分别为1:1,1:2,并为类别2设置队列
tc class add dev veth5528eed parent 1: classid 1:1 htb rate 10mbit
tc class add dev veth5528eed parent 1:1 classid 1:2 htb rate 1mbit
tc qd add dev veth5528eed parent 1:2 handle 20: fq_codel
- 设置filter,其实这一步我们测试目前并不需要
tc filter add dev veth5528eed protocol ip parent 1: prio 1 handle 1: cgroup
解决磁盘报错Read-only file system
sudo fsck.ext4 -f /dev/sda1
tar批量解压
ls *.tar.gz | xargs -n1 tar xzvf
查看当前服务器端口使用情况
sudo netstat -anp |grep tcp
top资源查看
P 按照CPU占比排序
M 按照内存占比排序
释放缓存
使用sync命令以确保文件系统的完整性,sync 命令运行 sync 子例程,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件
sync
echo 3 > /proc/sys/vm/drop_caches
说明:
1>. /proc是一个虚拟文件系统,我们可以通过对它的读写操作作为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。也就是说我们可以通过调整/proc/sys/vm/drop_caches来释放内存。
2>. 关于drop_caches的官方说明如下:
Writing to this file causes the kernel to drop clean caches,dentries and inodes from memory, causing that memory to becomefree.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.
3>. Linux内核会将它最近访问过的文件页面缓存在内存中一段时间,这个文件缓存被称为pagecache。
解析证书命令
openssl x509 -in 证书.pem -text -noout
挂载新硬盘
fdisk /dev/sda1
n 进行分区
p 主分区、 e 逻辑分区
1 第一个主分区
1 起始磁盘数
w 写入分区
fdisk -l 查看新分区的名称
mkfs -t ext3 -c /dev/sdb1 进行格式化
mkdir /dev2
mount /dev/sdb1 /dev2
查看程序运行时间
lstart 启动时间
etime 运行时间
ps -eo pid,lstart,etime,cmd | grep peer
yum离线安装rpm包
CentOS利用yum下载好rpm包,并离线安装
1、联网安装好rpm包,并将下载好的包备好
yum install --downloadonly --downloaddir=/home/samba samba
其中samba 是要用yum安装的安装包,/home/samba是要存放下载的yum安装包及其依赖包的保存路径
2、离线的机器上,在rpm所在的文件夹内,执行以下脚本
rpm -Uvh --force --nodeps *.rpm
iptables转发端口
清除规则
sudo iptables -F && sudo iptables -X && sudo iptables -Z && sudo iptables -S
通过 192.168.9.11 的 6666 端口访问 192.168.9.12 的 7777 端口。
sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -s 192.168.9.12 -j ACCEPT
iptables -A FORWARD -d 192.168.9.12 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 6666 -d 192.168.9.11 -j DNAT --to-destination 192.168.9.12:7777
iptables -t nat -A POSTROUTING -p tcp -d 192.168.9.12 --dport 7777 -j SNAT --to-source 192.168.9.11
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」