2019独角兽企业重金招聘Python工程师标准>>>
学习大数据,必须了解linux基础命令,本文是基于centos7.0:
1.pwd: 显示当前所在的路径
2. 家目录:linux系统里的家目录(即用户目录)是存放个人数据。除了root用户,其他用户的设置文件,桌面文件以及个人数据都是放在各自的用户目录下。
root /root
nemo /home/nemo
xxxxx /home/xxx
自己的家目录路径,可以在命令行下输入命令echo $HOME
3.cd: 切换目录
cd /home/hadoop
cd : 切换到当前用户的home
cd ~ : 切换到当前用户的home
cd - : 切换到上一次的目录
cd ../: 退回到上一层目录
../代表一层
4.clear: 清空当前session
5.ls: 打印当前目录的所有的文件夹和文件的名称
ls -l == ll (alias设置的) 查看文件夹和文件的名称,权限,日期
隐藏:是以.开头的文件或文件夹
ls -l -a == ll -a == ls -la 查看隐藏文件夹和文件
ll -h 文件的大小
ll -rt 按时间排序
6.ifconfig 查看当前ip linux
ipconfig window
备注:云服务器 只有内网网卡,外网网卡 kafka
7.文件创建
vi
touch xxx.log 创建一个空的文件
8.文件夹创建
mkdir xxx 创建1层
mkdir -p 1/2/3 连续创建3层
mkdir 4 5 6 同层1下子创建3个目录
9.mv 移动文件或文件夹 原路径是不存在
mv 20180427.log dokcer/
10.cp 复制文件或者文件夹 原路径是存在的
文件: cp 20180502.log dokcer/
文件夹: cp -r 4 1/
注意点:
1)功能上的区别
mv:用户可以使用该命令为文件或目录重命名或将文件由一个目录移入另一个目录中。
cp:该命令的功能是将给出的文件或目录拷贝到另一文件或目录中。
2)从inode角度来区分
mv:会将存储于indoe索引节点上的文件元信息也移动到新文件中。
cp:只会复制文件数据,不会复制inode索引节点上的文件元信息。
例:1.txt到test
注意看inode号的变化。mv命令执行后,test的inode号变成了1.txt的inode号,而cp命令执行后,test、1.txt两个文件的inode号没有发生变化 。
11.查看文件的内容
cat 20180427.log 一下子将内容刷新出来
more 20180427.log 一页页的按空格键翻
less 20180427.log
注意点:less命令非常强大,在此只介绍几个常用的参数,更多参数使用man less来查看Linux帮助手册。
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
一次查看多个文件
less linuxdaxue.com-access_log linuxdaxue.com-error_log
说明:
输入 :n后,切换到linuxdaxue.com-error_log
输入 :p 后,切换到linuxdaxue.com-access_log
1)分屏导航
ctrl + F - 向前移动一屏
ctrl + B - 向后移动一屏
ctrl + D - 向前移动半屏
ctrl + U - 向后移动半屏
2)单行导航
j - 向前移动一行
k - 向后移动一行
3)其它导航
G - 移动到最后一行
g - 移动到第一行
4)其它命令
v - 使用配置的编辑器编辑当前文件
h - 显示 less 的帮助文档
&pattern - 仅显示匹配模式的行,而不是整个文件
q / ZZ - 退出 less 命令
5)标记导航
当使用 less 查看内容比较多的文件时,可以作一个标记,然后就能通过命令导航到标有特定标记的文本位置,方式如下所示:
ma - 使用 a 标记文本的当前位置
'a - 导航到标记 a 处
******************************************
12.tail 实时查看文件内容
tail -f 20180427.log
tail -F 20180427.log
说明:-F = -f -retry
http://blog.itpub.net/30089851/viewspace-2134067/
tail -200f install.log.syslog 倒着查看最新200行,且实时
log4j 10份
xxx.log 系统记录日志10份
100M就切1次:
mv xxx.log xxx.log1
touch xxx.log
13.echo 命令
echo "456" > 20180502.log 覆盖
echo "123" >> 20180502.log 追加
echo "1234" 输出打印
14.别名
alias
临时: alias rz='cd /root/gordon/1/'
永久: 取决于设置全局还是个人
15.环境变量文件
全局:
/etc/profile
source /etc/profile 生效
个人: .bash_profile 、.bashrc
~/.bash_profile
source ~/.bash_profile 生效
. ~/.bash_profile 生效
16.删除
rm xxx.log 删除一个文件,询问
rm -f xxx.log 删除一个文件,不询问
rm -rf xxx 删除文件夹
rm -rf / 不能做
注意点:
在shell脚本:一定要校验path变量是否等于空
path=""
rm -rf $path/* ==> rm -rf /*
17.设置变量
path=6
key=value
$ export HELLO="Hello!"
$ echo $HELLO
18.history !70 查看历史命令和执行第70行
19.用户,用户组的常用命令
[root@hadoop01 ~]# ll /usr/sbin/user*
-rwxr-x---. 1 root root 118192 11月 6 2016 /usr/sbin/useradd
-rwxr-x---. 1 root root 80360 11月 6 2016 /usr/sbin/userdel
-rwxr-x---. 1 root root 113840 11月 6 2016 /usr/sbin/usermod
-rwsr-xr-x. 1 root root 11288 8月 4 2017 /usr/sbin/usernetctl
[root@hadoop01 ~]#
[root@hadoop01 ~]# ll /usr/sbin/group*
-rwxr-x---. 1 root root 65480 11月 6 2016 /usr/sbin/groupadd
-rwxr-x---. 1 root root 57016 11月 6 2016 /usr/sbin/groupdel
-rwxr-x---. 1 root root 57064 11月 6 2016 /usr/sbin/groupmems
-rwxr-x---. 1 root root 76424 11月 6 2016 /usr/sbin/groupmod
[root@hadoop01 ~]#
自动创建一个用户和用户组,名称一样
[root@hadoop01 ~]# useradd nemo
[root@hadoop01 ~]# id nemo
uid=1002(nemo) gid=1003(nemo) 组=1003(nemo)
gid: 主组
groups:所有组
删除
[root@hadoop01 ~]# userdel nemo
[root@hadoop01 ~]# id nemo
id: nemo: no such user
[root@hadoop01 ~]#
再次创建
[root@hadoop01 ~]# useradd nemo
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[root@hadoop01 ~]#
查看/home/xxx用户名称的文件夹
[root@hadoop01 ~]# ll /home/
总用量 0
drwx------. 2 gordon bigdata 83 6月 2 15:36 gordon
drwx------. 2 hadoop hadoop 83 6月 2 22:47 hadoop
drwx------. 2 nemo nemo 62 6月 12 20:43 nemo
[root@hadoop01 ~]#
用户和用户组的文件
[root@hadoop01 ~]# cat /etc/passwd | grep nemo
nemo:x:1002:1003::/home/nemo:/bin/bash
[root@hadoop01 ~]# cat /etc/group | grep nemo
nemo:x:1003:
[root@hadoop01 ~]#
-g后面的组是用户的主组,-G后面的组是用户的附加组
[root@hadoop01 ~]# groupadd bigdata
groupadd:“bigdata”组已存在
[root@hadoop01 ~]# id nemo
uid=1002(nemo) gid=1003(nemo) 组=1003(nemo)
[root@hadoop01 ~]# usermod -a -G bigdata nemo
[root@hadoop01 ~]# id nemo
uid=1002(nemo) gid=1003(nemo) 组=1003(nemo),1001(bigdata)
[root@hadoop01 ~]# usermod -g bigdata nemo
[root@hadoop01 ~]# id nemo
uid=1002(nemo) gid=1001(bigdata) 组=1001(bigdata)
20.管道符 |
cat /etc/passwd | grep nemo
[root@hadoop01 ~]# cat /etc/passwd | grep nemo
nemo:x:1002:1001::/home/nemo:/bin/bash
21.查看命令帮助
usermod --help
man usermod
22.设置密码
passwd nemo
23.切换用户
[root@hadoop01 ~]# su nemo
[nemo@hadoop01 root]$ pwd
/root
[nemo@hadoop01 root]$ su - nemo
密码:
上一次登录:二 6月 12 21:02:31 CST 2018pts/0 上
[nemo@hadoop01 ~]$
- 1.切换用户之后,执行环境变量文件.bash_profile
2.且进入该用户的家目录
hadoop
su hadoop su - hadoop
xxxx xxxxxx
记住2件事:1. history
2. 查看环境变量文件
24.exit 退出当前用户,返回上一次用户
25.临时获取root的权限 sudo
[hadoop@hadoop01 ~]$ rz
-bash: cd: /root/ruoze/6/: Permission denied
[hadoop@hadoop01 ~]$
[hadoop@hadoop01 ~]$ sudo rz
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
将一个用户添加到/etc/sudoers文件然后无密码
[root@hadoop01 ~]$ vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(root) NOPASSWD:ALL
[nemo@@hadoop01 ~]$ ls -l /root
ls: cannot open directory /root: Permission denied
[nemo@hadoop01 ~]$
[nemo@hadoop01 ~]$ sudo ls -l /root
total 108
-rw-r--r--. 1 root root 0 May 2 21:12 20180502.log
-rw-------. 1 root root 1382 Apr 28 05:21 anaconda-ks.cfg
drwxr-xr-x. 3 root root 4096 Apr 27 22:37 Desktop
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Documents
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Downloads
-rw-r--r--. 1 root root 49565 Apr 28 05:20 install.log
-rw-r--r--. 1 root root 10033 Apr 28 05:16 install.log.syslog
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Music
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Pictures
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Public
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Templates
drwxr-xr-x. 2 root root 4096 Apr 27 21:40 Videos
26.进程
查看
[nemo@hadoop01 ~] ps -ef | grep tail
root 24215 2254 0 21:29 pts/1 00:00:00 tail -f 20180502.log
root 26027 2254 0 21:32 pts/1 00:00:00 tail -F 20180502.log
root 26034 2254 0 21:35 pts/1 00:00:00 tail -F 20180502.log
root 26049 2254 0 21:37 pts/1 00:00:00 tail -F 20180502.log
第二列是pid
kill -9 24215
杀死关于tail命令的所有进程之前,ps -ef|grep tail查看确认清楚
kill -9 26027 26034 26049
kill -9 $(pgrep -f tail)
27.端口号
[nemo@hadoop01 ~]$ ps -ef|grep ssh
root 989 1 0 20:34 ? 00:00:00 /usr/sbin/sshd -D
root 1824 989 0 20:35 ? 00:00:00 sshd: root@pts/0
root 2141 989 0 21:21 ? 00:00:01 sshd: root@pts/1
nemo 2260 2238 0 21:29 pts/1 00:00:00 grep --color=auto ssh
[root@hadoop01 ~]# netstat -nlp|grep 1432
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1432/sshd
tcp 0 0 :::22 :::* LISTEN 1432/sshd
打开某个xxx服务的web界面: http://ip:端口/
ifconfig
ps -ef|grep xxx -->pid
netstat -nlp|grep pid -->port
netstat -nlp|grep xxx -->port
28.权限
[root@hadoop01 ~]# ll
总用量 12
drwxr-xr-x. 4 root root 24 6月 2 14:17 1
drwxr-xr-x. 2 root root 6 6月 2 14:06 5
drwxr-xr-x. 2 root root 6 6月 2 14:06 6
drwxr-xr-x. 2 root root 38 6月 2 14:15 7
-rwxr-xr-x. 1 root root 29 6月 9 04:42 a.sh
drwxr-xr-x. 2 root root 6 6月 2 14:04 gordon
-rw-r--r--. 1 root root 111 6月 2 18:11 gordon.tar.gz
-rw-r--r--. 1 root root 204 6月 2 14:33 log2.log
-rw-r--r--. 1 root root 0 6月 2 17:47 logs2.log
读: r 4
写: w 2
执行: x 1 shell脚本
无权限:-
第一列 drwxr-xr-x
第一个: d文件夹 -文件 l连接
rwx r-x r-x: 三组
第一组: rwx 7 代表root用户对这个文件或文件夹的权限
第二组: r-x 5 代表root用户组的所有用户对这个文件或文件夹的权限
第三组: r-x 5 代表其他组的所有用户对这个文件或文件夹的权限
第三列: 所属的用户root
第四列:所属的组root
Permission denied hadoop
修改文件和文件夹的权限
chmod 777 xxx.log
chmod -R 755 xxxdir
chmod -R 755 xxxdir/*
修改文件和文件夹的所属的用户和用户组
chown nemo:nemo xxx.log
chown -R nemo:nemo xxxdir
chown -R nemo:nemo xxxdir/*
xxx服务 安装目录的 xxxuser:xxxuser
可执行: 针对于shell脚本
chmod 764 date.sh 只对所属的用户
chmod +x date.sh 所有的用户
29.yum
yum --help 命令帮助格式
yum -y install httpd
[root@hadoop01 ~]# netstat -nlp|grep 2525
tcp 0 0 :::80 :::* LISTEN 2525/httpd
:::80
127.0.0.1:80
0.0.0.0:80
192.168.137.251:80
timeout 去查看服务的端口号对应的ip
ping 192.168.137.251
[root@hadoop01 ~]# yum install telnet
https://jingyan.baidu.com/article/95c9d20d96ba4aec4f756154.html
[root@hadoop01 ~]# which telnet
/usr/bin/telnet
[root@hadoop01 ~]# telnet 192.168.137.251 80
Trying 192.168.137.251…
Connected to 192.168.137.251.
Escape character is '^]'.
^Z^X^C^Z
Connection closed by foreign host.
[root@hadoop01 ~]# telnet 192.168.137.251 808
Trying 192.168.137.251…
telnet: connect to address 192.168.137.251: Connection refused
卸载:
[root@hadoop01 ~]# rpm -qa |grep http
httpd-tools-2.2.15-60.el6.centos.6.x86_64
httpd-2.2.15-60.el6.centos.6.x86_64
[root@hadoop01 ~]# rpm --nodeps -e httpd-2.2.15-60.el6.centos.6.x86_64
拓展: CentOS6.x使用163和epel yum源的选择
http://blog.itpub.net/30089851/viewspace-2130239/
30.找命令或者shell脚本
[root@hadoop01 ~]# which java
/usr/bin/java
[root@hadoop01 ~]# locate java
31.搜索
find / -name '*abc*' 全文
find /tmp -name '*abc*' 指定目录
find ./ -name '*hadoop*' 当前目录
32.vi
vi xxx.log
i键--》编辑模式,增加删除修改文件内容
ecs键--》命令模式
再按shift+冒号键--》尾行模式 ,按w,q键 保存退出
命令模式: i键进入编辑 或者 shift+: 进入尾行模式
gg 第一行的第一个字符
G 最后一行的第一个字符
shift +$ 行尾
dd 删除当前行
dG 删除光标以下的所有行
ndd 删除光标以下的n行
场景: 清空一个文件
echo '' > xxx.log --清空有可能清不干净
cat /dev/null > xxx.log --清空为0字节 建议使用。
vi: 1.gg
2.dG
编辑模式: esc退出到命令模式
尾行模式:
:q 退出
:q! 强制退出
:wq 保存退出
:wq! 强制保持退出
:/内容 n向下 N向上
行号
:set nu
:set nonu
跳转第N行
:n
33.查看硬盘 内存 系统情况
df -h
free -m
Top
34.压缩 tar
Examples:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -tvf archive.tar # List all files in archive.tar verbosely.
tar -xf archive.tar # Extract all files from archive.tar.
[root@hadoop01 ~]# tar -czf gordon.tar.gz gordon/* 压缩
[root@hadoop01 ~]# tar -xzvf gordon.tar.gz 解压
35.压缩 zip
zip -r gordon.zip gordon/*
unzip gordon.zip
******************************************************************
36.rz sz 用于linux和windows之间传输文件
yum install lszrz
rz: window-->linux
sz: linux-->window
rz
sz gordon.log
37.作业调度
crontab
-e (edit user's crontab) 编辑
-l (list user's crontab) 查看
[root@hadoop01 ~]# crontab -e
* * * * * /root/date.sh >> /tmp/date.log
格式: * * * * * 命令
每1分钟
5月6号 14:37
37 14 06 05 *
第1个: 分 * 或者 */1 表示每分钟
第2个: 小时
第3个: 日
第4个: 月
第5个: 周
每10秒:
休眠sleep 10s
[root@hadoop01 ~]# vi date.sh
!/bin/bash
for((i=1;i<=6;i++));
do
date
sleep 10s
done
[root@hadoop01 ~]# crontab -e
* * * * * /root/date.sh >> /tmp/date.log
38.绝对路径和相对路径
cd /root/nemo
cd nemo
./nemo
39.后台执行命令 不交互
./date.sh &
nohup ./date.sh
生产:
==> nohup ./date.sh &
nohup ./date.sh > /tmp/date.log 2>&1 &
screen 多人合作 后台会话
[root@hadoop01 ~]# yum install screen
-S sockname 创建一个会话
-r 进入一个detached会话
-list 查看会话列表
会话状态:
1.detached 无人
2.Attached 有人
退出会话,会话后台执行: crtl+a+d
[root@hadoop01 ~]# screen -S ruozedata
[root@hadoop01 ~]# screen -list
There is a screen on:
2380.ruozedata (Attached)
1 Socket in /var/run/screen/S-root.
[root@hadoop01 ~]# screen -r 2380
[root@hadoop01 ~]# screen -r ruozedata
40.下载软件: wget xxxx连接