Linux

Linux

Shell

Shell介绍

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Shell脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但要知道的是,shell 和 shell script 是两个不同的概念。

Shell基础

命令提示符

1
2
3
[root@localhost bin]#

[halo@localhost bin]$

root:当前用户

localhost:主机名

bin:当前工作目录

#:管理员用户

$:普通用户

登陆

  • username

    [root@localhost bin]#halo

  • password

    [root@localhost bin]#******

登出

  • exit

    [root@localhost bin]#exit

  • logout

    [root@localhost bin]#logout

特殊符号

  • /

    在表示路径时,代表目录

    [root@localhost bin]#cd /opt/sy

  • *

    任意匹配

    [root@localhost bin]#cd /opt/[root@localhost bin]#gerp ‘1‘ test

  • .

    当前目录

    [root@localhost bin]#cd .

  • ..

    上级目录

    [root@localhost bin]#cd ..

  • |

    管道符,在前面命令的结果上,执行后面的指令

    [root@localhost bin]#ps -ef | grep java

  • \

    转义符,放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行

    [root@localhost bin]#grep ‘$$’ test[root@localhost bin]#find -name ‘cron’\

  • ?

    在文件名扩展上扮演的角色是匹配一个任意的字元

    [root@localhost bin]#find -name ‘cr?n’

  • []

    在通配符和正则表达式中[]代表一定有一个在中括号内的字符,例如[abcd]代表一定有一个字符,可能是a、b、c、d这四个任何一个

    [root@localhost bin]#grep ‘1[23]3’ test

  • >

    表示覆盖覆盖内容

    [root@localhost bin]#echo 123 > test.txt

  • >>

    表示追加内容

    [root@localhost bin]#echo 123 >> test.txt

  • ;

    表示俩个命令同时执行

    [root@localhost bin]#head -n 3 test;tail -n 5 test

  • &

    单一个&符号,且放在完整指令列的最后端,即表示将该指令列放入后台中工作

    [root@localhost bin]#nohup java -jar halo-latest.jar > halo.log &

快捷键

  • TAB

    自动补全

  • 向上找执行过的命令记录

  • 向下找执行过的命令记录

  • Ctrl + A

    光标移动到命令行的行首

  • Ctrl + E

    光标移动到命令行的行尾

  • Ctrl + F / →

    光标向右移动一个字符

  • Ctrl + B / ←

    光标向左移动一个字符

  • Ctrl + INSERT

    复制

  • Shift + INSERT

    粘贴

  • Ctrl + C

    中断执行

  • Ctrl + D

    退出终端

帮助文档

  • man

    man ls 列出ls命令帮助文档,Q键退出

Shell命令

参考资料:https://www.runoob.com/linux/linux-command-manual.html

CD 命令

Change Directory

改变当前工作路径(目录)

cd /    根目录  
cd ~    进入当前用户的主目录  
cd .    当前目录  
cd ..   上级目录  
cd -    上一次目录

LS 命令

List Files

显示当前目录下的内容

参数:

  • -a

    显示所有文件及目录 (. 开头的隐藏文件也会列出)

  • -l

    除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

  • -r

    将文件以相反次序显示(原定依英文字母次序)

  • -t

    将文件依建立时间之先后次序列出

  • -A

    同 -a ,但不列出 “.” (目前目录) 及 “..” (父目录)

  • -F

    在列出的文件名称后加一符号;例如可执行档则加 “*“, 目录则加 “/“

  • -R

    若目录下有文件,则以下之文件亦皆依序列出

举例:

ls -l   显示当前目录的详细列表信息(仅可见文件)  
ls -a   显示当前目录的所有内容(包括隐藏文件)  
ls -al  显示当前目录的所有详细列表信息(包括隐藏文件)

PWD 命令

Print Working Directory

显示当前用户所在目录

参数:

  • --help

    在线帮助。

  • --version

    显示版本信息。

举例:

pwd 显示当前用户所在目录

MKDIR 命令

Make Directory

新建一个目录

参数:

  • -p

    确保目录名称存在,不存在的就建一个

举例:

mkdir halo          创建一个halo目录  
mkdir halo1 halo2   创建多个平级目录  
mkdir -p halo/jar   创建多层目录

RMDIR 命令

Remove Directory

删除一个目录

参数:

  • -p

    是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

举例:

rmdir halo 删除一个空的halo目录

RM 命令

Remove

删除一个文件或目录,默认是对文件操作,目录操作加上-r

参数:

  • -i

    删除前逐一询问确认。

  • -f

    即使原档案属性设为唯读,亦直接删除,无需逐一确认。

  • -r

    将目录及以下之档案亦逐一删除。

举例:

rm -r halo      递归删除halo目录和子目录(需要确认)  
rm -f halo.sh   强制删除halo.sh文件(不需要确认)  
rm -rf halo     强制删除halo目录下所有文件和目录  
rm -i halo      删除前逐一询问

CP 命令

Copy

复制一个文件或目录,默认是对文件操作,目录操作加上-r

参数:

  • -a

    此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。

  • -d

    复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。

  • -f

    覆盖已经存在的目标文件而不给出提示。

  • -i

    与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。

  • -p

    除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。

  • -r

    若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

  • -l

    不复制文件,只是生成链接文件。

举例:

cp -r halo halo2    复制halo目录为halo2目录,包括halo下的所有子目录跟文件

MV 命令

Move

移动文件或目录,同级目录下操作即是重命名,不同级目录下操作即是移动

参数:

  • -b

    当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

  • -i

    如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

  • -f

    如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

  • -n

    不要覆盖任何已存在的文件或目录。

  • -u

    当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

举例:

mv halo halo2   将halo重命名为halo2  
mv halo ../     将halo移动到上级目录

TOUCH 命令

Touch

创建一个或多个文件或隐藏文件

参数:

  • a

    改变档案的读取时间记录。

  • m

    改变档案的修改时间记录。

  • c

    假如目的档案不存在,不会建立新的档案。与 –no-create 的效果一样。

  • f

    不使用,是为了与其他 unix 系统的相容性而保留。

  • r

    使用参考档的时间记录,与 –file 的效果一样。

  • d

    设定时间与日期,可以使用各种不同的格式。

  • t

    设定档案的时间记录,格式与 date 指令相同。

  • --no-create

    不会建立新档案。

  • --help

    列出指令格式。

  • --version

    列出版本讯息。

举例:

touch filename.sh           创建一个filename.sh文件(filename:文件名;sh:文件扩展名)  
touch file_1.txt file_2.txt 创建多个文件file_1.txt和file_2.txt  
touch .file.txt             创建一个隐藏文件.file.txt

ECHO 命令

Echo

输出重定向,用于字符串的输出

echo "HelloWorld" > file.txt      覆盖写入HelloWorld到文件file.txt中  
echo "HelloWorld" >> file.txt     追加写入HelloWorld到文件file.txt中  
echo 2>>    错误信息追加  
echo &>>    正确和错误信息均写入同一个文件

CAT 命令

Concatenate

从文件的第一行显示文件内容

参数:

  • -n 或 –number

    由 1 开始对所有输出的行数编号。

  • -b 或 –number-nonblank

    和 -n 相似,只不过对于空白行不编号。

  • -s 或 –squeeze-blank

    当遇到有连续两行以上的空白行,就代换为一行的空白行。

  • -v 或 –show-nonprinting

    使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

  • -E 或 –show-ends

    在每行结束处显示 $。

  • -T 或 –show-tabs

    将 TAB 字符显示为 ^I。

  • -A, –show-all

    等价于 -vET。

  • -e

    等价于”-vE”选项;

  • -t

    等价于”-vT”选项;

举例:

cat file.txt    正序显示file.txt的内容

TAC 命令

CAT的倒着写

从文件的最后一行显示文件内容

tac file.txt    倒叙显示file.txt的内容

NL 命令

Number of Lines

从文件第一行显示文件内容,并显示行号

nl file.txt 正序带行号显示file.txt的内容

MORE 命令

More

一页一页翻动显示,”B”向上翻页,”Space”向下翻页

参数:

  • -num

    一次显示的行数

  • -d

    提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声

  • -l

    取消遇见特殊字元 ^L(送纸字元)时会暂停的功能

  • -f

    计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)

  • -p

    不以卷动的方式显示每一页,而是先清除萤幕后再显示内容

  • -c

    跟 -p 相似,不同的是先显示内容再清除其他旧资料

  • -s

    当遇到有连续两行以上的空白行,就代换为一行的空白行

  • -u

    不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)

  • +/pattern

    在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示

  • +num

    从第 num 行开始显示

  • fileNames

    欲显示内容的文档,可为复数个数

举例:

more -5 file.txt    显示file.txt中前5行内容

LESS 命令

Less

一页一页翻动显示,”B”向上翻页,”Space”向下翻页

参数:

  • -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 -5 file.txt    显示file.txt中前5行内容

HEAD 命令

Head

从头显示文件内容

参数:

  • -q

    隐藏文件名

  • -v

    显示文件名

  • -c<数目>

    显示的字节数。

  • -n<行数>

    显示的行数。

举例:

head -n 5 file.txt  显示file.txt中头5行内容

TAIL 命令

Tail

从尾显示文件内容

参数:

  • -f

    循环读取

  • -q

    不显示处理信息

  • -v

    显示详细的处理信息

  • -c<数目>

    显示的字节数

  • -n<行数>

    显示文件的尾部 n 行内容

  • --pid=PID

    与-f合用,表示在进程ID,PID死掉之后结束

  • -q, –quiet, –silent

    从不输出给出文件名的首部

  • -s, –sleep-interval=S

    与-f合用,表示在每次反复的间隔休眠S秒

举例:

tail -n 5 file.txt  显示file.txt中尾5行内容  
tail -fn 1000 file.log  滚动显示尾1000行内容

TAR 命令

Tar

参数:

  • -c, –create

    创建一个新归档

  • -x, –extract, –get

    从归档中解出文件

  • -f, –file=ARCHIVE

    使用归档文件

  • -z, –gzip, –gunzip, –ungzip

    通过 gzip 过滤归档

  • -C, –directory=DIR

    改变至目录 DIR

  • -v, –verbose

    详细地列出处理的文件

举例:

tar -zxvf test.tar.gz  将压缩文件解压到当前目录下  
tar -zxvf test.tar.gz -C /home/  将压缩文件解压到/home目录下  
tar -zcvf test.tar.gz ./  将当前目录下的所有文件压缩

Linux目录

目录

参考资料:https://www.runoob.com/linux/linux-system-contents.html

目录 说明
/ 根目录
/bin bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令
/sbin s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序
/home 普通用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/root 超级管理员主目录
/boot 这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件
/dev dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
/etc etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录
/lib lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件
/usr usr 是 unix shared resources(共享资源) 的缩写,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录
/tmp tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的
/media linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了
/opt opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。默认是空的
/proc proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统)
/var var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,习惯将那些经常被修改的目录放在这个目录下
/run 是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除
/sys 系统文件

特殊目录

  • /

    根目录

  • ~

    主目录/Home目录

  • .

    当前目录

  • ..

    当前目录的上级目录

重要目录和文件

etc目录

  • 网卡配置文件

    如果是虚拟机都是ensXX这样的网卡名称

    /etc/sysconfig/network-scripts/ifcfg-ens33

    通过命令重启生效

    systemctl restart network

  • 开机自动挂载的列表

    /etc/fstab

  • 主机名称

    /etc/hostname

    CentOS7设置主机名称

    hostnamectl set-hostname XXXXX

    其他

    vim /etc/hostname

  • 本地DNS域名

    /etc/hosts

  • DNS服务器地址

    /etc/resolv.conf

  • 环境变量

    设置系统环境变量参数,对系统内所有用户都生效

    /etc/profile

    重新载入配置文件生效

    source /etc/profile

  • Bash配置文件

    设置bash shell相关的内容,对系统内所有用户都生效,只要运行了bash命令,那么bash配置文件就会被加载

    /etc/bashrc

    • ~/.bashrc

      只是针对于当前用户而言,不对其他用户生效

    • ~/.bash_profile

      如果在用户的家目录下,通过ls -al发现的.bash_profile,则只针对当前用户生效

      root -> /root -> .bash_profile 针对root起作用

      athena -> /home/athena -> .bash_profile 针对athena起作用

  • Shell应用程序

    /etc/shells

  • 系统管理命令

    /etc/init.d

  • YUM源目录

    /etc/yum.repos.d

  • 运行级别

    /etc/inittab

  • ROOT用户权限

    /etc/sudoers

  • ROOT和其他用户密码

    /etc/shadow

usr目录

  • 编译安装软件默认的安装路径

    /usr/local

  • 源码文件的目录

    /usr/src

  • 系统运行日志文件

    /usr/var/log

    • messages(文本文件)

      系统级日志文件

    • secure(文本文件)

      安全日志文件

    • dmesg(文本文件)

      硬件信息加载情况日志文件

    • cron(文本文件)

      定时任务日志文件

    • wtmp(二进制文件)

      登陆者信心日志文件

    • lastlog(二进制文件)

      用户近期登陆情况日志文件

proc目录

  • 当前CPU信息文件

    /proc/cpuinfo

  • 当前内存信息文件

    /proc/meminfo

  • 当前系统平均负载文件

    /proc/loadavg

  • 当前设备挂载列表信息文件

    /proc/mounts

  • 当前系统中断信息文件

    /proc/interrupts

路径

  • 绝对路径

    从”/“开始表示的路径

    /usr/local/tomcat

  • 相对路径

    不是由”/“开始的,当前目录作为参照物或某一目录作为参照物

    ../tomcat

Linux文件

文件属性和权限

ls -al

示例:drwxr-xr-x

索引:0-1-2-3-4-5-6-7-8-9

注意:’-‘表示没有该权限

0 1 2 3 4 5 6 7 8 9
文件类型 执行 执行 执行
文件权限 属主 属主 属主 属组 属组 属组 其他 其他 其他
字母表示 R W X R W X R W X
8进制表示 4 2 1 4 2 1 4 2 1

第1个字符-文件类型

  • 【b】开头(存储设备)
  • 【c】开头(硬件设备)
  • 【d】开头(目录)
  • 【l】开头(链接文件)
  • 【-】开头(文件)

第2~10个字符-文件权限

  • 【2~4】字符(属主权限)

    该文件的拥有者

  • 【5~7】字符(属组权限)

    用户同组的所有用户拥有该文件的权限

  • 【8~10】字符(其他用户权限)

    非以上的用户

文件属性和权限修改

更改文件属主

-R 递归修改文件夹里面所有目录权限

chown -R 属主名 文件名

更改文件属主/属组

-R 递归修改文件夹里面所有目录权限

chown -R 属主名:属组名 文件名

更改文件属组

-R 递归修改文件夹里面所有目录权限

chgrp -R 属组名 文件名

更改文件权限

xxx 分别表示属主权限,属组权限,其他用户权限的八进制加法。一般给chmod 755 hello.sh

权限 可读 可写 可执行 8进制表示 说明
RWX 4 2 1 7 读+写+执行
RW- 4 2 0 6 读+写
R-X 4 0 1 5 读+执行
-WX 0 2 1 3 写+执行
R– 4 0 0 4 只读
-W- 0 2 0 2 只写
chmod xxx 文件名

通过符号修改:

chmod u=rwx,g=rwx,o=rwx 文件名  
chmod +x 文件名 -- 给所有属性增加可执行权限  
chmod a-x 文件名 -- 给所有属性删除可执行权限

Linux用户和用户组

用户分类

UID:用户ID;GID:用户组ID

超级用户

UID=0,拥有最高权限,root

普通用户

UID≥1000,能够登陆系统,只能操作自己的目录内容(CentOS7)

虚拟用户

1≤UID≤999,无法直接创建,系统自身拥有,不具有登陆系统能力(CentOS7)

用户命令

ID命令

id -- 查询当前用户id  
id 用户名 -- 查询指定用户id

SU命令

su 用户名 -- 切换用户  
su - 用户名 -- 切换用户(工作环境同时切换)

SUDO命令

sudo yum install -y docker-ce -- 普通用户提权

WHOAMI命令

whoami -- 显示当前用户

PASSWD命令

/etc/sudoers 需先保证该文件配置了该用户的执行权限

sudo passwd 用户名 -- 修改指定用户密码

USERADD命令

useradd -x 用户名

参数:

  • -c

    指定一段注释性描述

    useradd -c comment

  • -d

    指定用户主目录,如果目录不存在使用-m创建目录

    useradd -d /home/用户主目录 -m 用户名

  • -g

    指定用户所属用户组

    useradd -g 用户组 用户名

  • -G

    指定用户的附加组

    useradd -G 附加组 用户名

  • -s

    指定Shell环境,默认是/bin/bash

    useradd -s /bin/地址 -g 用户组 用户名

    查看Shell环境

    cat /etc/passwd

    root0:0:root:/root:/bin/bash

    用户名:密码:uid:gid:说明信息:目录:Shell环境

  • -u

    指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号

    useradd -u 用户号

USERDEL命令

-r 表示同时删除目录

userdel -r 用户名

VI/VIM编辑器

参考资料:https://www.runoob.com/linux/linux-vim.html

安装

yum install -y vim

创建

vim file.txt    存在file.txt文件则打开file.txt文件,不存在则先创建file.txt文件并打开

编辑

  • 命令模式(Command mode)

    用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。以下是常用的几个命令:

    • i 切换到输入模式,以输入字符。
    • x 删除当前光标所在处的字符。
    • : 切换到底线命令模式,以在最底一行输入命令。

    若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式(i/I,a/A,o/O都可以进入输入模式,只是进入输入模式后的输入的位置不一样)。命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

    快捷键:

    • ZZ,大写模式下快速按”ZZ”(大写模式快速按两下Z)即可保存文本
    • yy,复制当前光标所在行
    • n+yy,复制当前光标所在n行(n代表光标当前行开始要复制的行数)
    • p,在光标所在行的下一行进行粘贴
    • dd,删除当前光标所在行
    • n+dd,删除当前光标所在行(n代表光标当前行开始要删除的行数)
    • gg,快速跳转到文件的头部所在行的首字符
    • G,快速跳转到文件的尾部所在行的首字符
    • n+G,快速跳转到文件的第n行所在行的首字符
    • $ ,快速跳转到光标所在行的行尾字符
    • n+$ ,快速跳转到光标所在行开始的第n行所在行的尾字符
    • u,撤销操作
  • 输入模式(Insert mode)

    在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:

    • 字符按键以及Shift组合,输入字符
    • ENTER,回车键,换行
    • BACK SPACE,退格键,删除光标前一个字符
    • DEL,删除键,删除光标后一个字符
    • 方向键,在文本中移动光标
    • HOME/END,移动光标到行首/行尾
    • Page Up/Page Down,上/下翻页
    • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
    • ESC,退出输入模式,切换到命令模式
  • 底线命令模式(Last line mode)

    在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):

    • q 退出程序
    • w 保存文件
    • q! 强制退出,不保存
    • set nu 显示行号
    • s/old/new 将old替换为new(只替换光标所在行,从左到右第一次出现的位置)
    • s/old/new/g 在光标所在行将所有的old替换为new
    • %s/old/new/g 在整个文件中将所有的old替换为new
    • /keyword 关键词搜索

    按ESC键可随时退出底线命令模式。

CentOS7优化

ip a 查看当前IP地址

安装常用工具

yum install -y vim  
yum install -y wget  
yum install -y net-tools

替换YUM源

  1. 备份yum源文件名称:

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

  2. 下载阿里yum源或163都可以

    163的yum源

    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

    阿里yum源

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  3. 清除缓存

    yum clean all
    yum makecache

优化网络管理

  • 临时关闭

    systemctl stop NetworkManager

  • 永久关闭

    systemctl disable NetworkManager

设置服务器静态IP地址

GATEWAY(网关)/ IPADDR(IP地址)/ NETMASK(子网掩码)/ DNS(DNS域名解析)

  1. 进入网络配置目录

    cd /etc/sysconfig/network-scripts

  2. 编辑ifcfg-ens33

    vim ifcfg-ens33

    由原来的

    TYPE=”Ethernet”
    PROXY_METHOD=”none”
    BROWSER_ONLY=”no”
    BOOTPROTO=”dhcp”
    DEFROUTE=”yes”
    IPV4_FAILURE_FATAL=”no”
    IPV6INIT=”yes”
    IPV6_AUTOCONF=”yes”
    IPV6_DEFROUTE=”yes”
    IPV6_FAILURE_FATAL=”no”
    IPV6_ADDR_GEN_MODE=”stable-privacy”
    NAME=”ens33”
    UUID=”ce7d8e7e-077d-433a-b63c-8d95fb84bdf9”
    DEVICE=”ens33”
    ONBOOT=”yes”

    修改为(根据自身情况修改地址,必须是10段的内网地址,记得删除UUID)

    TYPE=”Ethernet”
    PROXY_METHOD=”none”
    BROWSER_ONLY=”no”
    BOOTPROTO=”static”
    DEFROUTE=”yes”
    IPV4_FAILURE_FATAL=”no”
    IPV6INIT=”yes”
    IPV6_AUTOCONF=”yes”
    IPV6_DEFROUTE=”yes”
    IPV6_FAILURE_FATAL=”no”
    IPV6_ADDR_GEN_MODE=”stable-privacy”
    NAME=”ens33”
    DEVICE=”ens33”
    ONBOOT=”yes”
    GATEWAY=10.0.0.2
    IPADDR=10.0.0.133
    NETMASK=255.255.255.0
    DNS1=10.0.0.2
    DNS2=1.2.4.8

  3. 重启network

    systemctl restart network

进程管理

查看进程

  • PS 命令

    Process Status

    显示当前进程的状态

    参数:

    • -a

      显示所有进程

    • -u

      用户以及其他详细信息

    • -x

      显示没有控制终端的进程

    举例:

    ps -ef | grep java 查看java进程
    ps -aux 查看所有进程详细信息

  • TOP 命令

    实时显示进程动态

    举例:

    top 显示进程信息,q退出

终止进程

  • KILL 命令

    终止进程

    参数:

    • -9

      强制终止

    举例:

    kill -9 1234 强制终止PID为1234的进程

网络管理

网络配置

  • IFCONFIG 命令

    查看和配置网络设备

    举例:

    ifconfig 查看网络设备信息

  • PING 命令

    测试网络连通性

    举例:

    ping www.baidu.com 测试与百度服务器的连通性

端口查看

  • NETSTAT 命令

    显示网络状态

    参数:

    • -t

      TCP协议

    • -u

      UDP协议

    • -l

      监听

    • -n

      显示IP地址和端口号

    • -p

      显示PID和进程名称

    举例:

    netstat -tulpn 查看所有监听端口
    netstat -tulpn | grep 8080 查看8080端口占用情况

磁盘管理

磁盘空间

  • DF 命令

    Disk Free

    显示磁盘空间使用情况

    参数:

    • -h

      以可读性较高的方式显示(GB, MB)

    举例:

    df -h 查看磁盘空间

  • DU 命令

    Disk Usage

    显示文件或目录占用磁盘空间情况

    参数:

    • -h

      以可读性较高的方式显示

    • -s

      仅显示总计

    举例:

    du -sh * 查看当前目录下所有文件的大小

系统服务管理

Systemctl

CentOS 7 之后使用 systemctl 管理服务

  • 启动服务

    systemctl start 服务名

  • 停止服务

    systemctl stop 服务名

  • 重启服务

    systemctl restart 服务名

  • 查看服务状态

    systemctl status 服务名

  • 开机自启

    systemctl enable 服务名

  • 关闭开机自启

    systemctl disable 服务名

文件搜索

Find 命令

查找文件

find / -name file.txt   从根目录下查找名为file.txt的文件  
find . -name "*.log"    当前目录下查找所有.log结尾的文件

Grep 命令

文本搜索

grep "error" file.log   在file.log中搜索包含error的行  
grep -r "hello" .       在当前目录递归搜索包含hello的内容

防火墙管理

Firewalld

CentOS 7 默认使用 firewalld 作为防火墙

  • 查看防火墙状态

    systemctl status firewalld

  • 开启防火墙

    systemctl start firewalld

  • 关闭防火墙

    systemctl stop firewalld

  • 重启防火墙

    systemctl restart firewalld

  • 查看开放端口

    firewall-cmd –list-ports

  • 开放端口

    –permanent 表示永久生效,没有此参数重启后失效

    firewall-cmd –zone=public –add-port=80/tcp –permanent

  • 重新加载配置

    修改规则后需要重新加载才能生效

    firewall-cmd –reload

  • 关闭端口

    firewall-cmd –zone=public –remove-port=80/tcp –permanent

SSH 服务

SSH 连接

ssh root@192.168.1.100  远程连接指定IP

免密登录

  1. 生成密钥对

    ssh-keygen -t rsa

    一直回车即可,生成的密钥在 ~/.ssh/ 目录下(id_rsa 私钥,id_rsa.pub 公钥)

  2. 发送公钥到目标服务器

    ssh-copy-id root@192.168.1.101

    输入一次密码后,后续登录即可免密

定时任务

Crontab

用于设置周期性被执行的指令

  • 查看定时任务

    crontab -l

  • 编辑定时任务

    crontab -e

  • 格式说明

    1
    2
    *    *    *    *    *    command
    分 时 日 月 周 命令

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

  • 举例

    每分钟执行一次

    1
    * * * * * /bin/sh /root/hello.sh

    每天凌晨3点执行

    1
    0 3 * * * /bin/sh /root/backup.sh

软件包管理

RPM

Red Hat Package Manager

  • 安装

    rpm -ivh package.rpm

  • 卸载

    rpm -e package_name

  • 查询

    rpm -qa | grep java 查询是否安装了java

YUM

Yellow dog Updater, Modified

  • 搜索软件包

    yum search java

  • 安装软件包

    yum install -y java-1.8.0-openjdk

  • 更新软件包

    yum update java

  • 卸载软件包

    yum remove java