1、登录Linux后的显示
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]#
- root:当前登陆的用户
- iZbp1dnzb8iugr0v8rp5k9Z:机器的名称
- ~:当前用户的家目录
2、Linux文件操作
2.1、hostname
- hostnamectl:查看hostname
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]# hostnamectl
Static hostname: iZbp1dnzb8iugr0v8rp5k9Z
Icon name: computer-vm
Chassis: vm
Machine ID: 20190711105006363114529432776998
Boot ID: e603c0d3cfcc42eba8f80adf2ee1e9f7
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.21.3.el7.x86_64
Architecture: x86-64
- hostnamectl –help:–help查看命令帮忙
- hostnamectl [OPTIONS…] COMMAND …
常用用法:hostnamectl命令,option表明可选参数,…表明可以跟多个参数,COMMAND 表明可以跟某个命令,…表明可以有多个命令
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]# hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
-h --help Show this help
--version Show package version
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname
Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
set-deployment NAME Set deployment environment for host
set-location NAME Set location for host
- hostnamectl status:查看hostname,可以写,也可以不写status
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]# hostnamectl status
Static hostname: iZbp1dnzb8iugr0v8rp5k9Z
Icon name: computer-vm
Chassis: vm
Machine ID: 20190711105006363114529432776998
Boot ID: e603c0d3cfcc42eba8f80adf2ee1e9f7
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.21.3.el7.x86_64
Architecture: x86-64
- hostnamectl set-hostname XXXX : 设置新的hostname为XXX【再次登录的时候,就能看得新的hostname】
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]# hostnamectl set-hostname maggieData
[root@iZbp1dnzb8iugr0v8rp5k9Z ~]# hostnamectl
Static hostname: maggiedata
Pretty hostname: maggieData
Icon name: computer-vm
Chassis: vm
Machine ID: 20190711105006363114529432776998
Boot ID: e603c0d3cfcc42eba8f80adf2ee1e9f7
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.21.3.el7.x86_64
Architecture: x86-64
2.2、pwd:查看当前光标所在的目录
[root@maggiedata ~]# pwd
/root 【当前光标所在目录】
2.3、cd:进入目录
-
cd /home:切换到home目录
==1. root用户的家目录:/root(规定)==
==2. 其他用户xxx的家目录:/home/xxx(默认)== -
回到家目录的3种方法:
cd /home 或者 cd /root
cd
cd ~
[root@maggiedata ~]# cd /home 【回到home目录】
[root@maggiedata home]# cd /root 【回到root的家目录】
[root@maggiedata ~]# cd /bin/ 【切换到bin目录】
[root@maggiedata bin]# cd 【切换当前用户的家目录】
[root@maggiedata ~]#
- 回到上次的目录:
cd –
cd .. :回退上一层目录
cd ../.. :回退上两层目录
[root@maggiedata ~]# cd - 【回退到上一次目录】
/bin
[root@maggiedata bin]# cd .. 【回退到上一层级目录】
[root@maggiedata /]# cd 【切换当前用户的家目录】
[root@maggiedata ~]#
2.4、Linux的目录/路径
- 绝对路径:/根目录(以根目录开始)
- 相对路径:不以根目录开始,以当前光标所在的目录为开始
cd /usr/local/bin(绝对路径)
cd bin(相对路径,在local文件夹下)
cd ./bin(相对路径,在local文件夹下)
[root@maggiedata ~]# cd /usr/local/bin
[root@maggiedata bin]# pwd
/usr/local/bin
[root@maggiedata bin]# cd ..
[root@maggiedata local]# cd bin/
[root@maggiedata bin]# pwd
/usr/local/bin
[root@maggiedata bin]# cd ..
[root@maggiedata local]# cd ./bin/
[root@maggiedata bin]#
2.5、clear:清空当前屏幕
2.6、ls和ll命令
- ls:查看当前光标所在目录有哪些文件和文件夹
- ls -l:查看文件夹(包括所属权限,所属用户组,所属用户,文件大小,文件时间)
- ls -l 等价于 ll 【在alias中查看设置的 】
- ll -a:查看当前文件,文件夹(包括隐藏文件和文件夹),==隐藏文件是以.开头==【-a可以展示隐藏文件】
[root@maggiedata ~]# ll -a
total 56
-rw-r--r-- 1 root root 28 Sep 21 22:53 1.log
-rw------- 1 root root 484 Sep 22 21:16 .bash_history
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
drwx------ 2 root root 4096 Jul 11 2019 .ssh
一般的隐藏文件:
.ssh 文件夹
.bash_profile 环境变量文件【废弃】
.bashrc 环境变量文件 【个人环境变量,推荐使用】
- ll -h:文件的大小
- ls -l -rt:文件按照时间大小排序【等价于:ls -l -rt,也等于ll -rt】
[root@maggiedata /]# ll
total 6
dr-xr-xr-x. 5 root root 4096 Jul 11 2019 boot
drwx------. 2 root root 16384 Jul 11 2019 lost+found
lrwxrwxrwx. 1 root root 8 Jul 11 2019 sbin -> usr/sbin
drwxr-xr-x. 19 root root 4096 Jul 11 2019 var
以drwxr-xr-x. 19 root root 4096 Jul 11 2019 var为例进行分析:
drwxr-xr-x.:文件夹或者文件的权限,该权限分为4个部分d、rwx、r-x、r-x。
d:表明文件类型:
【-:普通文件,d:目录文件,l:链接文件(相当于windows中的快捷方式),b:设备文件,c:字符设备文件,p:管道文件】
rwx:表明文件所有者的对该文件所拥有的权限;
r-x:表明文件所属组对该文件所拥有的权限;
r-x:表明其他用户对该文件所拥有的权限。
读(read),写(write),执行r(recute)简写即为(r,w,x),亦可用数字来(4,2,1)表明
root:文件或者文件夹的所属用户
root:文件或者文件夹的所属用户组
4096:文件的大小是准确的,如果是文件夹的大小,不准确
Jul 11 2019:创建修改时间戳
var:文件或者文件夹的名称
2.7、alias:别名
- 下面是系统中自带的alias
[root@maggiedata /]# alias
alias cp= cp -i
alias egrep= egrep --color=auto
alias fgrep= fgrep --color=auto
alias grep= grep --color=auto
alias l.= ls -d .* --color=auto
alias ll= ls -l --color=auto
alias ls= ls --color=auto
alias mv= mv -i
alias rm= rm -i
alias which= alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde
- 设置自定义的alias
[root@maggiedata ~]# echo "www.baidu.com" > 1.log
[root@maggiedata ~]# alias clog= cat /root/1.log 【临时生效,仅限当前窗口】
[root@maggiedata ~]# clog 【相当于执行了cat /root/1.log命令】
www.baidu.com
2.8、如何查询Linux命令协助
- ls –help
Usage:ls [option]… [file]…
常用用法:ls命令,option表明可选参数,…表明可以跟多个参数,file表明可以跟某个文件名(如果不跟文件名,则查看全部文件)
列如ls -l -a 等价于ls -la
2.9、创建文件:touch、==vi==、echo
- touch a.log 创建空的文件a.log
- ==vi b.log==
1)输入vi b.log回车进入命令行模式;
2)按i键,进入编辑模式;
3)输入内容,按ESC键退出编辑,回到命令行模式
4)按shift+:键,进入尾行模式;
5)按wq保存并退出; - echo “www.baidu.com” >> c.log 在空文件中输入一句话,>>表明追加一句话到某个文件
- cat b.log:查看b.log文件内容
[root@maggiedata ~]# touch a.log
[root@maggiedata ccc]# cat a.log
[root@maggiedata ccc]# vi b.log
[root@maggiedata ccc]# cat b.log
123456
[root@maggiedata ccc]# echo "www.baidu.com" >> c.log
[root@maggiedata ccc]# ll
-rw-r--r-- 1 root root 0 Sep 23 00:07 a.log
-rw-r--r-- 1 root root 4 Sep 23 00:14 b.log
-rw-r--r-- 1 root root 14 Sep 23 00:16 c.log
[root@maggiedata ccc]# cat c.log
www.baidu.com
2.10、编辑命令:==vi==
- 编辑命令:vi的编辑和保存方式
1)输入vi b.log回车进入命令行模式;
2)按i键,进入编辑模式;
3)输入内容,按ESC键退出编辑,回到命令行模式
4)按shift+:键,进入尾行模式;
5)按wq保存并退出; - dd :删除当前行
- dG:删除光标所在行和以下行
- ndd:删除光标所在行和以下n-1行,n是阿拉伯数字(如:3dd)
- gg:跳转到第一行的首字母
- G:跳转到最后一行的首字母
- shift+$:行尾
- 0:行首
清空文件【高危动作,尤其是在生产上】:
gg + dG
echo “” > a.log 【此种方法慎用,里面有个空的字节,不是真正的0字节】
cat /dev/null > a.log 把一个文件设置为空
提议:cp a.log a.log20220925,拷贝一份后,再清空文件。
尾行命令:
- set nu 【设置行号】
- set nonu 【撤销行号】
- /关键词 搜索 按n向下 按N向上
2.11、清空文件的几种方式【高危命令】
- touch rz.log 如何创建一个空文件
- echo “” > rz.log1 【此种方法慎用,里面有个空的字节,不是真正的零字节】
- cat /dev/null > ruoze.log20191113 把一个文件设置为空
提议:清空任何文件之前,先拷贝一份,再清空文件。
2.12、创建文件夹:mkdir
- mkdir aaa:创建aaa文件夹【创建单个文件夹】
- mkdir -p bbb/ccc:级联创建bbb和ccc文件夹【-p:级联创建】
- mkdir a b c:同一级目录下创建a,b,c这3个文件夹【空格,并行创建】
[root@maggiedata ~]# mkdir aaa
[root@maggiedata ~]# mkdir -p bbb/ccc
[root@maggiedata ~]# ll
drwxr-xr-x 2 root root 4096 Sep 23 00:02 aaa
drwxr-xr-x 3 root root 4096 Sep 23 00:02 bbb
[root@maggiedata ~]# cd bbb/
[root@maggiedata bbb]# ll
drwxr-xr-x 2 root root 4096 Sep 23 00:02 ccc
[root@maggiedata bbb]# mkdir a b c
[root@maggiedata bbb]# ll
drwxr-xr-x 2 root root 4096 Sep 23 00:03 a
drwxr-xr-x 2 root root 4096 Sep 23 00:03 b
drwxr-xr-x 2 root root 4096 Sep 23 00:03 c
drwxr-xr-x 2 root root 4096 Sep 23 00:02 ccc
> --help参数
[root@maggiedata bbb]# mkdir --help
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
For complete documentation, run: info coreutils mkdir invocation
2.13、mv:移动;cp:拷贝
- mv移动方法(只有一份文件)
mv a.log c:将a.log文件移动到c文件夹
mv a.log b/a.log:和上面方法一样
mv a.log a/b.log:移动文件并重命名文件名称
mv a.log d.log:当前文件夹下重命名文件
mv a b:移动a文件夹到b文件夹下。
- cp 拷贝(原文件不动,新增一份文件)
cp a.log b.log:新增了一份b.log的文件
cp -r a 1:在1文件夹下面,拷贝a文件夹【拷贝文件夹需要加-r参数】
2.14、文件夹和文件的操作对比
| 文件夹 | 文件 | |
|---|---|---|
| 增 | mkdir | touch、vi、echo |
| 删 | rm -rf | rm -r |
| 改 | mv、cp | vi |
| 查 | ls、cd | cat、more、less、tail -f |
2.15、查看文件内容:cat、less、more
- cat :文件内容一下子全部打印到会话窗口。【适用于小文件,文件内容较少的文件查看】
[root@maggiedata a]# cat b.log
[root@maggiedata a]# echo "12345">>b.log
[root@maggiedata a]# cat b.log
12345
-
more :文件内容一页一页的往下翻,按空格键往下,回退不了,按q退出【适用于小文件,文件内容稍微较多的时候】
-
less :文件内容【往下】【往上】按上下箭头的按键 按q键退出
配置文件/内容较少可以使用这些命令:cat more less
-
cat xxx.log | grep -A 10 ERROR 后10行
-
cat xxx.log | grep -B 20 ERROR 前20行
-
cat xxx.log | grep -C 30 ERROR 前后各30行 常常用 迅速定位ERROR上下文
-
cat xxx.log | grep -C 30 ERROR > error.log 新建/覆盖 (如果文件存在就覆盖,如果文件不存在,就新建error.log文件)
-
cat xxx.log | grep -C 30 ERROR >> error.log 追加到error.log文件
2.16、tail:实时查看文件
- tail -f xxx.log
-
tail -F xxx.log 【-F相当于:-f + retry】
flume exec source 切记使用 -F
- tail -300f messages 实时查看倒数300行文件
- tail -300F messages
> 不能这样写,写了后来就报这个错误:tail: option used in invalid context -- 3
2.17、上传下载文件命令
- yum install lrzsz:lrzsz上传下载命令,rz上传文件,sz下载文件
[root@maggiedata a]# yum install lrzsz
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
base | 3.6 kB 00:00
epel | 4.7 kB 00:00
extras | 2.9 kB 00:00
updates | 2.9 kB 00:00
(1/3): epel/x86_64/group_gz | 97 kB 00:00
(2/3): epel/x86_64/primary_db | 7.0 MB 00:00
(3/3): epel/x86_64/updateinfo | 1.0 MB 00:00
Package lrzsz-0.12.20-36.el7.x86_64 already installed and latest version
Nothing to do
2.18、echo:打印 $PATH:环境变量名称
- echo $PATH
[root@ruozedata001 ~]# echo $PATH
/usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
- echo “www.ruozedata.com”
[root@ruozedata001 ~]# echo "www.ruozedata.com"
www.ruozedata.com
- which ls
[root@ruozedata001 ~]# which ls
alias ls= ls --color=auto
/usr/bin/ls
[root@ruozedata001 ~]# which lsl
/usr/bin/which: no lsl in (/usr/java/jdk1.8.0_121/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
- PATH:不要随意去更改或者情况环境变量名称
[root@ruozedata001 ~]# PATH=
[root@ruozedata001 ~]# echo $PATH
[root@ruozedata001 ~]# which ls
alias ls= ls --color=auto
[root@ruozedata001 ~]# ls
-bash: ls: No such file or directory
[root@ruozedata001 ~]#
2.19、删除 rm【高危命令】
- 文件:
- touch a.log 【生成a.log的空文件】
- cat /dev/null > b.log 【清空b.log文件内容】
- vi命令【也会生成新的空文件】
- 文件夹:mkdir【生成空的文件夹】
- rm xxx.log:删除文件/文件夹【会有个提示确认】
- rm -f xxx.log: 强制删除文件/文件夹
- ==rm -rf a: 递归删除a文件夹【-r是递归的意思】==
【后来在shell脚本中,rm -rf 慎重使用,小心闯大祸,最好是使用之前添加判断】
2.20、history:查看历史执行的命令
- hisroty:【查看历史执行命令】
- man history:【查看history的协助文件】
- history -c:清空【清空历史执行的命令,但是如果跳板机和堡垒机不能清空】
- !2 : 2表明命令序号,可以执行历史指定的命令。
[root@maggiedata hadoop]# history 【查看历史执行命令】
[root@maggiedata hadoop]# man history 【查看history的协助文件】
[root@maggiedata hadoop]# history -c 【清空历史执行的命令,但是如果跳板机和堡垒机不能清空】
[root@maggiedata hadoop]# history
1 history
2.21、Linux下补全命令:TAB键
- 键盘tab 按一次, 是匹配只有1个, 会显示
- 键盘tab 按一次, 是匹配多个个, 不会显示–》再连续按2次tab 会打印出来你想要的所有
3、Linux用户 & 用户组命令
3.1、useradd hadoop(创建hadoop用户)
- useradd hadoop:创建用户hadoop, 创建用户组hadoop,创建用户所在的家目录/home/hadoop
- id hadoop: 查看用户的
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
[root@maggiedata ~]# useradd hadoop
[root@maggiedata ~]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
【用户名】 【用户主组】 【用户所在组】
- cat /etc/passwd:查看用户信息
- cat /etc/group:查看用户组信息
- groupadd maggie :增加用户组maggie组
/bin/bash 这个信息可能会变成/bin/nologin 或者 /bin/false 【后面这两个设置为无权限,无法通过su切换用户】
[root@maggiedata ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
。。。。。。
hadoop:x:1000:1000::/home/hadoop:/bin/bash
----------------------------------------------------
[root@maggiedata ~]# cat /etc/group
root:x:0:
。。。。。。
hadoop:x:1000:
- which useradd:查看useradd的命令在哪个路径下
[root@maggiedata ~]# which useradd 【查看useradd的命令在哪个路径下】
/usr/sbin/useradd
[root@maggiedata ~]# user 【按两次tab键,出现相对应的user命令】
useradd userdel usermod usernetctl users
3.2、usermod:修改用户
- usermod 去查看命令协助
【注意下面-g和-G的写法区别:】
- usermod -g bigdata ruoze:将ruoze用户的主组和用户所在组,都变成bigdata
- usermod -a -G bigdata ruozedata:在用户ruozedata后面 添加bigdata的用户组
[root@maggiedata ~]# id ruoze
uid=1003(ruoze) gid=1003(ruoze) groups=1003(ruoze)
[root@maggiedata ~]# usermod -g bigdata ruoze 【-g:替换缘由用户的用户组】
[root@maggiedata ~]# id ruoze
uid=1003(ruoze) gid=1001(bigdata) groups=1001(bigdata)
---------------------------------------------------------
[root@maggiedata ~]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop)
[root@maggiedata ~]# usermod -a -G bigdata hadoop 【-a:追加,-G:原用户组不动,追加新用户组】
[root@maggiedata ~]# id hadoop
uid=1000(hadoop) gid=1000(hadoop) groups=1000(hadoop),1001(bigdata)
3.3、userdel:删除用户
- userdel ruoze:删除ruoze用户
[root@maggiedata ~]# id ruoze
uid=1003(ruoze) gid=1001(bigdata) groups=1001(bigdata)
[root@maggiedata ~]# userdel ruoze
userdel: group ruoze not removed because it is not the primary group of user ruoze.
[root@maggiedata ~]# id ruoze
id: ruoze: no such user
[root@maggiedata ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
。。。。。。。
hadoop:x:1000:1000::/home/hadoop:/bin/bash
bigdata:x:1001:1001::/home/bigdata:/bin/bash
ruozedata:x:1004:1004::/home/ruozedata:/bin/bash
-------------------------------------------------------
[root@maggiedata ~]# useradd ruoze
useradd: group ruoze exists - if you want to add this user to that group, use -g.
[root@maggiedata ~]# useradd -g ruoze ruoze
useradd: warning: the home directory already exists. 【后来常常看得的提示】
Not copying any file from skel directory into it.
Creating mailbox file: File exists
3.4、切换用户su – hadoop & su hadoop 区别
- su – hadoop:切换成hadoop用户,同时路径默认切换成/home/hadoop
- su hadoop:切换成hadoop用户,不切换路径。
- 如果原来的路径在/root下,切换后,路径依旧在/root下
[root@maggiedata ~]# pwd
/root
[root@maggiedata ~]# su - hadoop 【切换成hadoop用户】
Last login: Sun Sep 25 16:29:12 CST 2022 on pts/1
[hadoop@maggiedata ~]$ pwd
/home/hadoop
--------------------------------------------------------------------------
[root@maggiedata ~]# pwd
/root
[root@maggiedata ~]# su hadoop 【切换成hadoop用户,切换后,路径不变】
[hadoop@maggiedata root]$ pwd
/root
3.5、全局环境变量&个人环境变量&环境变量生效source
- 全局:
- /etc/profile
- 个人:
- ~/.bash_profile
- ~/.bashrc 个人,不给其他人
- 生效文件:
- source xxxx
- . ~/.bashrc
- ==vi /etc/profile== :编辑全局环境变量
- ==source /etc/profile== : 生效环境变量
-------------------------------全局变量-------------------------------
[root@maggiedata ~]# vi /etc/profile
【在全局环境变量中添加了alias clog= cat /root/1.log 】
[root@maggiedata ~]# source /etc/profile 【生效环境变量】
[root@maggiedata ~]# clog
www.baidu.com
-----------------------全局配置后,切换用户也能生效------------------------
[root@maggiedata ~]# su - hadoop
[hadoop@maggiedata ~]$ clog
cat: /root/1.log: Permission denied 【可以执行clog权限,只不过无全权限访问log文件】
--------------------配置个人环境变量.bashhrc-------------------------------
[root@maggiedata ~]# vi .bashhrc 【编辑个人环境变量】
#env
alias h= cd /home/hadoop
[root@maggiedata ~]# source .bashhrc 【生效个人环境变量. .bashrc】
[root@maggiedata ~]# h 【如果切换用户,其他用户不能生效】
[root@maggiedata hadoop]# pwd
/home/hadoop
总结:【command not found可能出现的缘由】
1.没有部署安装包,部署了也没有配置环境变量;
2.习惯问题。当我们部署了一个软件,bin目录的可执行文件未生效,列如java,可以用which java去查看是否生效。
3.6、chown:改变用户:用户组
- ==chown hadoop:root a.log== 【给a.log文件设置为hadoop用户,root用户组】
3.7、chmod -R 755:给文件/文件夹授权
- ==chmod 600 a.log== 【给a.log文件授权,6:当前用户组拥有读写权限,0表明用户组和其他用户组无任何权限】
- ==chmod -R 600 文件夹/== 【-R主要是针对文件夹授权,一般需要写 /】
以drwxr-xr-x. 19 root root 4096 Jul 11 2019 var为例进行分析:
- drwxr-xr-x.:文件夹或者文件的权限,该权限分为4个部分d、rwx、r-x、r-x。
> d:表明文件类型:
【-:普通文件,d:目录文件,l:链接文件(相当于windows中的快捷方式),b:设备文件,c:字符设备文件,p:管道文件】
> rwx:表明文件所有者的对该文件所拥有的权限;
> r-x:表明文件所属组对该文件所拥有的权限;
> r-x:表明其他用户对该文件所拥有的权限。
读(read),写(write),执行r(recute)简写即为(r,w,x),亦可用数字来(4,2,1)表明
- root:文件或者文件夹的所属用户
- root:文件或者文件夹的所属用户组
- 4096:文件的大小是准确的,如果是文件夹的大小,不准确
- Jul 11 2019:创建修改时间戳
- var:文件或者文件夹的名称
--------------------------------------------------------------------------------------------------------------------
> - chmod -R 755:
该命令表明文件所有者有读写执行权限(4+2+1)、文件所属组有读执行权限(4+1)、其他人有读执行权限(4+1)。
-R 表明命令的可选项,请参考下面说明
-c : 若该文件权限的确 已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行一样的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
3.8、用户隐藏文件丢失处理
- cp /etc/skel/.* /home/demo/ 【复制隐藏文件,到demo用户的家目录,才能恢复样式】
[root@maggiedata ~]# mkdir /home/demo
[root@maggiedata ~]# useradd -d /home/demo demo
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@maggiedata ~]# su - demo
Last failed login: Tue Sep 13 08:14:56 CST 2022 from 192.46.237.92 on ssh:notty
There was 1 failed login attempt since the last successful login.
-bash-4.2$
-bash-4.2$
-bash-4.2$ 【样式丢失。个人配置文件丢失造成的】
-------------------------------------------------------------------------------
[root@maggiedata ~]# ll -a /home/demo/
total 8
drwxr-xr-x 2 root root 4096 Sep 25 19:17 .
drwxr-xr-x. 7 root root 4096 Sep 25 19:17 ..
[root@maggiedata ~]# cp /etc/skel/.* /home/demo/ 【解决样式丢失的问题】
cp: omitting directory ‘/etc/skel/.’
cp: omitting directory ‘/etc/skel/..’
[root@maggiedata ~]# ll -a /home/demo/
total 20
drwxr-xr-x 2 root root 4096 Sep 25 19:20 .
drwxr-xr-x. 7 root root 4096 Sep 25 19:17 ..
-rw-r--r-- 1 root root 18 Sep 25 19:20 .bash_logout 【3个隐藏文件拷贝后来,样式正常】
-rw-r--r-- 1 root root 193 Sep 25 19:20 .bash_profile
-rw-r--r-- 1 root root 231 Sep 25 19:20 .bashrc
3.9、sudo命令
- vi /etc/sudoers :在文件中给用户授权root权限
- 其他用户:sudo ll -a /root:其他用户就可以通过sudo执行root权限,且不不需要输入密码。
[root@maggiedata ~]# vi /etc/sudoers
root ALL=(ALL) ALL
demo ALL=(root) NOPASSWD:ALL 【仿造上面那句写的,NOPASSEWD表明不需要输入密码】
【按ESC,然后按shift+:进入命令行模式,按wq!保存退出】
-----------------------------------------------------------------------------------------------
[root@maggiedata ruoze]# su - demo 【切换到demo用户】
Last login: Sun Sep 25 19:38:18 CST 2022 on pts/0
[demo@maggiedata ~]$ sudo ls /root/ 【sudo命令,相当于demo账户给了root权限,赋予了sudo权限,且无密码认证】
1.log
4、Linux查询命令&安装命令
4.1、find:查找文件命令
- find / -name *.log : 从/根目录开始查询所有.log结尾的文件
[root@maggiedata ~]# find / -name *.log
/home/bigdata/a.log
。。。。。。
/var/log/boot.log
/root/1.log
4.2、which / whereis 查找文件
- which httpd 查看命令在哪个路径下,一般在$PATH下,按照目录一个个去找,找到了就不再往下去查找
- whereis httpd 【用的不多】
区别:which在
PATH下匹配httpd的所有路径;
[root@maggiedata ~]# which httpd
/sbin/httpd
[root@maggiedata ~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz
4.3、yum / rpm 安装软件
一种安装包 tar.gz 相当于 绿色版,解压 配置 直接运行
另外一种安装包 rpm(centos) 相当于 exe,下一步下一步下一步,最后安装完成
查看yum命令协助的两种方法:
- yum –help
- rpm –help
- man yum
- yum install httpd
- yum install -y httpd : 【-y忽略yes/no的提示】
- service httpd start:启动应用服务
- service httpd status:查询应用服务状态。
- yum install ./http-2.4.6…x86_64.rpm 可以提前下载http-2.4.6…x86_64.rpm好包,然后指定路径下的指定文件进行安装。
C:WindowsSystem32driversetcHOSTS文件配置:
【101.227.231.190 ruozedata001】
==service httpd start|stop|status== 【centos6、7的命令】
==systemctl start|stop|status httpd== 【centos7的命令】
systemctl status httpd cloudera-scm-agent 【==可以同时查看两个应用服务的状态==】
[root@maggiedata ~]# yum install -y httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-97.el7.centos.5 will be installed
..........
Installed:
httpd.x86_64 0:2.4.6-97.el7.centos.5
Dependency Installed:
apr.x86_64 0:1.4.8-7.el7 apr-util.x86_64 0:1.5.2-6.el7
httpd-tools.x86_64 0:2.4.6-97.el7.centos.5 mailcap.noarch 0:2.1.41-2.el7
Complete!
---------------------------------------
在云服务器端,配置安全策略,添加80/443开发端口。
---------------------------------------
[root@maggiedata ~]# systemctl stop httpd
[root@maggiedata ~]# systemctl start httpd
[root@maggiedata ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2022-10-03 10:56:57 CST; 10s ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 28877 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─28877 /usr/sbin/httpd -DFOREGROUND
├─28878 /usr/sbin/httpd -DFOREGROUND
├─28879 /usr/sbin/httpd -DFOREGROUND
├─28880 /usr/sbin/httpd -DFOREGROUND
├─28881 /usr/sbin/httpd -DFOREGROUND
└─28882 /usr/sbin/httpd -DFOREGROUND
Oct 03 10:56:57 maggiedata systemd[1]: Starting The Apache HTTP Server...
Oct 03 10:56:57 maggiedata httpd[28877]: AH00558: httpd: Could not reliably dete...ge
Oct 03 10:56:57 maggiedata systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@maggiedata ~]# ps -ef | grep httpd
root 28877 1 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 28878 28877 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 28879 28877 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 28880 28877 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 28881 28877 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 28882 28877 0 10:56 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 28911 28750 0 10:57 pts/2 00:00:00 grep --color=auto httpd
[root@maggiedata ~]# netstat -nlp | grep 28877
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 28877/httpd
4.4、yum / rpm 卸载软件
- yum remove httpd:卸载已安装的httpd
- rpm -qa | grep httpd:搜索当前安装了那些httpd包
- rpm -e –nodeps rpm -e –nodeps httpd-tools-2.4.6-97.el7.centos.5.x86_64:【-e:卸载包】【–nodeps:不用验证相关依赖包。】【–help中查看相应协助文档】
[root@maggiedata ~]# rpm -qa | grep httpd 【搜索当前安装了那些httpd包】
httpd-tools-2.4.6-97.el7.centos.5.x86_64
httpd-2.4.6-97.el7.centos.5.x86_64
[root@maggiedata ~]# rpm -e httpd-tools-2.4.6-97.el7.centos.5.x86_64 【单独卸载httpd-tools不能卸载,会报错】
error: Failed dependencies:
httpd-tools = 2.4.6-97.el7.centos.5 is needed by (installed) httpd-2.4.6-97.el7.centos.5.x86_64
[root@maggiedata ~]# rpm -e --nodeps httpd-tools-2.4.6-97.el7.centos.5.x86_64 【--nodeps:不用验证相关依赖包。】
[root@maggiedata ~]# rpm -qa | grep httpd 【搜索当前安装了那些httpd包,httpd-tools已经被卸载】
httpd-2.4.6-97.el7.centos.5.x86_64
4.5、tar、zip/unzip:压缩解压
- tar.gz 相当于 绿色版
- zip压缩文件,unzip:解压文件
[root@maggiedata ~]# zip -r xiaoa.zip xiaoa
[root@maggiedata ~]# zip 2.zip 2.log1
[root@maggiedata ~]# unzip 2.zip
[root@maggiedata ~]# tar -czvf xiaoa.tar.gz xiaoa 压缩后缀tar.gz 【记住命令】
[root@maggiedata ~]# tar -xzvf xiaoa.tar.gz 【记住命令】
----------------------------------------------------------------------------------------------------
查看tar的命令协助--help:
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.
5、Linux其他操作命令
5.1、查看IP:ipconfig【windows】/ifconfig【Linux】
5.2、ps进程和netstat端口号
- ps -ef | grep XXXX
- netstat -nlp | grep pid/port 【进程pid找所属的端口号/或端口号找所属的pid】
进程pid找所属的端口号
或端口号找所属的pid
[root@ruozedata001 ~]# ps -ef | grep hadoop 【找到进程的pid,5093】
[root@ruozedata001 ~]# netstat -nlp|grep 5093
tcp 0 0 192.168.1.160:9864 0.0.0.0:* LISTEN 5093/java
tcp 0 0 192.168.1.160:9866 0.0.0.0:* LISTEN 5093/java
tcp 0 0 192.168.1.160:9867 0.0.0.0:* LISTEN 5093/java
tcp 0 0 127.0.0.1:43126 0.0.0.0:* LISTEN 5093/java
unix 2 [ ACC ] STREAM LISTENING 22381350 5093/java /var/run/hdfs-sockets/dn
[root@ruozedata001 ~]# netstat -nlp|grep 9864
tcp 0 0 192.168.1.160:9864 0.0.0.0:* LISTEN 5093/java
[root@ruozedata001 ~]# ps -ef| grep 5093
hdfs 5059 31389 0 Sep19 ? 00:00:00 /usr/bin/python2 /opt/cloudera/cm-agent/bin/cm proc_watcher 5093
hdfs 5093 5059 0 Sep19 ? 00:15:39 /usr/java/jdk1.8.0_181/bin/java -Dproc_datanode -Dhdfs.audit.logger=INFO,RFAAUDIT -Dsecurity.audit.logger=INFO,RFAS -Djava.net.preferIPv4Stack=true -Xms634388480 -Xmx634388480 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/hdfs_hdfs-DATANODE-5febac983f666394aa59cb396621196c_pid5093.hprof -XX:OnOutOfMemoryError=/opt/cloudera/cm-agent/service/common/killparent.sh -Dyarn.log.dir=/var/log/hadoop-hdfs -Dyarn.log.file=hadoop-cmf-hdfs-DATANODE-ruozedata001.log.out -Dyarn.home.dir=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop-yarn -Dyarn.root.logger=INFO,console -Djava.library.path=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop/lib/native -Dhadoop.log.dir=/var/log/hadoop-hdfs -Dhadoop.log.file=hadoop-cmf-hdfs-DATANODE-ruozedata001.log.out -Dhadoop.home.dir=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/hadoop -Dhadoop.id.str=hdfs -Dhadoop.root.logger=INFO,RFA -Dhadoop.policy.file=hadoop-policy.xml -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.datanode.DataNode
root 15465 13120 0 22:02 pts/0 00:00:00 grep --color=auto 5093
192.168.1.160:9864===>访问
127.0.0.1:43126===>如果是127或者localhost是其他机器是访问不了这个地址端口号
0.0.0.0:4444===> 0.0.0.0等价于192.168.1.160
- 如何判断连接是否接通
- 先ping ip,网络通不通?
- telnet IP地址 端口号 【很重大,确定对方网络和端口号是否通畅】
[root@ruozedata002 ~]# ping 192.168.1.160
PING 192.168.1.160 (192.168.1.160) 56(84) bytes of data.
64 bytes from 192.168.1.160: icmp_seq=1 ttl=64 time=0.345 ms
64 bytes from 192.168.1.160: icmp_seq=2 ttl=64 time=0.355 ms
64 bytes from 192.168.1.160: icmp_seq=3 ttl=64 time=0.329 ms
[root@ruozedata002 ~]# telnet 192.168.1.160 9870 【很重大,确定对方网络和端口号是否通畅】
【下面telnet已通畅】
Trying 192.168.1.160...
Connected to 192.168.1.160.
Escape character is ^] .
^ZConnection closed by foreign host.
[root@ruozedata002 ~]# telnet 192.168.1.160 9871
【telnet未通畅】
Trying 192.168.1.160...
telnet: connect to address 192.168.1.160: Connection refused
5.3、kill【高危命令】
- kill -9 24529
- kill -9 $(pgrep -f hadoop) 全部杀 【生产慎用】
5.4、top命令【CPU 】
- top命令详解
top - 16:41:35 up 11 days, 19:03, 1 user, load average: 0.12, 0.06, 0.05
Tasks: 80 total, 2 running, 78 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.7 us, 1.4 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1882048 total, 104064 free, 105964 used, 1672020 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1591104 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
994 root 10 -10 139236 17004 11528 S 4.3 0.9 670:22.80 AliYunDun
1140 root 10 -10 436912 2800 2332 S 0.3 0.1 8:42.06 AliSecGuard
1 root 20 0 125456 3904 2604 S 0.0 0.2 1:56.60 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:09.19 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
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 2:38.30 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:03.20 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.23 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
--------------------------------------------------------------------------------------------------------
load average: 0.12(1分钟负载), 0.06(5分钟负载), 0.05(15分钟负载)【一般生产上不要超过30,如果超过200,多半被挖矿了,可以用ps和netstat查进程名称和ID】
看机器是否繁忙,生产上不要超过30
27141 yarn 20 0 2674228 2.3g 1088 S 200.3(CPU) 14.7 978:36.13 kdevtmpfsi
[root@ruozedata001 ~]# ps -ef|grep 27141
root 22993 2250 0 22:12 pts/0 00:00:00 grep --color=auto 27141
yarn 27141 1 99 13:56 ? 16:18:57 /tmp/kdevtmpfsi
[root@ruozedata001 ~]# kill -9 27141
5.5、free命令【内存】
- free查看内存的使用情况:
- free -m【查看可用内存,以M为单位】
- free -g 【查看可用内存,以G为单位】
- swap :将机器的硬盘 划分出来,临时充当内存
大数据生产机器,swap是要禁用掉的,尤其hbase环境 【经验】
[root@maggiedata ~]# free -m
total used free shared buff/cache available
Mem: 1837 102 101 0 1633 1554
Swap: 0 0 0
[root@maggiedata ~]# free -g
total used free shared buff/cache available
Mem: 1 0 0 0 1 1
Swap: 0 0 0
5.6、快速关闭swap
- k8s和大数据生产机器,swap是要禁用掉的,尤其hbase环境
- 临时关闭:swapoff -a
- 永久关闭:vim /etc/fstab
#方法1、使用命令永久关闭swap分区
sed -ri s/.*swap.*/#&/ /etc/fstab
#方法2、修改配置文件永久关闭swap分区
1)vi /etc/fstab
2)删除或注释掉带有swap的行
以上都是永久关闭swap,需要重启Linux服务器(reboot)才能生效,如果不想目前重启服务器,也可以先临时关闭swap,等到下次再重启服务器。
#方法3、临时关闭swap分区命令:`swapoff -a`
[root@maggiedata ~]# swapoff -a
[root@maggiedata ~]# free -g
total used free shared buff/cache available
Mem: 1 0 0 0 1 1
Swap: 0 0 0
5.7、快速关闭selinux
- 方法1、直接通过命令关闭selinux
sed -ri s/SELINUX=enforcing/SELINUX=disabled/ /etc/selinux/config
- 方法2、修改配置文件
vi /etc/selinux/config,将SELINUX=enforcing修改为SELINUX=disabled
reboot 或init 6 重启Linux服务器让以上配置永久生效,如果不想目前重启服务器,也可以先临时关闭selinux,等到下次重启服务器,selinux就可以永久关闭了, - 方法3:、临时关闭selinux使用
setenforce 0命令,可以使用getenforce命令查看selinux状态
[root@maggiedata ~]# getenforce 【当前状态为disabled】
Disabled
[root@maggiedata ~]# setenforce 0
setenforce: SELinux is disabled
[root@maggiedata ~]# vi /etc/selinux/config 【如果未关闭,需要编辑以下文件关闭】
# SELINUX=enforcing改为SELINUX=disabled
5.8、df命令【磁盘】
- df查看磁盘使用情况
- df -h:
[root@maggiedata ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 4.5G 33G 12% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 436K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
tmpfs 184M 0 184M 0% /run/user/0
PATH下匹配httpd的所有路径;




