Linux最常见的命令

操作系统版本

# 简要
uname -a
uname -r
cat /proc/version

# 这个结果很全面
apt install -y lsb && lsb_release -a

CPU

# 查看物理cpu个数
grep 'physical id' /proc/cpuinfo | sort -u | wc -l

# 查看核心数量 – CPU cores
grep 'core id' /proc/cpuinfo | sort -u | wc -l

# 查看线程总数 – 也就是逻辑CPU
grep 'processor' /proc/cpuinfo | sort -u | wc -l

# 限制某个进程的 CPU 使用
cpulimit --pid 17918 --limit 80 --background

# CPU占用最多的前10个进程
ps auxw | head -1; ps auxw | sort -rn -k3 | head -10 

网络

# 查看网络端口的使用情况
lsof -i:50001-50010
# 当前iP
curl ip.sb # 更快
curl ip.3322.net # 要慢
ip addr
# 获取dns配置
cat /etc/resolv.conf 

硬盘或文件

find / -name caddy
find / -name ".*jpg"

# 当前目录下(包括子目录)寻找所有大于 200M 的文件
find . -type f -size +200M

# 只找第二层子目录的文件
find . -maxdepth 2 -mindepth 2 
find . -name '*.gz' -exec tar -zxvf {} \;  

# 查找文件排序
# -h human-readable
# -S show hidden files
# -d2 2 levels
# -rh reverse sort & human-readable
du -hS -d1 | sort -rh

内存

# 当前的空闲内存
free -m
# 获取内存相关的信息
cat /proc/meminfo
dmidecode --type memory

# 查看内存占用最多的10个进程
ps auxw | head -1; ps auxw | sort -rn -k4 | head -10

加虚拟内存SWAP

# 创建一个512M的数据类型文件
cd /
dd if=/dev/zero of=swapfile bs=1024 count=1046576
# 把文件变成swap
mkswap swapfile
## 设置该文件仅供所有者读和写
chmod 0600 swapfile 
# 开启
swapon swapfile
# 关闭
swapoff swapfile
# 查看,这两行相同
swapon -s # 等同于 --show
cat /proc/swaps
# 查看swap分区活动状态
free -h 

# 变成自动加载,打开配置文件
vi /etc/fstab
# 在最后加上这行
/swapfile     swap     swap     defaults     0     0
### 如果合在一起用这条, 2G = 2097152
cd / && dd if=/dev/zero of=swapfile bs=1024 count=1046576 && chmod 0600 swapfile && mkswap swapfile && swapon swapfile && free -h
# 确认无误的话,设置开机自启
echo '/swapfile     swap     swap     defaults     0     0' >> /etc/fstab && tail /etc/fstab

Hostname

# 临时修改当前的主机名
hostname new_name
# 永久性修改主机名 cloud.cfg取决于有没有按照cloud-init
if [-e /etc/cloud/cloud.cfg]; then sed -i "s/^preserve_hostname: false.*/preserve_hostname: true/g" /etc/cloud/cloud.cfg; fi
hostnamectl set-hostname new_name
# 查看当前的主机ip
hostname -I

Sed – 流编辑

# 直接把第47行删除,适合目标机重装系统的情况
sed -ig '47d' /Users/hwang/.ssh/known_hosts

Process

# search by name
ps auwx | grep -i <process_name>
# 全部干掉
pkill -f <process_name>

# top来寻找各种process的资源占用
top
# h: help
# t: cpu stats
# m: memory stats
# R: sort, 然后用 < > 键来选择不同的排序列

Screen – 可以save & resume sessions

# create a new session named session_name or attach if already exists
screen -d -R session_name
# Ctrl + A + D: detach
# 修复乱码
## 可以在全局的screenrc文件里加 (通过whereis screenrc) 
## 也可以在用户 ~/.screenrc 里加入如下设置:
cat >> ~/.screenrc <<EOF
# 编码
defutf8 on
defencoding utf8
encoding UTF-8 UTF-8
# 新建screen,则能正确显示
EOF

显示中文

# 让terminal 显示中文 - 在~/.zshrc中加入
export LC_ALL=en_US.UTF-8 

时区

# 查看系统时区
timedatectl
ls -l /etc/localtime
# 显示所有的可选时区
timedatectl list-timezones
# 设置新时区 - 重启后依然有效
timedatectl set-timezone Asia/Shanghai

/sbin /bin /usr/sbin /usr/bin

# /sbin - system commands(shutdown,reboot)
# /bin - common commands(ls, chmod)
# /usr/sbin - user level system commands, 在后期安装的系统管理的必备程式, samba、sendmail
# /usr/bin/ - user level common commands, 在后期安装的一些软件的运行脚本

xargs

# 大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数

# xargs命令的作用,是将前一个命令的标准输出转为后一个命令的命令行参数。
# xargs将换行符和空格作为分隔符,把标准输入分解成一个个命令行参数。
echo "one two three" | xargs mkdir
# =>
mkdir one two three

# -d 改变分隔符
echo -e "a\tb\tc" | xargs -d "\t" echo

# -p参数打印出要执行的命令,询问用户是否要执行。
echo 'one two three' | xargs -p touch
# -t参数则是打印出最终要执行的命令,然后直接执行,不需要用户确认。

# xargs后面的命令默认是echo
# 大多数时候,xargs命令都是跟管道一起使用的。但是,它也可以单独使用。
# 输入xargs按下回车以后,命令行就会等待用户输入,作为标准输入。你可以输入任意内容,然后按下Ctrl d,表示输入结束,echo命令就会把前面的输入打印出来。

find . -type f -name "*.log" -print0 | xargs -0 rm -f
# xargs -0 将 \0 作为定界符。不然默认用空格,可能会影响文件名带有空格的文件。

#如果标准输入包含多行,-L 参数指定多少行作为一个命令行参数。不然是把所有行的输出变成一个输入,执行一次。
find . -name "*.sh" | xargs -L 1 echo
#有几行就执行几次

# -n参数指定每次将多少项,作为命令行参数
echo {0..9} | xargs -n 2 echo
# 把每两个数字作为一个输入项

# 一次将参数传给多条命令
# 自动针对每行输入执行一串命令(echo & mkdir)
echo -e "name1 1.1\n name2 2.1 2.2\n name3 3.1 3.2" | xargs -p -I PlaceHolder sh -c 'echo PlaceHolder; mkdir PlaceHolder'

#xargs默认只用一个进程执行命令。如果命令要执行多次,必须等上一次执行完,才能执行下一次。
#--max-procs参数指定同时用多少个进程并行执行命令。--max-procs 2表示同时最多使用两个进程,--max-procs 0表示不限制进程数。
docker ps -q | xargs -n 1 --max-procs 0 docker kill

一些技巧

# 把命令的输出放到另外一个命令当中
echo $(hostname -I | awk '{print $1}')
# 上一次重启
last reboot
# 这次活了多久了
uptime

Leave a Reply