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

时间格式化输出

  1. [root@root ~]# date "+%Y-%m-%d"

  2. 2013-02-19

  3. [root@root ~]# date "+%H:%M:%S"

  4. 13:13:59

  5. [root@root ~]# date "+%Y-%m-%d %H:%M:%S"

  6. 2013-02-19 13:14:19

  7. [root@root ~]# date "+%Y_%m_%d %H:%M:%S"

  8. 2013_02_19 13:14:58

  9. [root@root ~]# date -d today

  10. Tue Feb 19 13:10:38 CST 2013

  11. [root@root ~]# date -d now

  12. Tue Feb 19 13:10:43 CST 2013

  13. [root@root ~]# date -d tomorrow

  14. Wed Feb 20 13:11:06 CST 2013

  15. [root@root ~]# date -d yesterday

  16. 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或者一个无单位数字 字节数/秒

这样就可以这样做:

  1. 删除原有规则,并创建队列,并设置默认用类别2

tc qdisc del dev veth5528eed root

tc qd add dev veth5528eed root handle 1: htb default 2

  1. 增加类别,两个类别分别为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

  1. 设置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

posted @   zooqkl  阅读(150)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示