目录
前言
实际生活中企业在进行大数据开发或分析时可能会存在多台主机,通过使用Linux系统进行连接,随后进行分布式的存储和计算,如 hive 就是一种结构化数据库,使用的类似SQL语法--Hive SQL,因此对于Linux系统应该要有一定的了解,本文总结一下Linux系统中的常用命令
一、Linux的基本目录
目录:
Linux基本目录基本不需要调整,关于Linux的基本目录结构介绍:
[root@hadoop-master /]# ls -l
总用量 24
lrwxrwxrwx. 1 root root 7 3月 21 2020 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 10月 30 2022 boot
drwxr-xr-x. 20 root root 3240 7月 1 2023 dev
drwxr-xr-x. 88 root root 8192 8月 6 13:37 etc
drwxr-xr-x. 6 root root 95 12月 12 2022 home
lrwxrwxrwx. 1 root root 7 3月 21 2020 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 3月 21 2020 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 media
drwxr-xr-x. 2 root root 6 4月 11 2018 mnt
drwxr-xr-x. 3 root root 26 10月 30 2022 mydir
drwxr-xr-x. 7 root root 181 7月 1 2021 opt
dr-xr-xr-x. 117 root root 0 7月 1 2023 proc
drwxr-xr-x. 3 root root 33 10月 30 2022 project1
dr-xr-x---. 7 root root 4096 12月 12 2022 root
drwxr-xr-x. 24 root root 660 8月 6 13:37 run
lrwxrwxrwx. 1 root root 8 3月 21 2020 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 4月 11 2018 srv
dr-xr-xr-x. 13 root root 0 7月 1 2023 sys
drwxrwxrwt. 13 root root 4096 8月 6 14:10 tmp
drwxr-xr-x. 15 root root 182 3月 25 2020 usr
drwxr-xr-x. 19 root root 267 3月 21 2020 var
/bin:基本系统程序
/boot:启动相关文件
/dev:设备相关文件
/etc:配置文件
/home:所有用户的个人主目录,里面会有:
-----/user1
-----/user2
/lib:库文件
/mnt:临时挂装其他文件系统
/proc:虚拟文件系统,其文件存放在内存非磁盘
/root:超级用户主目录
/sbin:系统管理员所使用的可执行文件
/tmp:程序允许时的临时信息
/usr:软件包程序、系统源代码等
/var:大小经常变化的文件,如日志文件等
/lost+found:系统发生故障时,存放找不到正确储存位置的文件
前缀:
此处已配置好然后使用了 xshell 进行连接,可见如下前缀
[root@hadoop-master ~]#
- root:用户名
- hadoop-master:计算机名称
- ~:当前工作目录的最后一个目录
常用的目录:
- /是根目录
- ~是超级管理员root用户的目录
- ./当前目录
- ../是上级目录
二、Linux基本命令
文件相关
对多个文件进行操作可以用空格隔开
1.pwd:
查看当前目录(print work directory)
[root@hadoop-master home]# pwd
/home
2.ls [option] [file]:
查看指定目录下的对应内容(目录或文件)
参数:
- -a:包括隐藏的文件
- -l:列出详细信息
[root@hadoop-master home]# ls -al
总用量 36
drwxr-xr-x. 6 root root 95 12月 12 2022 .
dr-xr-xr-x. 19 root root 253 10月 30 2022 ..
drwx------. 2 hue hue 62 3月 30 2020 hue
drwxr-xr-x. 4 root root 95 7月 1 2021 java
-rw-------. 1 root root 13738 4月 8 2020 nohup.out
-rw-r--r--. 1 root root 18487 3月 30 2020 QueryResult.java
drwxr-xr-x. 2 root root 110 12月 12 2022 steven
drwx------. 2 zxd zxd 62 12月 12 2022 zxd
3.cd [xxx]:
改变当前目录到xxx
其中xxx可以是绝对或相对路径
绝对路径:路径全称
相对路径:可以结合以下符号使用
- cd ~:自己的home directory或根目录
- .:目前所在目录
- cd ..:当前目录的上一级目录
- cd/:返回系统根目录
4.mkdir [option] directory:
创建新的目录directory,默认在当前目录创建
参数:
- -p :创建多级目录
[root@hadoop-master home]#mkdir -p dir1/dir2/dir3
5.rmdir [option] directory:
删除目录,多个目录可使用空格隔开
参数:
- -p:删除目录及其祖先目录,若有非空目录(有其他目录或者文件)则保留
rm
remove,删除当前文件夹下的文件/目录(删除文件夹需要加参数)
假设一个目录下文件夹:
[root@hadoop-master dir3]# ls
2 myfile myfile2
在/home删除:
[root@hadoop-master home]# ls
hue java nohup.out QueryResult.java steven zxd
[root@hadoop-master home]# rm zxd
rm: 无法删除"zxd": 是一个目录
[root@hadoop-master home]# rm -r zxd
rm:是否进入目录"zxd"? y
rm:是否删除普通文件 "zxd/.bash_logout"?y
rm:是否删除普通文件 "zxd/.bash_profile"?
rm:是否删除普通文件 "zxd/.bashrc"?y
rm:是否进入目录"zxd/dir1"? y
rm:是否进入目录"zxd/dir1/dir2"? y
rm:是否进入目录"zxd/dir1/dir2/dir3"? y
rm:是否删除目录 "zxd/dir1/dir2/dir3/myfile"?y
rm:是否删除目录 "zxd/dir1/dir2/dir3/2"?y
rm:是否删除目录 "zxd/dir1/dir2/dir3/myfile2"?y
rm:是否删除目录 "zxd/dir1/dir2/dir3"?y
rm:是否删除目录 "zxd/dir1/dir2"?y
rm:是否删除目录 "zxd/dir1"?y
rm:是否删除目录 "zxd"?y
rm: 无法删除"zxd": 目录非空
参数:
- -r:递归删除目录下的全部文件和目录(删除时会逐一询问y or n)
- -f:强制直接删除,无需逐一确认
6.touch file:
创建新文件,如:touch /tmp/zxd.c
若 touch 了一个已经存在的文件或目录,会修改文件或目录属性中的更新时间。
7.cp:
复制文件或文件夹
示例: cp file1 file1.bk 将file1文件复制一份,命名为file1.bak
参数:
- -r:复制非空目录需要带该参数,递归复制
示例: cp -r dir1 dir2 复制dir1目录为dir2目录
如下:里面的文件和文件夹会一起被复制
[root@hadoop-master /]# ls
mydir
[root@hadoop-master /]# cp -r mydir mydir2
[root@hadoop-master /]# ls
mydir mydir2
注意:
①示例dir2目录已存在时,dir1复制为dir2/dir1
②cp通常在修改文件时做备份使用。
③cp到目标目录不写文件名,默认为原文件名。
④可复制多个文件到另一个目录。
8.mv:
move,可用于移动或重命名
示例:
mv file1 dir1 将file1移动到当前dir1目录下
mv file1 file2 将file1文件更名为file2
mv dir1 dir2 更名dir1目录为dir2目录,dir2目录若已存在,dir1移动到dir2目录下
注:
①mv和cp的不同,cp是复制,mv是剪切。
②mv操作目录时不需要参数-r
9.tar
原意 Tape Archive :磁带归档
示例:
- tar -cvf zigoo.tar a b c A B C:将a、b、c、A、B、C文件或目录打包到zigoo.tar文件中
- tar -xvf zigoo.tar 解开zigoo.tar包
常用参数:
- -c:create创建包文件
- -x:extract提出包文件
- -v:verbose(啰嗦)详细显示处理过程
- -f:file指定文件
- -z:gzip压缩
注意事项: 记住常用打包 -cvf 和解压参数 -xvf 。
文件a如下,b、c对应:
a1
a2
a3
[root@hadoop-master zxd]# tar -cvf zxd2 a b c
a
b
c
[root@hadoop-master zxd]# ls
a b c zxd2
[root@hadoop-master zxd]# vi zxd2
打包后进入编辑变成了以下界面,好像包括了文件本身的信息也会被一起打包(求解释?):
10.gzip/gunzip
原意:
GNU ,GNU是个组织,开发了很多UNIX工具,zip:压缩文件的一种格式,上述文件打包后可以对包进行压缩,或解压缩
示例:
- gzip zigoo.tar 将zigoo.tar包进行压缩
- gunzip zigoo.tar.gz 将zigoo.tar.gz进行解压
参数:
- -k 保留原文件,不常用
- 数字 1-9的数字,数字越大压缩比越大,速度也越慢,默认数字-6,不常用
参数示例:
- gzip -k zigoo.tar 压缩zigoo.tar时保留原文件
- gzip -9 zigoo.tar --best的级别压缩zigoo.tar文件
注意事项:
①使用root切换到其他用户时不需要输入密码。
②su后未加用户名,则默认切换到root用户。
搜索查找类
1.find [范围] [选项]
查找指定目录下递归遍历所有子目录,不指定范围默认当前目录开始,
参数:
- -name:指定字符串名,不指定的话会默认进行模糊搜索
- -i 不区分大小写,放在参数name前
- 其他还可以-user、-size,按照用户和文件大小查找
示例:
find ./ -name “zigoo”:当前目录下开始查找名为zigoo的文件或目录
find / -iname ‘zigoo’:全盘搜索不区分大小写名为zigoo的文件或目录
[root@hadoop-master /]# find / -name sqoop_passwd
/mydir/sqoop_passwd
/mydir2/sqoop_passwd
[root@hadoop-master ~]# find /home/hue
/home/hue
/home/hue/.bash_logout
/home/hue/.bash_profile
/home/hue/.bashrc
注:
查找的字符串用双引号“”或单引号’’引起来,避免出错。此外,locate 命令也可用来查看对应文件的位置,主要是效率和实现方式有所区别。
2.locate
利用系统中事先建好的文件名和路径的locate数据库实现定位文件,查询时要先使用updatedb更新一下对应关系
3.grep过滤查找及"|"管道符
语法:
grep [选项] [查找内容] [源文件]
参数:
- -n:显示匹配行及行号
- -i:不区分大小写
即在对应文件里面查找对应的内容,会把一行显示出来:
管道符"|",表示将前一个命令的处理结果输出传递给后面的命令处理
例:
该文件夹下有这样一些文件
将ls -l的结果通过"|"传递给后面,查找带有.java后缀的文件
用户相关:
Linux作为多任务多用户分时操作系统,可能很多人同时使用机器的情况,因此需要对用户进行账号密码权限及系统资源方面的管理,其中,超级管理员的目录是/root,其他的用户在/home下面有带着自己名字的主目录
0.查看
我在主目录下查看某用户存不存在:
[root@hadoop-master ~]# id zxd
uid=1001(zxd) gid=1001(zxd) 组=1001(zxd)
我想看目前创建了那些用户,可以访问以下文件:
[root@hadoop-master ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
mysql:x:997:995:MySQL server:/var/lib/mysql:/bin/bash
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
hue:x:1000:1000::/home/hue:/bin/bash
zxd:x:1001:1001::/home/zxd:/bin/bash
1.adduser、useradd
增加新用户,如:
[root@hadoop-master ~]# adduser zxd -g users -d /home/zxd
参数:
- -g:指定用户组。普通用户通常加入users组中。如果不指定,默认会增加到一个和用户名同名的用户组。
- -d:指定用户的主目录。通常目录名和用户名相同,方便识别
补充:
①需要使用系统管理员root来增加。
②增加的用户同时会给此用户在/home下创建一个同名主目录。
③增加的用户可在/etc/passwd中查看。用户ID在500以上。
[root@hadoop-master home]# ls
hue java nohup.out QueryResult.java steven zxd
区别:
参考文章
【信创】adduser与useradd的区别 _ 统信 _ 麒麟 _ 中科方德_麒麟系统 useradd-CSDN博客
2.userdel
用户删除
示例: userdel xd :删除掉用户xd
参数:
- -r:删除用户同时删除相关的文件和文件内容,如主目录和邮箱文件,/etc/passwd和/etc/group文件中的内容。
参数示例: userdel -r zigoo
注意事项:①需要使用系统管理员root删除用户。
3.passwd
设置密码
[root@hadoop-master home]# passwd zxd
更改用户 zxd 的密码 。
新的 密码:
①需要使用系统管理员root来给新用户设置密码。
②passwd+用户名,若后面不增加用户名,表示给自己修改密码。
③root用户修改任何用户密码不需要确认原始密码,其他用户修改密码则先要确认原始密码。
4.groupadd
创建用户组
5.su
原意 Switch User:转变用户
示例: su zxd 切换到登录用户 zxd
常用参数: - 只带参数符号,不带字母,表示切换环境变量,切换到整个用户的环境。
参数示例: su - zigoo
注意事项:
①使用root切换到其他用户时不需要输入密码。
②su后未加用户名,则默认切换到root用户。
[root@hadoop-master home]# su - zxd
上一次登录:一 9月 23 14:08:39 CST 2024pts/0 上
-bash-4.2$ pwd
/home/zxd
Linux中用户切换是层层嵌套的,可以使用exit退出
[root@hadoop-master zxd]# su zxd
bash-4.2$ whoami
zxd
bash-4.2$ who am i
root pts/0 2024-10-17 08:45 (192.168.88.1)
6.sudo
待补充
bash-4.2$ cd /root
bash: cd: /root: 权限不够
系统、网络、进程等其他:
关于rpm:
原本为 RedHat Package Manager 即 RedHat 软件包管理工具,可以对软件进行操作
示例: rpm -i zigoo.rpm :安装名为 zigoo.rpm 的安装文件
常用参数:
- -i 安装(或--install)
- -e 清除(或--erase )
- -a 查询所有套件
- -q query询问模式,查询已安装的
参数示例:rpm -qa | grep php 查询所有php安装的程序
rpm -e jdk 删除掉所有jdk的rpm安装的程序
注意事项: ①使用root切换到其他用户时不需要输入密码。②su后未加用户名,则默认切换到root用户。
ps:
原意为 Process Status :进程状态查看各服务器下的进程
示例: ps -ef 查看所有进程
常用参数:-e 与 -A相同,显示所有进程-f 显示UID、PPID等信息
常用组合参数: -ef 或 -aux
参数示例:ps -ef | grep wechat 搜索包含wechat的进程,竖杠“|”管道符表示上个命令的输出,做为下个命令的输入。
[root@hadoop-master /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:42 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 12:42 ? 00:00:00 [kthreadd]
root 4 2 0 12:42 ? 00:00:00 [kworker/0:0H]
root 5 2 0 12:42 ? 00:00:00 [kworker/u256:0]
root 6 2 0 12:42 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 12:42 ? 00:00:00 [migration/0]
root 8 2 0 12:42 ? 00:00:00 [rcu_bh]
root 9 2 0 12:42 ? 00:00:00 [rcu_sched]
root 10 2 0 12:42 ? 00:00:00 [lru-add-drain]
kill:
上面的ps可以看到系统有哪些进程,使用 kill 可以终止进程
参数:
- -9:强制终止指定进程
ln [-s]:硬链接与软链接
sed与awk
clear:
清屏,将上面的命令和结果全部清除
man:
类似帮助,查看帮助或者命令的用法,如man pwd:查看pwd的用法
df/du:
查看磁盘情况,原意为 Disk Free :空余硬盘、Disk Usage:磁盘使用
示例:
- df :显示磁盘分区上使用情况
- du :显示本目录下所有文件的大小
常用参数:
- -h :最优查看,方便阅读
- du -s :summarize:仅显示总计(只有du能用)
- du -sh:最优显示当前目录使用总计
[root@hadoop-master home]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 0 1.4G 0% /dev/shm
tmpfs 1.4G 9.5M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 4.6G 13G 27% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 283M 0 283M 0% /run/user/0
[root@hadoop-master home]# du -sh
448M
[root@hadoop-master home]# du -h
12K ./java/jdk1.7.0_79/jre/plugin/desktop
12K ./java/jdk1.7.0_79/jre/plugin
544K ./java/jdk1.7.0_79/jre/lib/oblique-fonts
40K ./java/jdk1.7.0_79/jre/lib/jfr
420K ./java/jdk1.7.0_79/jre/lib/amd64/xawt
40K ./java/jdk1.7.0_79/jre/lib/amd64/headless
104K ./java/jdk1.7.0_79/jre/lib/amd64/jli
15M ./java/jdk1.7.0_79/jre/lib/amd64/server
...
top:
动态查看系统资源
原意: Linux下性能分析工具,查看系统运行情况,如有什么进程、CPU情况、归属用户等等
常用参数: 无
注意事项:
①默认刷新间隔5s。
②进入互动式界面后,可以使用交互命令,如u=user,查看指定用户使用资源情况。
③退出按 q 键或按强制退出ctrl+c组合键。
[root@hadoop-master home]# top
top - 15:36:29 up 2:53, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 111 total, 2 running, 109 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 2895268 total, 2326820 free, 243764 used, 324684 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 2451060 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
755 root 20 0 305396 6540 5148 S 1.0 0.2 0:38.21 vmtoolsd
3115 root 20 0 162016 2228 1548 R 0.7 0.1 0:00.51 top
327 root 20 0 0 0 0 S 0.3 0.0 0:00.27 kworker/u256:3
1448 mysql 20 0 481764 50936 3740 S 0.3 1.8 0:19.75 mysqld
3095 root 20 0 0 0 0 S 0.3 0.0 0:00.25 kworker/0:1
1 root 20 0 127968 6540 4104 S 0.0 0.2 0:03.04 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 0:00.95 kworker/u256:0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.78 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 R 0.0 0.0 0:01.39 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.30 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.06 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 watchdogd
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
31 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
32 root 39 19 0 0 0 S 0.0 0.0 0:00.34 khugepaged
33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
41 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
43 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd
netstat:打印各种网络相关信息
ifconfig:查看和临时配置网络参数
hostname:查看出本机的机器名
uname:查看操作系统信息,加 -r 参数可以显示发行编号
[root@hadoop-master home]# hostname
hadoop-master
[root@hadoop-master home]# uname
Linux
注:
①修改主机名可同时修改/etc/hosts和/etc/sysconfig/network中的主机名称。