Fork me on GitHub

Linux基础

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

基础知识

[TOC]

Linux的基本原则

  • 由目的单一的小程序组成,组成小程序来完成复杂的任务
1
2
[root@MR ~]# cat CentOS-Base.repo | wc -l
62
  • Linux里一切皆是文件
1
2
3
4
[root@MR ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text
[root@MR ~]# file /dev
/dev: directory
  • 一些配置文件都是保存成纯文本格式
1
2
[root@MR ~]# file anaconda-ks.cfg
anaconda-ks.cfg: ASCII text

shell

  • 什么是shell呢,英语翻译shell就是一个外壳,他可以理解为用户的工作环境,在window中shell就是桌面,那在Linux中呢,我们常用的终端就是一个shell
1
2
[root@MR ~]# echo $SHELL
/bin/bash
  • 常见的shell有两种形式,一种是图形界面,即GUI,例如window就是一种GUI。还有一种就是命令行终端,即CLI,Linux系统中的bash就是CLI,接下来就会写到bash
1
2
3
4
5
6
7
8
[root@MR /]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
# 以上是本系统支持的shell

bash

bash的特性:

  • 支持命令历史、命令补全、路径补全
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@MR /]# history
.........以上省略...........
693 cat /etc/shells
694 history
[root@MR /]# !693
cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
[root@MR /]# history -c
[root@MR /]# history
1 history
1
2
3
4
5
6
[root@MR /]# pa
packer parted paste
pam_console_apply partprobe pathchk
pam_tally2 partx
pam_timestamp_check passwd
[root@MR /]# passwd
1
2
3
4
[root@MR /]# cd /etc/sys
sysconfig/ sysctl.d/ system-release
sysctl.conf systemd/ system-release-cpe
[root@MR /]# cd /etc/sysconfig/
  • 支持管道、重定向
1
2
3
 | 如同任意门
[root@MR ~]# cat CentOS-Base.repo | wc -l
62
1
2
3
[root@MR ~]# echo '12344321' > 15
[root@MR ~]# cat 15
12344321
  • 支持命令行编辑
1
2
3
4
5
6
7
8
9
10
alias   快捷命令操作
[root@MR ~]# 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
[root@MR ~]# alias passwd='cat /etc/passwd'
[root@MR ~]# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#(如果你先重启电脑还能使用的话,请往下看)
[root@MR ~]# ls -a
[root@MR ~]# vim .bashrc
(按字母“i”进入编辑模式)
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias network='cd /etc/sysconfig/network-scripts'
alias passwd='cat /etc/passwd' #(将此行命令添加进去)
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc #(如果你想任何用户都可以使用得话,请添加之此文本文件/etc/bashrc)
fi
(狂按‘esc键’输入":wq")
1
2
3
4
快捷操作键:
ctrl+a 命令回到开始
ctrl+e 命令回到最后
ctrl+w 命令一节一节得删除
  • 支持命令行展开
1
2
3
4
5
6
7
8
9
10
11
12
#(首先你要yum install tree -y 来安装tree)
[root@MR ~]# mkdir -p a/{b/{d,e/{f,g}},c}
[root@MR ~]# tree a
a
├── b
│   ├── d
│   └── e
│   ├── f
│   └── g
└── c

6 directories, 0 files
  • 支持文件名通配
1
2
3
4
5
6
#(a*可以匹配当前目录下所有a开头的文件)
[root@MR ~]# ls a*
anaconda-ks.cfg

a:
b c
  • 支持变量
1
2
3
[root@MR ~]# a=3
[root@MR ~]# echo $a
3
  • 支持编程
1
2
3
4
[root@MR ~]# vim shijian.sh
# 将date加如进去
[root@MR ~]# bash shijian.sh
2019年 03月 23日 星期六 11:31:45 CST

bash支持的引号

“ ` ”反引号 用于命令替换 反引号里面的命令取出来是它们的值

1
2
3
4
[root@MR ~]# pwd
/root
[root@MR ~]# echo `pwd`
/root

“ ‘ ” 单引号 取本身,不完成命令替换

1
2
[root@MR ~]# echo 'pwd'
pwd

“ “ ” 双引号 实现命令替换,支持变量

1
2
3
[root@MR ~]# a=1
[root@MR ~]# echo "$a"
1

另:单引号取出来是本身

反引号和双引号取出来是他们的值

bash的快捷操作

  • ctrl+a 跳到行头
  • ctrl+e 跳到行尾
  • ctrl+u 删除光标前面的内容
  • ctrl+k 删除光标后面的内容
  • ctrl+<–
  • ctrl+L 清屏

bash的命令历史

history 查看命令历史

1
2
3
4
5
6
[root@MR ~]# history
1 ls
2 history
3 echo `$a`
4 cd /etc/sysconfig/network-scripts/
......以下省略.........

常用选项

​ -c 清除历史命令

1
2
3
[root@MR ~]# history -c
[root@MR ~]# history
1 history

​ -d 一般后接参数,删除第几条命名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@MR ~]# history
1 history
2 cd
3 pwd
4 ls
5 mv
6 history
[root@MR ~]# history -d 4
[root@MR ~]# history
1 history
2 cd
3 pwd
4 mv
5 history
6 history -d 4
7 history

​ -w 保存文件到当前用户下的/.bash_history 中

1
2
3
4
5
6
7
8
9
10
[root@MR ~]# history -w
[root@MR ~]# cat .bash_history
history
cd
pwd
mv
history
history -d 4
history
history -w

​ !n 再次执行历史命令中的第n条历史命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@MR ~]# history
1 history
2 cd
3 pwd
4 mv
5 history
6 history -d 4
7 history
8 history -w
9 cat bash_history
10 cat .bash_history
11 history
[root@MR ~]# !3
pwd
/root

​ !-n 再次执行历史命令中倒数第n条命令

1
2
3
4
5
6
7
8
[root@MR ~]# history
.......以上省略........
15 stat a
16 cd
17 ls
18 history
[root@MR ~]# !-3
cd

​ !! 执行上一条命令

1
2
3
[root@MR ~]# cd /etc/
[root@MR etc]# !!
cd /etc/

​ !stat 执行历史命令中最近一个以stat开头的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@MR ~]# history
..........以上省略..........
28 stat a
29 cd
30 ls
31 stat a
32 ls
33 cd
34 pwd
35 historiy
36 history
[root@MR ~]# !stat
stat a
文件:"a"
大小:22 块:0 IO 块:4096 目录
设备:fd00h/64768d Inode:694 硬链接:4
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-03-17 15:19:50.679860493 +0800
最近更改:2019-03-17 15:19:43.697860882 +0800
最近改动:2019-03-17 15:19:43.697860882 +0800
创建时间:-

​ !$ 引用前一条命令的最后一个参数

1
2
3
4
5
[root@MR ~]# cat /etc/hostname
MR.ZLJ

[root@MR ~]# vim !$
vim /etc/hostname

​ esc . 引用前一条命令的最后一个参数

1
2
3
4
[root@MR ~]# cat /etc/hostname
MR.ZLJ

[root@MR ~]# vim /etc/hostname #此处按一下esc键然后在按"."键

bash的命令、路径补全

1
2
3
4
5
6
[root@MR /]# pa
packer parted paste
pam_console_apply partprobe pathchk
pam_tally2 partx
pam_timestamp_check passwd
[root@MR /]# passwd
1
2
3
4
[root@MR /]# cd /etc/sys
sysconfig/ sysctl.d/ system-release
sysctl.conf systemd/ system-release-cpe
[root@MR /]# cd /etc/sysconfig/

bash命令别名

1
2
3
4
5
6
7
8
9
10
alias   快捷命令操作
[root@MR ~]# 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
[root@MR ~]# alias passwd='cat /etc/passwd'
[root@MR ~]# 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#(如果你先重启电脑还能使用的话,请往下看)
[root@MR ~]# ls -a
[root@MR ~]# vim .bashrc
(按字母“i”进入编辑模式)
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias network='cd /etc/sysconfig/network-scripts'
alias passwd='cat /etc/passwd' #(将此行命令添加进去)
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc #(如果你想任何用户都可以使用得话,请添加之此文本文件/etc/bashrc)
fi
(狂按‘esc键’输入":wq")

bash中的命令替换

1
2
3
4
[root@MR ~]# echo $(pwd)
/root
[root@MR ~]# echo `pwd`
/root

另谨记单引号取出来是本身,反引号和双引号取出来是他们的值

bash命令展开

~:展开为用户的家目录

1
2
3
[root@MR ~]# cd ~
[root@MR ~]# pwd
/root

~USERNAME:展开为指定用户USERNAME的家目录

1
2
[root@MR home]# cd ~zhou
[root@MR zhou]# ls

{}:可承载一个以逗号分隔的列表,并将其展开为多个路径

1
mkdir -p a/{b/{d,f},c}

bash环境变量

PATH 命令搜索路径

which 哪里

1
2
3
[root@MR ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls

HISTSIZE 定义命令历史能存多少条,默认为1000条

1
2
3
4
5
[root@MR ~]# echo $HISTSIZE
1000
[root@MR ~]# HISTSIZE=100
[root@MR ~]# echo $HISTSIZE
100

SHELL 当前系统中使用的shell

常见的SHELL在/etc/shells中

1
2
3
4
5
6
7
[root@MR ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

命令语法

(命令){选项} 【参数】

选项:可以没有,也可以很多个

​ 短格式之间可以合并

​ 长格式之间不能合并

参数:命令的对象,可以没有,也可以有多个

命令类型

  • 内部命令:shell内置
1
2
[root@MR ~]# type pwd
pwd 是 shell 内嵌
  • 外部命令:在某一个路径下面有一个和命令名称相对应的可执行文件
1
2
3
4
[root@MR ~]# type mv
mv 是 `mv -i' 的别名
[root@MR ~]# type passwd
passwd 是 /usr/bin/passwd

ls:列出指定目录的内容

​ -l 长格式显示

1
2
3
4
[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg

​ -h 做单位转换

​ -a 显示所有文件(包括隐藏文件)

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@MR ~]# ls -alh
总用量 48K
dr-xr-x---. 3 root root 4.0K 3月 23 17:50 .
drwxr-xr-x. 17 root root 4.0K 3月 23 14:47 ..
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
-rw-------. 1 root root 5.8K 3月 23 17:14 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 224 3月 7 21:59 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
-rw-------. 1 root root 5.4K 3月 23 16:43 .viminfo

​ -d 显示目录自身的属性

1
2
[root@MR ~]# ls -ld
dr-xr-x---. 3 root root 4096 3月 23 17:50 .

​ -t 以时间排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@MR ~]# ls -tl /
总用量 28
drwxrwxrwt. 7 root root 101 3月 26 17:25 tmp
drwxr-xr-x. 76 root root 8192 3月 26 17:04 etc
drwxr-xr-x. 23 root root 720 3月 26 17:03 run
drwxr-xr-x. 20 root root 3180 3月 26 17:03 dev
dr-xr-xr-x. 13 root root 0 3月 26 17:03 sys
drwxr-xr-x. 21 root root 4096 3月 26 17:03 var
dr-xr-xr-x. 418 root root 0 3月 26 17:03 proc
dr-xr-x---. 4 root root 4096 3月 10 00:17 root
drwxr-xr-x. 2 root root 6 3月 8 19:55 home
drwxr-xr-x. 3 root root 18 3月 8 17:59 mnt
dr-xr-xr-x. 3 root root 4096 3月 6 16:48 boot
drwxr-xr-x. 13 root root 4096 3月 6 16:30 usr
lrwxrwxrwx. 1 root root 9 3月 6 16:30 lib64 -> usr/lib64

​ -r 逆序显示

~]# ls -lar
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@MR ~]# ls -lar
总用量 48
-rw-------. 1 root root 5528 3月 23 16:43 .viminfo
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 224 3月 7 21:59 .bashrc
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-------. 1 root root 5844 3月 23 17:14 .bash_history
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
drwxr-xr-x. 17 root root 4096 3月 23 14:47 ..
dr-xr-x---. 3 root root 4096 3月 23 17:50 .

cd:切换目录

pwd:打印当前所在目录

1
2
3
4
5
[root@MR home]# pwd
/home
[root@MR home]# cd /etc
[root@MR etc]# pwd
/etc

mkdir:创建目录

-p:创建目录时若父目录不存在则自动创建

-v:显示创建目录的过程

1
2
3
4
5
6
[root@MR ~]# mkdir -vp a/{b/{d,e},c}
mkdir: 已创建目录 "a"
mkdir: 已创建目录 "a/b"
mkdir: 已创建目录 "a/b/d"
mkdir: 已创建目录 "a/b/e"
mkdir: 已创建目录 "a/c"

touch:创建空文件(更新文件时间)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
再次创建文件就是更新时间戳
[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 3月 23 18:05 1
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
drwxr-xr-x. 4 root root 22 3月 23 17:58 a
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
[root@MR ~]# touch 1
[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 3月 23 18:06 1
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
drwxr-xr-x. 4 root root 22 3月 23 17:58 a
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg

stat:显示文件或文件系统的状态

1
2
3
4
5
6
7
8
9
10
[root@MR ~]# stat 1
文件:"1"
大小:0 块:0 IO 块:4096 普通空文件
设备:fd00h/64768d Inode:68184559 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-03-23 18:06:15.458598473 +0800
最近更改:2019-03-23 18:06:15.458598473 +0800
最近改动:2019-03-23 18:06:15.458598473 +0800
创建时间:-

rm:删除文件

-r:递归删除,删除目录时必须使用此选项

-f:强制删除,不询问

1
2
3
4
5
6
7
8
9
[root@MR ~]# ls -l
总用量 4
-rw-r--r--. 1 root root 0 3月 23 18:06 1
drwxr-xr-x. 2 root root 43 3月 10 00:15 1111111
drwxr-xr-x. 4 root root 22 3月 23 17:58 a
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
[root@MR ~]# rm -rf a
[root@MR ~]# ls
1 1111111 anaconda-ks.cfg

cp:复制文件

一个文件到一个文件,多个文件到一个目录

-a:归档复制,常用于备份

-r:递归拷贝,拷贝目录时必须使用此选项

-p:拷贝时保留原权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@MR ~]# ls
1 2 3 A anaconda-ks.cfg b
[root@MR ~]# cp 1 2 3 A
[root@MR ~]# cd A
[root@MR A]# ls
1 2 3

[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 3月 23 18:12 A
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
[root@MR ~]# cp -arp A b
[root@MR ~]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 3月 23 18:12 A
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 3月 23 18:12 b

mv:移动文件(重命名)

1
2
3
4
5
6
7
8
[root@MR ~]# ls
1 2 3 A anaconda-ks.cfg b
[root@MR ~]# mv A B
[root@MR ~]# ls
1 2 3 anaconda-ks.cfg b B
[root@MR ~]# mv b B
[root@MR ~]# ls B
1 2 3 b

cat:顺序查看文本内容

拼接文件内容并输出至标准输出(屏幕)

-n:显示行号

1
2
3
4
5
6
7
8
9
[root@MR ~]# cat -n anaconda-ks.cfg
1 #version=RHEL7
2 # System authorization information
3 auth --enableshadow --passalgo=sha512
4
5 # Use CDROM installation media
6 cdrom
7 # Run the Setup Agent on first boot
............以下省略.............

tac:逆序查看文件内容

连接文件并倒序打印内容至标准输出

1
2
3
4
5
6
7
8
9
[root@MR ~]# tac anaconda-ks.cfg

%end

@core
%packages

clearpart --none --initlabel
# Partition clearing information

more:全屏查看文本文件内容

只能从前往后看,百分比查看,看完自动退出

1
2
3
4
5
6
7
8
9
10
[root@MR ~]# more anaconda-ks.cfg
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512

# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot

--More--(34%)

less:全屏查看文本文件内容

可从前往后看亦可从后往前看,看完不会自动退出

(往上是b,往下是空格,退出是q)

head:从前往后查看一定行数

默认下显示前十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的前多少行

1
2
3
4
5
6
7
[root@MR ~]# head CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
......................以下省略7条........................
[root@MR ~]# head -n 1 CentOS-Base.repo
# CentOS-Base.repo

tail:从后往前查看一定行数

默认下只显示后十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的后多少行

1
2
3
4
5
6
7
[root@MR ~]# tail CentOS-Base.repo
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
......................以下省略7条........................
[root@MR ~]# tail -n 1 CentOS-Base.repo
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6

-f:实时查看文件的更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@MR ~]# cat 1
123
456
789
[root@MR ~]# tail -f 1
123
456
789
#此时我们另开一个终端
[root@MR ~]# vim 1
#把789改为444
此时另外一个终端就会变
[root@MR ~]# tail -f 1
123
456
444

wc:用于统计文本文件的行数、字数、字节数

用于统计指定文本的行数、字数、字节数

-l 只显示行数

-w 只显示单词数

-c 只显示字节数

1
2
3
4
5
6
7
8
9
10
#例如我现在来统计刚才这个1文本
[root@MR ~]# wc -l 1
1 1
#1这个文本只有一行
[root@MR ~]# wc -w 1
4 1
#1这个文本只有4个单词
[root@MR ~]# wc -c 1
9 1
#1这个文本只有9个字节

du:查看文件或目录占用的磁盘空间大小

-s:显示总的占用空间大小

-h:单位转换,以更友好的方式显示大小

一般两者组合使用 du -sh

1
2
[root@MR ~]# du -sh anaconda-ks.cfg
4.0K anaconda-ks.cfg

df:报告文件系统磁盘空间使用情况

-h:单位转换,以更友好的方式显示大小

1
2
3
4
5
6
7
8
9
[root@MR ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/rhel-root 18G 937M 17G 6% /
devtmpfs 908M 0 908M 0% /dev
tmpfs 914M 0 914M 0% /dev/shm
tmpfs 914M 8.6M 905M 1% /run
tmpfs 914M 0 914M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom
/dev/sda1 497M 96M 401M 20% /boot

hostname:查看或临时修改主机名,重开终端有效,重启失效

1
2
3
4
5
6
[root@MR ~]# hostname 123
[root@MR ~]# bash
[root@123 ~]# reboot
#重启之后
[root@MR ~]# hostname
MR.ZLJ

hostnamectl:查看或永久修改主机名,重开终端有效,重启依然有效

可在/etc/hostname中配置

1
[root@MR ~]# vim /etc/hostname

clear:清屏

输入到屏幕后,屏幕会被清空

1
[root@MR ~]# clear

whoami:显示当前登录用户

1
2
[root@MR ~]# whoami
root

w:显示当前在线用户并显示其正在运行的命令

1
2
3
4
[root@MR ~]# w
20:57:35 up 4 min, 1 user, load average: 0.02, 0.10, 0.05
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 20:53 7.00s 0.02s 0.01s w

who:查看当前在线用户

1
2
[root@MR ~]# who
root pts/0 2019-03-23 20:53 (192.168.83.1)

which:显示指定命令的绝对路径

1
2
[root@MR ~]# which pwd
/usr/bin/pwd

cal:显示日历

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@zhoulijie ~]# cal
March 2019
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
# 在cal 后面更上年份,就显示那一年
[root@zhoulijie ~]# cal 2018
2018

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31
....................以下省略.................................

ldd:查看指定程序有哪些依赖库文件

1
2
3
4
[root@MR ~]# ldd /usr/bin/pwd
linux-vdso.so.1 => (0x00007fff58dfe000)
libc.so.6 => /lib64/libc.so.6 (0x00007f093cc15000)
/lib64/ld-linux-x86-64.so.2 (0x00007f093cfdc000)

date:显示示或设置日期与时间

-s:以字符串方式设置时间

1
2
3
4
[root@MR ~]# date
2019年 03月 23日 星期六 20:59:54 CST
[root@MR ~]# date -s "2019-03-23 21:00:00"
2019年 03月 23日 星期六 21:00:00 CST

格式化输出时间:

+%Y:年 %m:月 %d:日 %H:时 %M:分 %S:秒

1
2
3
4
5
6
7
8
9
[root@MR ~]# mkdir $(date '+%Y-%m-%d'-测试)
[root@MR ~]# ls
index.html.1 111_file anaconda-ks.cfg
2019-03-23-测试
[root@MR ~]# mkdir `date '+%Y-%m-%d-%H:%M:%S'-测试`
[root@MR ~]# ls
2019-03-23-测试
111_file 2019-03-09-测试 index.html.1
2019-03-23-11:56:35-测试 anaconda-ks.cfg

获取帮助

内部命令:help 【命令】

外部命令:【命令】–help

man手册:man【命令】

通配符

*:匹配任意长度的任意字符

1
2
3
4
5
[root@zhoulijie opt]# ls
123456789 185dcdvdv 1cshcd acvbfv bgfdbdsgv
[root@zhoulijie opt]# rm -rf 1*
[root@zhoulijie opt]# ls
acvbfv bgfdbdsgv

?:是匹配任意单个字符

1
2
3
4
[root@zhoulijie opt]# ls
acvbfv al bgfdbdsgv
[root@zhoulijie opt]# ls a?
al

[]:是匹配指定范围内的单个字符

1
2
3
4
5
6
7
8
[root@zhoulijie wen]# ls
1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m
[root@zhoulijie wen]# ls [1-9]
1 2 3 4 5 6 7 8 9
[root@zhoulijie wen]# ls [1,a]
1 a
[root@zhoulijie wen]# ls [a-h]
a b c d e f g h

[^]:是匹配指定范围之外的任意单个字符

1
2
3
4
[root@zhoulijie wen]# ls [^a-m]
1 2 3 4 5 6 7 8 9
[root@zhoulijie wen]# ls [^1-9]
a b c d e f g h i j k l m

常见的归档与压缩文档格式

  • .gz
  • .bz2
  • .xz
  • .zip
  • .z

归档工具–tar

常见的选项:

  • -c:创建归档文件
  • -f file.tar:指定要操作的归档文件
  • -x:还原归档文件
  • -v:显示归档过程
  • -p:归档时保留权限信息。只有管理员才有此权限用此选项
  • -C:指定还原归档或解压时的目录
  • -tf:不展开归档,直接查看归档了哪些文件

常用的组合项:

  • -zcf abc.tar.gz:归档并调用gzip进行压缩
1
2
3
4
5
[root@MR ~]# ls
1 2 3 anaconda-ks.cfg B
[root@MR ~]# tar -zcf abc.tar.gz 1 2 3
[root@MR ~]# ls
1 2 3 abc.tar.gz anaconda-ks.cfg B
  • -jcf abc.tar.bz2:归档并调用bzip2进行压缩
1
2
3
[root@MR ~]# tar -jcf abc.tar.bz2 1 2 3
[root@MR ~]# ls
1 2 3 abc.tar.bz2 abc.tar.gz anaconda-ks.cfg B
  • -Jcf abc.tar.xz:归档并调用xz进行压缩
1
2
3
[root@MR ~]# tar -Jcf abc.tar.xz 1 2 3
[root@MR ~]# ls
1 2 3 abc.tar.bz2 abc.tar.gz abc.tar.xz anaconda-ks.cfg B
  • -xf abc.tar.gz:解压
  • -C 是指定解压后的文件放哪里
1
2
3
4
[root@MR ~]# mkdir q
[root@MR ~]# tar -xf abc.tar.bz2 -C q
[root@MR ~]# ls q
1 2 3

文本排序命令sort

  • -n 以数值大小进行排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@MR ~]# vim 123
12
3
10
4
7
1
[root@MR ~]# sort -n 123
1
3
4
7
10
12
  • -u:去重,排序后相同的行只显示一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -u 1
1
3
5
7
9

文本去重命令uniq

此命令要结合前面的一个命令sort -n 排序后才能使用

​ -c:显示文件中行重复的次数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -c
2 1
2 3
1 5
2 7
2 9

​ -d:只显示重复的行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -d
1
3
7
9

​ -u:只显示未重复的行

1
2
3
4
5
6
7
8
9
10
11
12
[root@zhoulijie tmp]# cat 1
1
3
5
7
9
1
7
9
3
[root@zhoulijie tmp]# sort -n 1 | uniq -u
5

cut 提取

-d:指定字段为分隔符,默认是空格

-f:指定要显示的字段,可以是“,”,也可以是“—”

​ -f 1,5 显示一和五行

​ -f1-5 显示一到五行

1
2
3
4
5
6
7
8
9
10
11
12
[root@MR ~]# cut -d: -f 1,5 /etc/passwd
root:root
bin:bin
daemon:daemon
adm:adm
lp:lp
sync:sync
shutdown:shutdown
halt:halt
mail:mail
operator:operator
.........以下省略。。。。。。。。。。

awk 高级提取

-F:指定字段为分隔符,默认是空格

NR== :后接数字,代表第几行

$ :后接数字,代表第几列,多列之间用“,”隔开

在ifconfig中查找IP地址

1
2
[root@MR ~]# ifconfig | awk -F' ' 'NR==2 {print $2}'
172.17.206.240
1
2
[root@MR ~]#  ip a | awk 'NR==9 { print $2 }'| awk -F/ '{print $1}'
192.168.83.130

sed 高级替换

替换格式为:sed -i ‘s/需要替换的字符/替换的字符/y’ 后接文件

1
2
3
4
5
6
7
8
9
10
11
12
[root@MR ~]# cat abc
hello nihao
hello 123
hello 456
hello nihao

[root@MR ~]# sed -i 's/nihao/hi/g' abc
[root@MR ~]# cat abc
hello hi
hello 123
hello 456
hello hi

文件命名规范

  • 长度不能超过255字符
  • 不能使用/当文件名
  • 严格区分大小写

文本过滤grep

grep命令广泛用于在文本中执行关键词搜索,并且显示匹配结果

1
2
3
4
[root@zhoulijie tmp]# grep /bin/bash  /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhang:x:998:997::/home/zhang:/bin/bash
zhou:x:1000:1000::/home/zhou:/bin/bash

此命令广泛用于与管道符相结合使用

1
2
[root@zhoulijie tmp]# cat anaconda-ks.cfg | grep password
# Root password

文件查找命令find

用于按照指定条件来查找文件

  • -name 匹配名称
1
2
3
4
5
6
7
[root@zhoulijie tmp]# find / -name fstab
/etc/fstab
[root@zhoulijie tmp]# find / -name sda
/dev/sda
/sys/devices/pci0000:00/0000:00:10.0/host7/target7:0:0/7:0:0:0/block/sda
/sys/block/sda
/sys/class/block/sda
  • -user 匹配所有者
1
2
3
4
5
6
7
8
9
10
[root@zhoulijie tmp]# find / -user zhou
find: ‘/proc/3238/task/3238/fd/6’: 没有那个文件或目录
find: ‘/proc/3238/task/3238/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/3238/fd/6’: 没有那个文件或目录
find: ‘/proc/3238/fdinfo/6’: 没有那个文件或目录
/var/spool/mail/zhou
/home/zhou
/home/zhou/.bash_logout
/home/zhou/.bash_profile
/home/zhou/.bashrc
  • xargs 通过管道符将查找到的内容给xargs处理,后接命令
1
2
3
4
[root@zhoulijie tmp]# ls a
[root@zhoulijie tmp]# find / -name fstab | xargs cp -t a
[root@zhoulijie tmp]# ls a
fstab

文件的层级系统

FHS:文件层级系统

  • /:根分区
  • /boot:开机所需文件——内核、开机菜单以及所需要配置文件等
  • /dev:以文件形式存放任何设备与接口
  • /etc:配置文件
  • /home:普通用户的家目录
  • /root:系统管理员的家目录
  • /bin:存放单用户模式下还可以操作的命令
  • /lib:开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数
  • /sbin:开机过程中需要的命令
  • /media:挂载点目录,通常用来挂载移动硬盘
  • /mnt:挂载点目录,通常用来挂载额外的临时文件系统
  • /opt:放置第三方的软件
  • /sys:伪文件系统,跟硬盘设备文键相关的属性映射文件,不能单独分区
  • /srv:一些网络服务的数据文件目录
  • /tmp:任何人均可以使用的“共享”临时目录
  • /proc:虚拟文件系统,例如系统内核、进程、外部设备及网络状态等
  • /usr:全局共享只读文件。提供操作系统核心功能,可以单独分区
  • /usr/local:用户自行安装的软件
  • /usr/sbin:Linux系统开机时不会使用到的软件/命令/脚本
  • /usr/share:帮助与说明文档,也可放置共享文件
  • /var:主要存放经常变化的文件,如日志
  • /lost+found:当文件系统发生错误时,将一些丢失的文件片段存放在这里

/etc、/bin、/sbin、/lib等目录内时系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上

/usr/bin、/usr/sbin、/usr/lib提供操作系统核心功能,/usr可以单独分区

/usr/local/bin、/usr/local/sbin、/usr/local/lib、/usr/local/etc、/usr/local/man等等在/usr/local目录下的内容都是第三方软件,建议单独分区

重定向

【覆盖输出】:>

1
2
3
4
5
6
[root@zhoulijie tmp]# ls
[root@zhoulijie tmp]# echo "1234" > 123
[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# cat 123
1234

【追加输出】:>>

1
2
3
4
5
6
[root@zhoulijie tmp]# cat 123
1234
[root@zhoulijie tmp]# echo "5678" >> 123
[root@zhoulijie tmp]# cat 123
1234
5678

【错误覆盖输出】:2>

1
2
3
4
5
6
7
[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# ls abc
ls: 无法访问abc: 没有那个文件或目录
[root@zhoulijie tmp]# ls abc 2> 123
[root@zhoulijie tmp]# cat 123
ls: 无法访问abc: 没有那个文件或目录

【标准覆盖输出和错误覆盖输出到同一文件里面】:&>

1
2
3
4
5
6
[root@zhoulijie tmp]# ls
123
[root@zhoulijie tmp]# ls -l 123 abc &> qqq
[root@zhoulijie tmp]# cat qqq
ls: 无法访问abc: 没有那个文件或目录
-rw-r--r--. 1 root root 10 3月 25 18:38 123

【输入重定向】:<

此输入重定向适用于mysql语句中恢复sql

1
[root@zhoulijie tmp]# mysql < 1.sql

管道符

命令A |命令B

意思就是前一个命令的结果交给后一个命令去处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@zhoulijie tmp]# cat anaconda-ks.cfg | grep password
# Root password
[root@zhoulijie tmp]# touch a | ls -l | tee a
总用量 12
-rw-r--r--. 1 root root 10 3月 25 18:38 123
-rw-r--r--. 1 root root 0 3月 25 18:59 a
-rw-------. 1 root root 810 3月 25 18:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 95 3月 25 18:39 qqq
[root@zhoulijie tmp]# cat a
总用量 12
-rw-r--r--. 1 root root 10 3月 25 18:38 123
-rw-r--r--. 1 root root 0 3月 25 18:59 a
-rw-------. 1 root root 810 3月 25 18:55 anaconda-ks.cfg
-rw-r--r--. 1 root root 95 3月 25 18:39 qqq

linux下的编辑器

linux中常见的文本编辑器有:

  • emacs
  • pico
  • nano
  • joe
  • jed
  • vi/vim

vi/vim编辑器

vi/vim编辑器是linux和unix上最基本的文本编辑器,工作在字符模式下。由于不需要图形界面,vi/vim是效率很高的文本编辑器。尽管在linux上也有很多图形界面的编辑器可用,但vi/vim在系统和服务器管理中的功能是那些图形编辑器所无法比拟的

vi/vim编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的.

vim是vi的增强版,比vi更容易使用。vi的命令几乎都可以在vim上使用。

特点

  • vi/vim是一种纯文本编辑器,它不像word可以排版,可以调整字体大小,可以改变字体等等
  • vi/vim只是一个文本编辑工具,只能对文本的内容进行操作,比如新增内容、修改内容、删除内容等等
  • 全屏幕显示

vi/vim的三种编辑模式

  • 末行模式
  • 命令模式
  • 输入模式

三者的作用:

  • 末行模式:用于查找文本、保存修改等等
  • 命令模式:用户执行,比如复制、粘贴行等等
  • 输入模式:用于输入文本、修改文本等等

vi/vim三者之间的切换方式

  • 命令模式到输入模式

按”i”跳转到当前光标所在行的行首

按”a”调转到当前光标所在行的行位

按”o”在当前光标所在行的下方再新建一行并跳转到那一行

  • 输入模式到命令模式

按”Esc”键

  • 命令模式到末行模式

按ctrl“+”:”键

  • 末行模式到命令模式

狂按”Esc”键

关闭文件方式

在末行文件下关闭文件:

  • q 退出
  • w 保存
  • wq 保存并退出
  • q! 强制退出

在命令模式下关闭文件

  • zz

常用操作

  • K :向上移动
  • J :向下移动
  • H:向左移动
  • L:向右移动
  • 10 gg 跳转到10行(输入数字几,再按gg就代表跳多少行
  • dd :删除当前光标所在行一整行
  • 1,3d :表示删除第一行到第三行
  • 复制命令:yy
  • 粘贴命令:p
  • 替换:r

r#:将当前光标的字符替换成为#,这里的#可以是任意字符

  • 撤销:u

ctrl+r:还原最近一次撤销操作

  • 重复前一次编辑操作:.
  • 文本查找:/字符 或者 ?字符

/ 字符:从上往下查找这个字符并高亮显示

?字符:从下往上查找这个字符并高亮显示

  • 查找并替换:s///g

此命令只能在末行模式下使用

1
2
3
4
5
6
7
8
9
1234
5678
1234
5678
1234
5678
~
~
:1,4 s/1234/abcd/g
1
2
3
4
5
6
7
8
9
abcd
5678
abcd
5678
1234
5678
~
~
:1,4 s/1234/abcd/g 3,1 全部
  • 末行模式下显示或取消显示行号

set nu 显示行号

set nonu 取消显示行号

初步熟悉RHEL 8

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

[TOC]

RHEL 8 配置网络

在RHEL 8中将再次支持service

1
2
3
4
5
6
7
8
9
10
11
[root@zhoulijie ~]# service NetworkManager status
Redirecting to /bin/systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; ven>
Active: active (running) since Fri 2019-05-24 17:46:36 CST; 8min ago
Docs: man:NetworkManager(8)
Main PID: 1041 (NetworkManager)
Tasks: 3 (limit: 12389)
Memory: 12.3M
CGroup: /system.slice/NetworkManager.service
└─1041 /usr/sbin/NetworkManager --no-daemon

相关服务已经转移到NetworkManager , network时代已经一去不复返

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@zhoulijie ~]# systemctl status net
netcf-transaction.service network.service
network-online.target network.target
network-pre.target
[root@zhoulijie ~]# systemctl status network
Unit network.service could not be found.
[root@zhoulijie ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; ven>
Active: active (running) since Fri 2019-05-24 17:46:36 CST; 11min ago
Docs: man:NetworkManager(8)
Main PID: 1041 (NetworkManager)
Tasks: 3 (limit: 12389)
Memory: 12.3M
CGroup: /system.slice/NetworkManager.service
└─1041 /usr/sbin/NetworkManager --no-daemon

修改IP地址不建议去修改配置文件,因为重启网卡后新IP是不生效的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.128 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe1c:4e0f:cc9b:30fb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b3:bd:c2 txqueuelen 1000 (Ethernet)
RX packets 1136 bytes 1250792 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 237 bytes 19907 (19.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@zhoulijie ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
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"
UUID="fdb7da01-d972-42f3-b21c-1dbeb70d18ac"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.107.144
NETMASK=255.255.255.0
GATEWAY=192.168.107.2
[root@zhoulijie ~]# systemctl restart NetworkManager
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.128 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe1c:4e0f:cc9b:30fb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b3:bd:c2 txqueuelen 1000 (Ethernet)
RX packets 1152 bytes 1251752 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 241 bytes 20249 (19.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

从上面我们可以看出,更改IP后重启网卡,IP地址依然不会变

重启网卡需要nmcli connection down/up ens33

1
2
3
4
5
6
7
8
9
10
11
[root@zhoulijie ~]# nmcli connection up ens33 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.144 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe1c:4e0f:cc9b:30fb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b3:bd:c2 txqueuelen 1000 (Ethernet)
RX packets 1187 bytes 1254035 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 273 bytes 24045 (23.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

此时IP就已经显示192.168.107.144

其实RHEL 8 中更加推荐去使用nmcli connection modify ens33ipv4.addressesxxx.xxx.xxx.xxx/xx ipv4.method manual ipv4.gateway xxx.xxx.xxx.xxx ipv4.dns xxx.xxx.xxx.xxx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@zhoulijie ~]# nmcli connection modify ens33 ipv4.addresses 192.168.107.155/24 ipv4.method manual ipv4.gateway 192.168.107.2
[root@zhoulijie ~]# nmcli connection down ens33
成功停用连接 "ens33"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)

[root@zhoulijie ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.155 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe1c:4e0f:cc9b:30fb prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:b3:bd:c2 txqueuelen 1000 (Ethernet)
RX packets 1361 bytes 1264826 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 308 bytes 28081 (27.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

如果您觉得命令不好记住,这些命令其实是都可以tab出来的,英语不好的人可以记住前几个字母

如果您觉得用的不顺手,忘不了RHEL 7,您可以安装这个包network-scripts

1
2
3
4
5
[root@localhost cdrom]# dnf -y install network-scripts
已安装:
network-scripts-10.00.1-1.el8.x86_64 network-scripts-team-1.27-10.el8.x86_64

完毕!
1
2
3
4
5
6
7
8
9
10
[root@zhoulijie ~]# systemctl restart network
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.129 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe72:33a5:86f:3a59 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:ef:e4 txqueuelen 1000 (Ethernet)
RX packets 1808 bytes 1305614 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 344 bytes 33518 (32.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

RHEL 8 配置yum源

在RHEL8中把软件源分成了两部分

一个是BaseOS

一个是AppStream

在RHEL 8中,统一的ISO自动加载BaseOS和AppStream安装源存储库,已经存在于光盘链接中,只不过要分别去配置.repo文件

BaseOS 存储库 - BaseOS 存储库以传统 RPM 包的形式提供底层核心 OS 内容

AppStream 存储库 - Application Stream 存储库提供您可能希望在给定用户空间中运行的所有应用程序。

1
2
3
4
[root@zhoulijie ~]# ls /mnt/cdrom/
AppStream EULA images RPM-GPG-KEY-redhat-beta
BaseOS extra_files.json isolinux RPM-GPG-KEY-redhat-release
EFI GPL media.repo TRANS.TBL
1
2
3
4
5
6
7
8
9
10
11
12
[root@zhoulijie ~]# cat /etc/yum.repos.d/zhoulijie.repo 
[zhoulijie_App]
name=AppStream
baseurl=file:///mnt/cdrom/AppStream
enabled=1
gpgcheck=0

[zhoulijie]
name=BaseOS
baseurl=file:///mnt/cdrom/BaseOS
enabled=1
gpgcheck=0
1
2
3
4
5
6
7
8
9
10
11
12
[root@zhoulijie ~]# yum install -y nginx
已安装:
nginx-1:1.14.1-8.module+el8+2505+fe936cef.x86_64
nginx-all-modules-1:1.14.1-8.module+el8+2505+fe936cef.noarch
nginx-filesystem-1:1.14.1-8.module+el8+2505+fe936cef.noarch
nginx-mod-http-image-filter-1:1.14.1-8.module+el8+2505+fe936cef.x86_64
nginx-mod-http-perl-1:1.14.1-8.module+el8+2505+fe936cef.x86_64
nginx-mod-http-xslt-filter-1:1.14.1-8.module+el8+2505+fe936cef.x86_6
nginx-mod-mail-1:1.14.1-8.module+el8+2505+fe936cef.x86_64
nginx-mod-stream-1:1.14.1-8.module+el8+2505+fe936cef.x86_64

完毕!

如何使用DNF

DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和hawkey 库进行包管理操作。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
DNF 的发行日期是2015年5月11日。

具体使用方法:
查看系统中可用的 DNF 软件库
dnf repolist
查看系统中可用和不可用的所有的 DNF 软件库
dnf repolist all
列出所有 RPM 包
dnf list
列出所有安装了的 RPM 包
dnf list installed
列出所有可供安装的 RPM 包
dnf list available
搜索软件库中的 RPM 包
dnf search nano
查找某一文件的提供者
dnf provides /bin/bash
查看软件包详情
dnf info nano
安装软件包
dnf install nano
删除软件包
dnf remove nano
删除无用孤立的软件包
dnf autoremove
删除缓存的无用软件包
dnf clean all
获取有关某条命令的使用帮助
dnf help clean
查看 DNF 命令的执行历史
dnf history
查看所有的软件包组
dnf grouplist
安装一个软件包组
dnf groupinstall ‘安全性工具’
从特定的软件包库安装特定的软件
dnf -enablerepo=epel install nginx
重新安装特定软件包
dnf reinstall nano
----------此板块来源于CSDN社区

运维利器之cockpit

cockpit人称飞机驾驶舱

在web浏览器中查看服务器并使用鼠标执行系统任务。很容易管理存储、配置网络和检查日志等操作。

  • RHEL 8 自动安装了 CockpitCockpit 所需的防火墙端口会自动打开
  • Cockpit 界面可用于将基于策略的解密(PBD)规则应用于受管系统上的磁盘
  • 对于在身份管理(IdM)域中注册的系统,Cockpit 默认使用域的集中管理的 IdM 资源
  • Cockpit 菜单和页面可以在移劢浏览器上导航
  • 可以从 Cockpit Web 界面创建和管理虚拟机
  • 现在可以将“虚拟机”页面添加到 Cockpit 界面,该界面使用户可以创建和管理基于 libvirt 的虚拟机

安装cockpit

1
[root@zhoulijie ~]# dnf -y install cockpit

启动cockpit

1
2
3
[root@zhoulijie ~]# systemctl enable --now cockpit.socket

# 在RHEL 8里面设置开机自启动以及同时开启服务用一条命令就可以解决

使用cockpit

cockpit监听9090端口

1
2
[root@zhoulijie ~]# netstat -atnpu | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 1/systemd
1
2
3
4
5
6
7
8
9
[root@zhoulijie ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.107.129 netmask 255.255.255.0 broadcast 192.168.107.255
inet6 fe80::fe72:33a5:86f:3a59 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:ef:e4 txqueuelen 1000 (Ethernet)
RX packets 2491 bytes 1348562 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 383 bytes 37089 (36.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

步骤详解

  • 打开火狐浏览器
  • 输入https://192.168.107.129:9090
  • 点击Advanced

  • 点击Add Exception…

  • 此处默认

  • 输入用户名以及用户密码

  • 右上角选择语言

  • 已支持中文

  • 并且支持远程控制

cockpit小结

将支持图形界面化操作,对管理存储,以及配置网络和检查日志等操作都有着及其强大的方便。

这将对年轻人有者极其强大的方便,使其更加的容易上手,更方便的去学习、倡导开源之路。

  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信