Linux一些小命令的总结和学习
关于磁盘挂载:
避免发生分区识别混乱 使用UUID挂载文件系统 查看UUID命令 blkid 例: /etc/fstab UUID=94e4e384-0ace-437f-bc96-057dd64f42ee /data ext4 defaults 0 0
查看系统发行版本
cat /etc/issue
或者cat /etc/redhat-release
或者cat /etc/centos-release
提高make编译速度
make -j 4
make 使用更多的cpu 内核
ip地址
查看:ifconfig / ip a
服务器可以ping通IP,ping不通域名
检查DNS是否有配置
样例:
cat /etc/resolv.conf
查看cpu信息
top
cat /proc/cpuinfo
top
shift +m 按内存排序
c 按内存排序
查看内存信息
cat /proc/meminfo
df -h:磁盘大小
free -h :内存
熟悉linux目录
/bin 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里
/etc 配置文件
/home 用户家目录
/root 超级用户(系统管理员)的主目录
/sbin 存放二进制可执行文件,超级权限用户才能访问
/dev 设备文件
/mnt 临时文件系统的安装点
/tmp 存放各种临时文件
/boot 存放用于系统引导时使用的各种文件
/lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
/var 用于存放运行时需要改变数据的文件
今日小技巧:
cp 命令,主要用来复制文件和目录,同时借助某些选项,还可以实现复制整个目录,以及比对两文件的新旧而予以升级等功能。
cp命令
cp 命令的基本格式如下:
cp [选项] 源文件 目标文件
选项:
-a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;
-d:如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接;
-i:询问,如果目标文件已经存在,则会询问是否覆盖;
-l:把目标文件建立为源文件的硬链接文件,而不是复制源文件;
-s:把目标文件建立为源文件的软链接文件,而不是复制源文件;
-p:复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间);
-r:递归复制,用于复制目录;
-u:若目标文件比源文件有差异,则使用该选项可以更新目标文件,此选项可用于对文件的升级和备用。
tr命令
tr命令进行大小写转换
echo "HELLO WORLD" | tr 'A-Z' 'a-z'
hello world
sudo命令
sudo 需要注意事项
sudo -s 使用当前用户环境变量
sudo -i 使用root环境变量
ps aux |grep -v USER | sort -nk +4 | tail # 显示消耗内存最多的10个运行中的进程,以内存使用量排序.cpu +3
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
%CPU # 进程的cpu占用率
%MEM # 进程的内存占用率
VSZ # 进程虚拟大小,单位K(即总占用内存大小,包括真实内存和虚拟内存)
RSS # 进程使用的驻留集大小即实际物理内存大小
START # 进程启动时间和日期
占用的虚拟内存大小 = VSZ - RSS
ps -eo pid,lstart,etime,args # 查看进程启动时间
shell变量
shell变量截取和拼接
1. 使用# 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
2. 使用 ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
3. 字符串拼接
var1="aaa"
var2="bbb"
var3=${var1}${var2}
echo $var3
aaabbb
sort 排序
sort一些使用技巧
sort -n # 按数字排序
sort -nr # 按数字倒叙
sort -u # 过滤重复行
sort -m a.txt c.txt # 将两个文件内容整合到一起
sort -n -t' ' -k 2 -k 3 a.txt # 第二域相同,将从第三域进行升降处理
sort -n -t':' -k 3r a.txt # 以:为分割域的第三域进行倒叙排列
sort -k 1.3 a.txt # 从第三个字母起进行排序
sort -t" " -k 2n -u a.txt # 以第二域进行排序,如果遇到重复的,就删除
locate(locate) 命令用来查找文件或目录,速度比find快
locate(locate) 命令用来查找文件或目录,速度比find快
安装:yum install mlocate
查找my.cnf文件位置
locate my.cnf
/usr/bin/updatedb 主要用来更新数据库,通过crontab自动完成的
/usr/bin/locate 查询文件位置
/etc/updatedb.conf updatedb的配置文件
/var/lib/mlocate/mlocate.db 存放文件信息的文件
du和df的小技巧
1. du 和df的结果为什么不一样?
du,du能看到的文件只是一些当前存在的,没有被删除的。他计算的大小就是当前他认为存在的所有文件大小的累加和。
df, 记录的是通过文件系统获取到的文件的大小,他比du强的地方就是能够看到已经删除
的文件,而且统计在内。
2. du 显示单位技巧
-h 表示使用K,M,G的人性化形式显示
3. df详细案例
a:显示全部的档案系统和各分割区的磁盘使用情形
i:显示i -nodes的使用量
k:大小用k来表示 (默认值)
t:显示某一个档案系统的所有分割区磁盘使用量
x:显示不是某一个档案系统的所有分割区磁盘使用量
T:显示每个分割区所属的档案系统名称
gzip 压缩级别
gzip test # 默认压缩级别3
数字1~9 越大压缩级别越高,文件越小,同时越消耗CPU,时间越长。
gzip -9 test # 极限压缩
rpm必会技能
[root@localhost ~]# rpm -ivh your-package # 直接安装
[root@localhost ~]# rpm --force -ivh your-package.rpm # 忽略报错,强制安装
[root@localhost ~]# rpm -ql tree # 查询tree 的所有文件
[root@localhost ~]# rpm -qa|grep tree # 查询tree 安装包信息
[root@localhost ~]# rpm -e tree # 卸载
[root@localhost ~]# rpm -qf /usr/bin/tree# 反向查询,根据文件查询所属安装包
crontab 使用须知
1. 每五分钟执行一次
*/5 * * * * shell.sh
2. 每一分钟执行一次
* * * * * shell.sh
3. 每个周日 0 点执行
0 0 * * 0 shell.sh
4. 凌晨2至4点,每小时执行一次
0 2-4 * * * shell.sh
5. 凌晨2至4点,18和20点,每小时执行一次
0 2-4,18,20 * * * shell.sh
6. 每周末的凌晨一点钟执行一次
0 1 * * Sun /usr/sbin/raid-check
for 循环字符串
样例一:
#!/bin/bash
for i in `ls /root`;
do
echo $i is file name\! ;
done
样例二:
#!/bin/bash
for file in /proc/*;
do
echo $file is file path \! ;
done
for 循环数组
#!/bin/bash
a=("aaa" "bbb" "ccc")
for str in ${a[@]};do
echo $str
done
for 循环1-100
样例一:
#!/bin/bash
for((i=1;i<=100;i++));
do
echo $i
done
样例二:
#!/bin/bash
for i in $(seq 1 100)
do
echo $i
done
样例三:
#!/bin/bash
awk 'BEGIN{for(i=1; i<=100; i++) print i}'
样例四:
#!/bin/bash
for i in {1..100}
do
echo $i
done
查看tcp连接值
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉