大数据实战之最全的Linux命令
1、操作文件和目录
1.1、显示命令
命令格式:ls [- 选项] [参数]
选项 |
含义 |
-a |
列举目录中的全部文件,包括隐藏文件 |
-l |
列举目录中细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等 |
-f |
列举的文件显示文件类型 |
-r |
逆向,从后向前地列举目录中内容 |
-R |
递归,该选项递归地列举当前目录下所有子目录内的内容 |
-s |
大小,按文件大小排序 |
-lh |
以人类可读的方式显示文件的大小,如用 K、M、G 作单位 |
1.2 目录转移
命令格式:cd [参数]
cd 命令用来改变所在目录。
cd /转到根目录中
cd ~转到/home/user 用户目录下
cd /usr 转到根目录下的 usr 目录中绝对路径
cd test 转到当前目录下的test 子目录中相对路径
cd .. 返回上一层目录
1.3 打印工作目录
命令格式:pwd
输入 pwd 命令,Linux 会输出当前目录。
1.4 创建目录
命令格式:mkdir (-p) [参数]
mkdir /data/zll
在绝对路径/data下创建zll的文件夹
mkdir -p /data/test/zll
递归创建,因为我/data下没有test文件,所以使用-p就可以直接递归创建。
mkdir /data/test /data/dev
可以一次创建多个目录。
1.5 创建文件
命令格式: touch 文件名
1.6 删除文件/目录
命令格式: rm [-rf ] 文件/目录
-r: 删除目录
-f: 强制执行
rm -r /data/test/
删除目录,rm -rf 强制删除,不用判断y
1.7 复制文件/目录
命令格式: cp -rp [源文件] [目标文件]
-r 复制目录
-p 保留文件属性(时间属性等等)
选项 |
含义 |
-i |
互动:如果文件将覆盖目标中的文件,他会提示确认 |
-r |
递归:这个选项会复制整个目录树、子目录以及其他 |
-v |
详细:显示文件的复制进度 |
cp -r /data/test/ /data/prod
如果复制到没有的文件夹,会自动创建
1.8 移动文件/目录
命令格式: mv [旧文件名] [新文件名]
mv /data/test/ipTest /data/dev/
移动文件的位置
mv /data/test/a.py /data/test/p.py
文件重命名
2、阅读文件命令
2.1 vim
命令格式:vim 文件名
查看文件全部内容
文件底部:Shift+G(快捷方式)
查询某个字符:输入 /字符
2.2 head、tail
命令格式: head/tail -n [数字] 文件路径
head -n 2 azkaban_test.sh 查看前2行
tail -n 2 azkaban_test.sh 查看后2行,如果未指定数字则默认显示10行。
tail –f test.sh 控制台实时监控文章的内容
2.3 cat
命令格式:cat 文件名
cat azkaban_test.sh | grep test 筛选含有‘test’字符的行
grep Test azkaban_test.sh | grep py多条件筛选,筛选含有‘Test’和‘py’字符的行
2.4 more/less
命令格式:more [选项] [fileNames]
选项 |
含义 |
-num |
一次显示的行数 |
-d |
提示使用者,在画面下方显示[Press space to continue, q to quit.],如果使用者按错键,则会显示[Press h for instructions.]而不是哔声 |
-f |
计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太 长的会被扩展为两行或两行以上) |
-p |
不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 |
-c |
跟-p 相似,不同的是先显示内容再清除其他旧资料 |
-s |
当遇到有连续两行以上的空白行,就代换为一行的空白行 |
-u |
不显示下引号(根据环境变数 TERM 指定的 terminal 而有所不同) |
+/ |
在每个档案显示前搜寻该字串(pattern),然后从该字串之后开始显示 |
+num |
从第 num 行开始显示 |
fileNames |
欲显示内容的档案,可为复数个数 |
more 和 less 的主要区别是,less 允许使用箭头来前后移动,而 more 使用空格键和b 键来前后移动。
来列举/etc 目录下的内容:
ls –al /etc | more
要使用 more 在文本文件中搜索关键字
按/键并输入命令搜索条目:/foo
使用空格键来先前翻阅页码
按 q 键退出。
more -s testfile 逐页显示 testfile 之档案内容,如有连续两行以上空白行则以一行空白行显示。
more +20 testfile 从第 20 行开始显示 testfile 之档案内容。
3、磁盘空间查询命令
3.1 df命令
命令格式:df [选项]
参数 |
含义 |
-a |
把全部的文件系统和各分区的硬盘使用情形列出来,包括 0 区块的,例如/proc 这个文件系统 |
-i |
列出 I-nodes 的使用量 |
-k |
把各分区的大小和挂上来的文件分区的大小用 k 表示 |
-t |
列出某一文件系统的所有分区磁盘空间使用量 |
-x |
列出不是某一文件系统的所有分区磁盘空间使用量,和-t 选项相反 |
-T |
列出每个分区所属文件系统的名称 |
-h |
查看每个根路径的分区大小 |
-hl |
查看磁盘剩余空间 |
3.2 du命令
命令格式:du [选项] [目录名]
参数 |
含义 |
-sh |
返回该目录的大小 |
-sm |
返回该文件夹总M数 |
-h |
查看指定文件夹下的所有文件大小(包含子文件夹)更新详细命令文档 |
3.3 mount/umount 命令
命令格式:mount –t [设备类型] [存放目录]
参数 |
含义 |
无 |
不加任何参数,直接输入命令可以显示已挂载的文件系统和目录 |
-a |
挂上/etc/fstab 下的全部文件系统 |
-t |
制定所挂上来的文件系统的名称,所有系统支持的文件系统,这个信息可以在 /proc/filesystems 这个文件里看到 |
-n |
挂上文件系统,但是不把文件系统的数据写入/etc/mtlab 这个文件 |
-w |
将文件系统设为可读写 |
-r |
挂上来的文件系统设为只读 |
mount 命令的功能是挂载文件系统,可以挂载硬盘、光盘、软盘,也可以挂载NFS 网络文件系统.
umount 命令的功能是卸载已挂上的文件系统,在关闭系统前应该把所有挂载上的文件系统卸载。这个命令和 mount命令是相对的
3.4 fsck 命令
命令格式:fsck (选项) [分区名称]
选项 |
含义 |
-a |
自动修复文件系统,不询问任何问题,比较危险 |
-A |
依照/etc/fstab配置文件的内容,检查该文件内所列全部文件系统。若没有附加参数"-P”,则会先检查/目录的文件系统,而不会同时检查所有文件系统 |
-R |
采取互动方式,在修复时询问问题,让用户确认并决定处理方式 |
-S |
依次检查作业而不是同时执行。当依次指定多个文件系统且采用互动的方式进行检查时,请使用此参数以便顺序执行,否则fsck 可能会同时询问数个问题,让人不知所措 |
-V |
显示命令执行的过程 |
-T |
指定要检查的文件系统的类型 |
-N |
不是真正执行指令,仅列出实际执行时会进行的动作 |
fsck 命令的功能是检查和修复 Linux 文件系统,这个命令最好在没有人或是没有分区挂上来时使用,其实每次开机系统都会做一次检查,看是否有坏轨或数据流失的现象
3.5 其他
查看硬盘的分区:fdisk -l
查看IDE硬盘信息:hdparm -i /dev/hda
查看STAT硬盘信息:hdparm -I /dev/sda 或 apt-get install blktool 或 blktool /dev/sda id
4、内存相关命令
4.1 free命令
命令格式:free (-h)
free -h 以更友好的方式显示,会以K、M、G为单位来显示
free -h -s 3 以一定时间间隔重复的输出,这个命令是每3秒输出一次
free -m 查看内存使用情况
free样例:
下面是对内存查看free命令输出内容的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
4.2 top命令
命令格式:top [选项]
选项 |
含义 |
d |
指定每两次屏幕信息刷新之间的时间间隔 |
p |
通过指定监控进程ID来仅仅监控某个进程的状态 |
q |
该选项将使top没有任何延迟的进行刷新 |
S |
指定累计模式 |
s |
使top命令在安全模式中运行 |
i |
使top不显示任何闲置或者僵死进程 |
c |
显示整个命令行而不只是显示命令名 |
top样例:
列名 |
含义 |
PID |
进程id |
PPID |
父进程id |
RUSER |
Real user name |
UID |
进程所有者的用户id |
USER |
进程所有者的用户名 |
GROUP |
进程所有者的组名 |
TTY |
启动进程的终端名。不是从终端启动的进程则显示为 ? |
PR |
优先级 |
NI |
nice值。负值表示高优先级,正值表示低优先级 |
P |
最后使用的CPU,仅在多CPU环境下有意义 |
%CPU |
上次更新到现在的CPU时间占用百分比 |
TIME |
进程使用的CPU时间总计,单位秒 |
TIME+ |
进程使用的CPU时间总计,单位1/100秒 |
%MEM |
进程使用的物理内存百分比 |
VIRT |
进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
SWAP |
进程使用的虚拟内存中,被换出的大小,单位kb。 |
CODE |
可执行代码占用的物理内存大小,单位kb |
DATA |
可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb |
RES |
进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR |
共享内存大小,单位kb |
nFLT |
页面错误次数 |
nDRT |
最后一次写入到现在,被修改过的页面数。 |
S |
进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程) |
COMMAND |
命令名/命令行 |
WCHAN |
若该进程在睡眠,则显示睡眠中的系统函数名 |
Flags |
任务标志,参考sched. |
4.3 其他
cat /proc/cpuinfo 查看linux系统的CPU型号、类型以及大小
cat /proc/meminfo 查看linux系统内存大小的详细信息,可以查看总内存,剩余内存、可使用内存等信息
5、进程和端口相关命令
5.1 ps命令
ch
ps -ef| grep [端口号]
5.2 netstat命令
查看端口进程:
netstat -anlp | grep [端口号]
netstat -anpt | grep [端口号]
netstat -nlp | grep [端口号]
查看哪些端口被打开:
netstat -anp
5.3 lsof命令
查看端口号:
lsof -i:[端口号]
5.4 yarn进程处理
1)杀掉YARN上面的任务
yarn application -kill appid
2)查看各个程序进程内存使用的内存情况
ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -r | less
5.5 杀死僵尸进程
直接kill -9 进程号 可能杀不掉
需要找到它的父进程,进行杀掉,然后在看有没有
ps -ef | grep defunct | more
如果还有的话,需要重启一下服务器
5.6 其他
ll /proc/进程ID/cwd 查看进程
pwdx [进程id] 查看进程运行路径
6、文件压缩和解压
6.1 zip格式
1)压缩的命令格式:
zip [选项] 压缩包名 源文件或源目录
选项:
-r:压缩目录
示例:
zip ana.zip anaconda-ks.cfg
压缩多个文件:
zip test.zip abc abcd
2)解压缩的命令格式:
unzip [选项] 压缩包名
选项:
-d:指定解压缩位置
示例:
unzip -d /tmp/ test.zip
6.2 gz格式
1)压缩的命令格式:
zip [选项] 源文件
选项 |
含义 |
-c |
将压缩数据输出到标准输出中,可以用于保留源文件 |
-d |
解压缩 |
-r |
压缩目录 |
注意:使用gzip压缩文件后会将原文件删除,如果想保留原文件则可以使用-c选项将压缩过程产生的标准输出写入一个新的文件中,示例如下:>的作用是覆盖内容,>>的作用是追加内容
gzip -c demo.sh > demo.sh.gz
这样在压缩的时候就不再删除源文件了
gzip -r test
如果test是一个目录,上述命令则会分别压缩test目录下的每个文件,而不是压缩test目录,也就是说gzip命令不会打包压缩
2)解压的命令格式
gunzip [压缩文件]
gzip -d [压缩文件]
6.3 bz2格式
1)压缩的命令格式:
bzip2 [选项] 源文件
教程 |
含义 |
-d |
解压缩 |
-k |
压缩时,保留源文件 |
-v |
显示压缩的详细信息 |
注意:
bzip2不能压缩目录,会报错
解压时如果原文件已存在则会报错,因此最好先将原文件删除
2)解压缩的命令格式:
bunzip2 [压缩文件]
bzip2 -d [压缩文件]
6.4 tar格式
1)打包的命令格式:
tar [选项] [-f 压缩包名] 源文件或源目录
选项 |
含义 |
-c |
打包 |
-f |
指定压缩的文件名,压缩的扩展名是管理员用来识别格式的,所以一定要正确指定扩展名 |
-v |
显示打包文件过程 |
注意:使用tar命令打包并不会压缩文件
2)解打包的命令格式
tar [选项] 压缩包 (-C 解打包目录)
选项 |
含义 |
-x |
解打包 |
-f |
指定压缩包的文件名 |
-v |
显示解打包文件的过程 |
-t |
测试,就是不解打包,只是查看包里有哪些文件 |
由于gzip和bzip2不能打包只能压缩,而tar只能打包不会压缩,因此可以先使用tar打包,然后使用gzip或bzip2进行压缩
6.5 .tar.gz格式和.tar.bz2格式
1)压缩的命令格式
tar [选项] [压缩包] 源文件或源目录
选项 |
含义 |
-z |
压缩和解压缩".tar.gz"格式 |
-j |
压缩和解压缩".tar.bz2"格式 |
示例:
tar -zxvf test.tar.gz test/ 解压缩
tar -zxvf test.tar.gz -C /tmp 解压缩到指定目录
最后看看Linux与它另外两兄弟的关系吧!!!