工作中用到的一些linux命令
linux常用命令
常用软件安装
1. rz,sz
yum install lrzsz
2. ifconfig
# 1. 先搜索ifconfig
yum search ifconfig
# 2. 具体执行安装
yum install net-tools.x86_64
3. nc
yum -y install nc
常用命令
cp
打 tar 包时,路径下有软连接,无法正常归档。
cp source dist -Lvr
设置主机名
hostnamectl set-hostname [主机名]
创建用户
useradd -m test4(用户)
创建用户
useradd -M(不创建主目录) -s(不允许登录) /sbin/nologin mysql -g(加入mysql组) mysql
把user添加到组group中
usermod -a -G group_name user_name
进程
寻找最占CPU的进程
top -c (按键P按CPU占有资源排序)
查看进程
ps -ef | grep processname
ps -aux|grep processname
查看进程打开的端口
ss -tnlp | grep 25178
或
ss -tnlp | grep ssh
或者
netstat -tnlp | grep ssh
或者
netstat -lntp | grep 860
sleep
sleep 3s
监听端口
netstat -anp | grep 2888
查看文件被那个进程占用
fuser <filename>
umask权限掩码
查看默认权限
默认创建文件夹的权限为755,文件为644
注意:创建文件要比创建文件夹默认权限都少1(可执行)也就是 755 - 111 = 644
umask
//或者
umask -S
设置权限
umask 022
date
时间戳和时间相互转换
时间戳转化为时间
date -d @1562641547
时间转化为时间戳
// date +%s
date -d '06/12/2018 07:21:22' +"%s"
ll
查看目录的隐藏文件
ll -a
文件按修改时间顺序倒序查看
ls -lrt *
文件按修改时间正序倒序查看
ls -lt *
find
查找根目录下student前缀的文件并展示
find / -name student* -exec ls -l {} \;
查找根目录下student前缀的文件并移动到/opt目录下
find / -name student* -exec mv {} /opt \;
查找/mnt目录下student前缀的文件并删除
find /mnt -name student* -exec rm {} \;
查找/mnt 目录下大于10M的文件
find /mnt -size 10M -exec ls -l {} \;
查找/mnt 目录下的文件并展示
find /mnt -type f -exec ls -l {} \;
查找并打印
find path /mnt/disk01/es7_log_online/nodes/0/ -name "index" -print
awk
转大写为小写
echo "abcdefg" | awk '{print toupper($0)}' #转大写为小写
转小写为大写
echo "ABCDEF" | awk '{print tolower($0)}' #转小写为大写
grep
只查找当前文件夹的目录
ls -al |grep "^d"
只查找当前文件夹的文件
ls -al |grep "^-"
反向匹配
grep -v grep
过滤多个字段
例如: 滚动打印日志 并匹配ERROR和WARN级别的日志
tailf /var/log/kafka/server.log | grep -E "ERROR| WARN"
完全匹配
docker inspect container | grep "\<Memory\>"
忽略大小写
例如: 滚动打印日志 忽略大小写匹配关键字error
tailf /var/log/kafka/server.log | grep -i "error"
还有一些别的参数
- -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
- -n :显示行号
- -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
这篇博文中对grep总结的很到位可以直接参考 转载地址:https://www.cnblogs.com/flyor/p/6411140.html
sed命令
匹配文件内容
sed '/^FLINK_URL/!d;s/.*=//' properties
文件内容
FLINK_URL=https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.2/flink-1.9.2-bin-scala_2.11.tgz
匹配结果
https://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.9.2/flink-1.9.2-bin-scala_2.11.tgz
-
^ 行首匹配 (匹配FLINK_URL 开头的行)
-
d 删除行 (删除上面匹配的行)
-
! 反向匹配 (删除 不是以FLINK_URL 开头的行)
-
; 连接两个命令
-
s 替换
-
. 字符通配
-
- 任意个数量
所以连起来为 匹配以FLINK_URL 开头的行,然后匹配 “=” 后面的内容
awk
- 案例一:累加第一列的和
vim test
1
2
3
4
5
cat test |awk '{a+=$1}END{print a}'
21
- 案例二:match
df -h |awk '{if(match($6, "mnt")) print $6}'|wc -l
- 案例三:if else
df -h |awk '{if(match($6, "mnt")) print $6;else if (match($6, "home")) print $6; else print $6}'
分区文件系统类型
查看磁盘挂载
df -h
查看磁盘挂载(默认树形方式显示)
lsblk
df -T
或者
blkid
或者
lsblk -f
对磁盘进行操作(添加,删除分区)
fdisk /dev/sdb
定时任务
查看定时任务
crontab -l
编辑定时任务
crontab -e
删除定时任务(慎用)
crontab -r
查看定时脚本存放位置
ll /var/spool/cron/crontabs
cpu、内存、磁盘、IO
cpu
- 查看cpu物理核数
cat /proc/cpuinfo | grep "physical id"
- 查看cpu逻辑核数
cat /proc/cpuinfo | grep "processor"
内存
free -g
free -m
free -h
cpu
top
网络io负载
ifstat
iftop -i eth1 -P
磁盘io负载
iostat
iostat -dx
一些场景
列出访问次数前十的ip地址
last | awk '{print $3}'| sort| uniq -c |sort -rn | head -10
-
last显示服务器上用户最近登录信息
-
第三列为登录主机ip
-
第一次sort排序来让 unip -c 显示重复行出现次数
-
sort -rn 依据显示的次数降序排序,
-
head -10 显示前10行
干掉某一进程(脚本)
ps -ef | grep processname | grep username | grep -v grep | awk {'print $2'} | xargs kill -9
挂载iso镜像文件
mount -o loop /centos-iso/centos-7iso /mnt/yum/
清除缓存
echo 3 > /proc/sys/vm/drop_caches
统计行数
ll | wc -l
获取uuid
blkid /dev/sda4 | awk '{print $2}'|awk -F\" '{print $2}'
获取uuid(cut)
blkid /dev/sda4 | cut -d "\"" -f 2
开启nc服务
nc -lk 9999
wget下载文件
wget --user user --password pass http://example.com/
查看使用swap的应用
echo -e "PID\t\tSwap\t\tProc_Name"
ping 大包
ping -l 5000 ip
shell执行linux命令
两种方式
执行linux命令,将执行命令返回的值,赋给shell中的变量
- 第一种
data=`command`
- 第二种
data=$(command)
查看系统各个进程打开的文件描述符数量
lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr
结果是以 打开的文件描述符数量:进程号 的格式排序的 。降序排序
lvm 磁盘扩容
xfs_growfs /dev/nvme2n1
date
查看7天前的日期,并且格式化
date -d '7 day ago' '+%Y.%m.%d'
压缩文件
gzip
压缩
gzip -r 目录
解压
gzip -d xxx.gz