Linux基础命令合集

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

  1. 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

  1. 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

  1. touch a.log 创建空的文件a.log
  2. ==vi b.log==
    1)输入vi b.log回车进入命令行模式;
    2)按i键,进入编辑模式;
    3)输入内容,按ESC键退出编辑,回到命令行模式
    4)按shift+:键,进入尾行模式;
    5)按wq保存并退出;
  3. 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键

  1. 键盘tab 按一次, 是匹配只有1个, 会显示
  2. 键盘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在Linux基础命令合集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

© 版权声明

相关文章

暂无评论

none
暂无评论...