大数据学习过程中,经常会用到的linux命令,以及常见的坑和解决办法。
1. 按修改时间排序当前文件夹内容
ll -rt //按时间排序。r表示倒序,t表示按修改时间排序。
2.移动和复制的标准写法
mv dir1 src/dir1 //移动文件夹到指定目录
cp -r dir2 src/dir2 //复制文件夹到指定目录
3.查看大文件
more:空格下翻,无法回退,q退出
less:上下键翻页,q退出
4.实时查看文件末尾内容
tail -f :实时查看文件最新内容
tail -F :相当于 -f + retry
5.定位ERROR信息
cat xxx.log | grep ERROR //当前行
cat xxx.log | grep -A 5 ERROR //后5行
cat xxx.log | grep -B 5 ERROR //前5行
cat xxx.log | grep -C 5 ERROR //前后各5行
比如 xxx.log ERROR 很多个,可以先输出到日志
cat xxx.log | grep -C 5 ERROR > 20200418error.log
6.别名alias
alias jj='cd /tmp' //只在当前会话生效,全局生效需要在环境变量中配置。此时输入jj就可直接跳转到/tmp目录下。
7.配置环境变量
全局 : /etc/profile 所有用户都可以使用
个人 : ~/.bash_profile 只能是当前用户使用 其他不能使用
~/.bashrc 【推荐】
场景: ssh 远程执行B机器的命令找不到,但是直接登录B机器命令是找到的。
解决办法:环境变量应该配置在.bashrc文件。
8.查看历史命令
history:显示历史命令
history -c:清空历史命令
9.用户、用户组
用户信息 /etc/passwd
用户组信息 /etc/group
root 默认管理员用户,已存在的。
[root@ruozedata001 ~]# ll /usr/sbin/user*
-rwxr-x--- 1 root root 118192 Nov 6 2016 /usr/sbin/useradd
-rwxr-x--- 1 root root 80360 Nov 6 2016 /usr/sbin/userdel
-rwxr-x--- 1 root root 113840 Nov 6 2016 /usr/sbin/usermod
-rwsr-xr-x 1 root root 11296 Apr 13 2017 /usr/sbin/usernetctl
[root@ruozedata001 ~]# ll /usr/sbin/group*
-rwxr-x--- 1 root root 65480 Nov 6 2016 /usr/sbin/groupadd
-rwxr-x--- 1 root root 57016 Nov 6 2016 /usr/sbin/groupdel
-rwxr-x--- 1 root root 57064 Nov 6 2016 /usr/sbin/groupmems
-rwxr-x--- 1 root root 76424 Nov 6 2016 /usr/sbin/groupmod
创建一个普通用户,用户名称ruoze,同时也会创建一个ruoze用户组,设置ruoze用户的组为ruoze,且把这个ruoze用户组设置为主组,同时也会创建家目录 /home/ruoze。
[root@ruozedata001 ~]# useradd ruoze
[root@ruozedata001 ~]# userdel ruoze
[root@ruozedata001 ~]# useradd ruoze
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@ruozedata001 ~]#
[root@ruozedata001 ~]# su - ruoze
[root@ruozedata001 ~]# id ruoze //显示用户信息
uid=1004(ruoze) gid=1004(ruoze) groups=1004(ruoze)
[ruoze@ruozedata001 ~]$ ll -a
total 16
drwx------ 2 ruoze ruoze 79 Apr 19 20:16 .
drwxr-xr-x. 7 root root 67 Apr 19 20:10 ..
-rw------- 1 ruoze ruoze 28 Apr 19 20:17 .bash_history
-rw-r--r-- 1 ruoze ruoze 18 Apr 11 2018 .bash_logout
-rw-r--r-- 1 ruoze ruoze 193 Apr 11 2018 .bash_profile
-rw-r--r-- 1 ruoze ruoze 231 Apr 11 2018 .bashrc
[ruoze@ruozedata001 ~]$ rm -rf .bash*
[root@ruozedata001 ~]# su - ruoze
Last login: Sun Apr 19 20:17:08 CST 2020 on pts/0
-bash-4.2$ //出现样式丢失,因为缺失.bash_profile和.bashrc
-bash-4.2$ cp /etc/skel/.* ./ //根据提示信息拷贝配置文件,再次切换用户,恢复正常。
添加用户ruoze到bigdata用户组
[root@ruozedata001 ~]# groupadd bigdata
[root@ruozedata001 ~]# usermod -a -G bigdata ruoze
[root@ruozedata001 ~]# id ruoze
uid=1004(ruoze) gid=1004(ruoze) groups=1004(ruoze),1005(bigdata)
改变用户ruoze的主组到bigdata用户组
[root@ruozedata001 ~]# usermod -g bigdata ruoze
[root@ruozedata001 ~]# id ruoze
uid=1004(ruoze) gid=1005(bigdata) groups=1005(bigdata) //发现缺失了ruoze用户组
[root@ruozedata001 ~]# usermod -a -G ruoze ruoze
[root@ruozedata001 ~]# id ruoze
uid=1004(ruoze) gid=1005(bigdata) groups=1005(bigdata),1004(ruoze)
10.修改密码
[root@ruozedata001 ~]# passwd
Changing password for user root.
New password:
[root@ruozedata001 ~]# passwd ruoze
Changing password for user ruoze.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
11.切换目录
su ruoze
su - ruoze 【推荐】:代表该用户切换到家目录,且执行环境变量文件
sudo:普通用户临时使用root的最大权限,使用前先配置文件:
vi /etc/sudoers
ruoze ALL=(root) NOPASSWD:ALL
12./etc/passwd文件
下面两种写法会导致切换用户不成功,需要修改/etc/passwd文件。
ruoze: x:1004:1005::/home/ruoze:/sbin/nologin 有提示
ruoze: x:1004:1005::/home/ruoze:/usr/bin/false 没提示
如CDH平台的用户:hdfs yarn hive hbase
su - yarn 不成功的,需按如下修改:
/sbin/nologin 或 /usr/bin/false ===> /bin/bash
13.查看大小
文件: ll -h 、du -sh
文件夹: du -sh
14.vi编辑注意事项
14.1
set nu 设置行号
set nonu 取消行号
14.2
异常退出vi编辑会产生.swp文件,删除该文件就可正常编辑。
14.3 常用快捷方式
dd 删除当前行
dG 删除当前及以下所有行
ndd 删除当前及以下n行
gg 跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift+$ 行尾
14.4 场景:清空这个文件内容,从另外一个文件内容 拷贝过来
gg --> dG --> i --> 鼠标右键单击 粘贴上
清空补充:
cat /dev/null > 1.log //不会存在一个空白行
echo "" > 2.log //会存在一个空白行
true > 1.log 也是清空文件内容 0字节
15.系统资源查看
磁盘 df -h
内存 free -m
负载 top
系统负载
load average: 0.01, 0.03, 0.05(1min 5min 15min)
经验值: 10 生产不用超过这个 ,否则认为服务器就是卡
a.是你的程序有问题 在大量跑计算
b.是不是被挖矿 yarn redis 最容易被hacker 攻击
c.硬件问题 内存条 硬盘 重启
示例:
top - 21:20:22 up 7 days, 58 min, 1 user, load average: 0.01, 0.03, 0.05
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.5 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
KiB Mem : 8011076 total, 6377388 free, 229060 used, 1404628 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 7265724 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2374 root 20 0 394348 31376 8608 S 0.3 0.4 41:44.99 jdog-kunlunmirr
1 root 20 0 125356 3796 2508 S 0.0 0.0 1:22.32 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.08 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:02.50 kworker/u4:0
16.应用的安装和卸载
yum search httpd
yum install httpd
centos6:
service httpd status|start|stop //1个应用httpd
centos7:
service httpd status|start|stop //兼容
systemctl status|start|stop httpd app2 app3 app4 //一次性操作多个应用
搜索 卸载:
[root@ruozedata001 ~]# rpm -qa|grep http
httpd-2.4.6-90.el7.centos.x86_64
httpd-tools-2.4.6-90.el7.centos.x86_64
[root@ruozedata001 ~]# rpm -e 包名称 --nodeps
[root@ruozedata001 ~]# yum remove httpd-2.4.6-90.el7.centos.x86_64
17.进程 端口号
进程不一定都会起到端口号
但是 与其他服务通信 比如需要端口号!!!
场景: 去打开ip为xxx服务器的应用yyy的网页?你会涉及到哪些Linux命令?
- ps -ef|grep yyy --> pid
- netstat -nlp|grep pid --> port
- 浏览器: http://ip:port
注意:
[root@ruozedata001 ~]# netstat -nlp| grep 18670
tcp6 0 0 :::80 :::* LISTEN 18670/httpd
tcp6 0 0 0.0.0.0:80 :::* LISTEN 18670/httpd
tcp6 0 0 192.168.0.3:80 :::* LISTEN 18670/httpd
//以上3中IP写法可以对外服务。
tcp6 0 0 127.0.0.1:80 :::* LISTEN 18670/httpd
tcp6 0 0 localhost:80 :::* LISTEN 18670/httpd
//危险: 该服务只能自己服务器的里面自己访问自己
测试ip和端口通不通:
ping ip
telnet ip port
18.下载
两种方式,都需要连接网络,推荐使用wget。
wget https://repo1.maven.org/maven2/org/apache/spark/spark-core_2.12/2.4.5/spark-core_2.12-2.4.5.jar
curl https://repo1.maven.org/maven2/org/apache/spark/spark-core_2.12/2.4.5/spark-core_2.12-2.4.5.jar -O spark-core_2.12-2.4.5.jar
19.压缩 解压
zip -r xxx.zip xxx/*
unzip xxx.zip
tar -czvf xxxx.tar.gz xxxx/* //打包压缩
tar -xzvf xxxx.tar.gz //解压
20.定时任务
面试题: 每隔10s打印一次 怎么做?(注意:*/6 * * * * 表示每6分钟)
[root@ruozedata001 ~]# vi ruoze.sh
#!/bin/bash
for((i=1;i<=6;i++));
do
date
sleep 10s
done
* * * * * sh ruoze.sh //每分钟执行一次脚本。在脚本中实现每10秒打印。
21.后台执行脚本
nohup /root/ruoze.sh >> /root/ruoze.log 2>&1 &
//生产标准写法