Linux常用命令--大数据开发实用

117 阅读7分钟

一、基础命令

系统信息和性能查看

命令场景
hostname查看计算机名
uname显示操作系统信息
who显示当前登录系统的⽤户
whoami显示当前⽤户名
uptime查看系统运⾏时间、⽤户数、负载
top动态显示cpu/内存/进程等情况
free -m查看内存⽤量和交换区⽤量
df -h查看磁盘使⽤情况及挂载点
date/cal显示系统⽇期时间/日历
iostat查看io读写/cpu使⽤情况

常用命令

命令场景
clear清除当前屏幕终端上的任何信息
su - user_name切换用户
last查看用户登录日志
ifconfig查看⽹络接⼝属性
ping测试本机与目标机是否联通、联通网速、稳定性
ifconfig eth0查看某⽹卡的配置
rpm -qa|grep pkg_name检查是否有安装某个软件包,a所有软件包,q已经安装
yum -y install pkg_name下载并安装软件包
man 命令命令说明以及参数用法 q退出界面
--help参数用法
history查看历史运行命令,鼠标上下键可切换

二、文件操作和权限

文件操作

标题
cd更改所在目录,cd ~用户主目录,cd /用户根目录,cd ..上一级
mkdir创建一个目录,-p确保目录不存在则创建
touch创建一个文件
>和>>>覆盖;>>追加;ls -l > a.txt
echo写内容到输出
cat file查看⽂件内容,-n标识行数
more查看长文件内容,空格翻页
head -10查看文件前10行
tail -10查看文件后10行
tail -f实时查看添加到文件中的内容
grep keyword file_name查找文件中的关键词
tar -cvfz xxx.tar.gz dir创建gzip压缩包
tar -zxvf xxx.tar.gz解压gzip压缩包
tar -xvf xxx.tar解压tar包
cp filename1 filename2把filename1复制一份并命名为 filename2
cp-r可复制文件夹 -f在覆盖重命名文件时不做任何提示
find-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
mv filename1 filename2把filename1重命名为 filename2 ,重命名目录名同理
mv filename1 newdir/filename2将文件移动到另一个目录并修改名称
mv file1 file2 file3 a_dir移动多个文件到目录a_dir
scp -P 22 -r /home/server Android@192.168.1.110:/opt将本地/home/server的文件夹上传到远端服务器192.168.1.110的目录/opt下
scp -P 22 -r android@192.168.1.110:/opt/docs /home将远端服务器192.168.1.110下的/opt/docs文件夹下载到本地/home下
rz/sz yum install lrzsz -yrz,上传;sz,下载

文件权限

查看文件所有者

image.png

查看文件所在组

image.png

修改文件所有者

chown tom a.txt 将文件所有者改为tom chown -R tom test/ 将test目录下所有文件,包括子目录和子目录下所有文件,递归将文件、目录的所有者改为tom

修改权限-chmod

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)

读(r) 写(w) 执行(x) chmod u=rwx,g=rx,o=rx a.txt

给文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限

通过数字变更

规则:r=4 w=2 x=1

rwx = 4+2+1 = 7 r-x = 4+1=5 r-x = 4+1 =5

chmod 755 /home/a.txt

三、进程管理

场景操作
运行时间较长,将进程放入后台ctrl+z(后台挂起,进程暂停状态),或者明确启动的进程非常耗时,在命令结尾处添加一个 " &" 符号(注意,& 前面有空格)
查看进程ps,查看正在运行的进程,ps aux查看系统所有进程,ps -ef显示所有进程信息
持续监听进程状态top,每3秒刷新一次
查看当前终端放入后台的工作jobs,-l,列出进程的 PID 号,-r,只列出运行中的进程,-s,只列出已停止的进程
后台进程恢复(运行的与暂停的)每个被放入后台的命令都会被分配一个工作号。第一个被放入后台的命令,工作号是 1;第二个被放入后台的命令,工作号是 2,以此类推.用jobs可看到进程的工作号,fg %工作号 可恢复进程放入前台执行,bg %工作号 可恢复后台暂停的进程
查看进程调用的文件或调用文件的进程lsof ,-p pid 列出某个pid打开的文件,lsof /usr/lib ,查找调用lib的进程
调整进程优先级ps -le 查找出PRI 和 NI,PRI (最终值) = PRI (原始值) + NI,修改NI(-20~19)从而改变优先级别,nice 命令不能修改正在运行的进程,普通用户(0~19)只可调大,renice命令可修改正在运行的进程
后台命令脱离终端运行nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行, nohup find / -print > /root/file.log &
kill-1,让进程立即关闭.然后重新读取配置文件之后重启;-9,立即结束程序的运行,强制中止;-15,正常结束进程(不写参数默认就是15),killall find(pkill find),所有进程名为find的被杀死

ps -aux命令

表头含义
USER该进程是由哪个用户产生的。
PID进程的 ID。
%CPU该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ该进程占用虚拟内存的大小,单位为 KB。
RSS该进程占用实际物理内存的大小,单位为 KB。
TTY该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长
STAT进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。-R:该进程正在运行。-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。-X:死掉的进程(应该不会出现)。-<:高优先级(以下状态在 BSD 格式中出现)。-N:低优先级。-L:被锁入内存。-s:包含子进程。-l:多线程(小写 L)。
START该进程的启动时间。
TIME该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND产生此进程的命令名。

四、Linux三剑客

案例: ps aux|grep "/bin/sh /data/dolphinscheduler/exec/process/7349039538368/7349624414912_6/1107/4613/ods/hc/ods_nr_base_sso_user_info_f.sh"|grep -v grep|awk '{print $2}'|xargs kill

找出这个进程名并且全部杀掉

grep、sed 和 awk 命令,俗称 linux 界里的三剑客

命令特点场景
grep过滤grep是过滤最快的
sed替换、修改文件内容、取航对文件内容进行替换,取出某个范围的内容
awk取列、统计计算取列、对比、比较、统计计算

grep

场景使用
匹配前面一个字符后面是一个a的行grep ".a" grep_t.txt
匹配前后有字符,中间有a的行号grep ".a." grep_t.txt
匹配 0-9 范围内的任意字符grep [1-9] grep_t.txt
匹配指定单词外的任意字符grep "[^a]" grep_t.txt
只匹配开头行grep "^[^a]" grep_t.txt or grep -v "[^a]" grep_t.txt
过滤出bing 跟 Binggrep -E "(b|B)ing" grep_t.txt
直接过滤掉大小写 binggrep -i bing grep_t.txt
查找当前目录下以t开头的文件中,e后面存在0或多个l的行grep ‘el*’ t*(el的星号是个正则符,t的星号是个通配符)
grep搜索路径下的全部文件grep ‘el*’ * -r -n
查找以xiao开头的行,以lan结束的行grep '^xiao' file -n | grep 'lan$'
查找以xiao开头的行,且不以lan结束的行grep '^xiao' file -n | grep 'lan$' -v

sed

sed命令核心功能(增删改查),s,替换;p,显示;d,删除;c/a/i,增加(c,代替这行内容;a,向指定的行或每一行追加内容,i,向指定的行或每行插入内容)

场景使用
只查找第 2 行数据sed -n '2p' sed_text.txt
查找 1 到 5 行sed -n '1,5p' sed_text.txt
查找log 11:26到11:30sed -n '/11:26:30/,/11:30:00/p' sed_text.txt
指定删除第2行数据sed '2d' sed_text.txt
删除第1行到第5行数据sed '1,5d' sed_text.txt
查找删除 xiaolan 这个单词sed '/xiaolan/d' sed_text.txt
获取ip地址ip a s ens33 |sed -rn '3s#(^.* )(.)(/.$)#\2#gp'
删除文件中的空行包含井号的行sed -r '/^$|#/d' /etc/ssh/sshd_config
将hello修改为xiaolansed -i 's/hello/xiaolan/' file.txt
-a,行后插入新行sed -i '/特定字符串/a 新行字符串' fileName
-i,行前插入新行sed -i '/特定字符串/i 新行字符串' fileName
-c,修改指定内容行sed -i '/特定字符串/c csc lwl' fileName

awk

场景使用
查找nginx的进程idps aux|grep nginx|grep -v grep|awk '{print $2}'
使用":"分割,打印文件第1列awk -F ':' '{print $1}' /etc/passwd
使用":"分割,打印文件第1,2,3列awk -F ':' '{print 1,1, 2, $3}' /etc/passwd
格式化输出awk -F ':' '{ printf("%5s %5s %5s\n", 1,1, 2, $3) }' /etc/passwd
使用多个分隔符,先使用"1"分割,然后对分割结果再使用":"分割,打印文件第1,2,3列awk -F '[1 :]' '{print 1,1, 2, $3}' /etc/passwd
使用-v设置变量,1+a:在第1列后面添加a列awk -F ':' -va='666' '{print 1,1, 1+a}' /etc/passwd
使用-v设置变量,1b:在第1列后面拼接b值作为新的1列awk -F ':' -va='666' -vb='abc' '{print 1,1, 1+a, $1b}' /etc/passwd
根据关键字匹配某一行awk '/root/' /etc/passwd
统计某个文件夹下的文件占用的字节数ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'
显示第5行和第6行awk -F: 'NR==5 || NR==6{print}' /etc/passwd
统计/home目录下不同用户的普通文件的总数是多少ls -l|awk 'NR!=1 && !/^d/{sum[$3]++} END{for (i in sum) printf "%-6s %-5s %-3s \n",i," ",sum[i]}'

补充中。。。