Linux学习笔记

并未涉及Linux全部内容,根据上课所做的一份笔记

Linux进入拯救模式修改root密码

  1. 选择系统时按 e
  2. UTF-8 后添加 init=/bin/sh
    按ctrl+x 保存启动
  3. 可能会乱码 执行LANG=en
  4. 添加权限mount -o remount rw, /
  5. 修改密码 passwd root
  6. touch /.autorelabel
  7. 重启 exec /sbin/init

报错 passwd:Authentication token manipulation error

image-20220111143654740
image-20220111143752146
将 shadow- 重命名为 shadow
image-20220111143849254

设置时区

查看所有时区命令

timedatectl list-timezones

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost tmp]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville

设置时区

timedatectl set-timezone "Asia/Shanghai"

查看时间

clock

1
2
[root@localhost tmp]# clock
2021年11月21日 星期日 19时45分48秒 -0.744897 秒

data -R

1
2
[root@localhost tmp]# date -R
Sun, 21 Nov 2021 19:44:39 +0800

文件命令相关操作

创建文件夹 mkdir

创建文件 touch 文件名 cat “内容”>文件名 echo “内容”>文件名

查看文件 cat 文件名

移动文件 mv 文件名 移动目录/

删除文件 rm 文件名

查找文件 find 路径 -name 文件名

创建一个大小为4G的文件

dd if=/dev/zero of=文件名 bs=1 count=0 seek=4G

1
2
3
4
5
6
7
8
[root@localhost tmp]# dd if=/dev/zero of=1.txt bs=1 count=0 seek=4G
记录了0+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.00341132 秒,0.0 kB/秒

[root@localhost tmp]# ll
总用量 4
-rw-r--r--. 1 root root 4294967296 11月 21 19:46 1.txt

系统运行级与运行级的切换

系统运行级
运行级 状态
0 关闭计算机
1 单用户拯救模式
2 多用户模式
3 多用户模式
4 多用户模式
5 多用户模式,用于自动启动XFree86系统(图形界面)
6 重新启动
Q/q 重新加载init守护进程配置
U/u 重新执行init守护进程
切换运行级
1
init 1
查看当前系统运行级
1
runlevel
1
2
[root@localhost ~]# runlevel
1 3
系统运行级的服务
1
2
chkconfig 查看服务
// 只能查看SysV服务,基本被systemctl 命令取代
1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。

要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。

netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
1
systemctl
  • 列出系统中所有活动的服务
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
[root@localhost ~]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
crond.service loaded active running Command Scheduler
dbus.service loaded active running D-Bus System Message Bus
firewalld.service loaded active running firewalld - dynamic firewall daemon
getty@tty1.service loaded active running Getty on tty1

● kdump.service loaded failed failed Crash recovery kernel arming
kmod-static-nodes.service loaded active exited Create list of required static device nodes for the current kernel
lvm2-monitor.service loaded active exited Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
network.service loaded active exited LSB: Bring up/down networking
NetworkManager-wait-online.service loaded active exited Network Manager Wait Online
NetworkManager.service loaded active running Network Manager
polkit.service loaded active running Authorization Manager
postfix.service loaded active running Postfix Mail Transport Agent
rhel-dmesg.service loaded active exited Dump dmesg to /var/log/dmesg
rhel-domainname.service loaded active exited Read and set NIS domainname from /etc/sysconfig/network
rhel-import-state.service loaded active exited Import network configuration from initramfs
rhel-readonly.service loaded active exited Configure read-only root support
rsyslog.service loaded active running System Logging Service
sshd.service loaded active running OpenSSH server daemon
systemd-journal-flush.service loaded active exited Flush Journal to Persistent Storage
systemd-journald.service loaded active running Journal Service
systemd-logind.service loaded active running Login Service
systemd-random-seed.service loaded active exited Load/Save Random Seed
systemd-remount-fs.service loaded active exited Remount Root and Kernel File Systems
systemd-sysctl.service loaded active exited Apply Kernel Variables
systemd-tmpfiles-setup-dev.service loaded active exited Create Static Device Nodes in /dev
systemd-tmpfiles-setup.service loaded active exited Create Volatile Files and Directories
  • 显示系统环境

    1
    2
    3
    [root@localhost ~]# systemctl show-environment
    LANG=zh_CN.UTF-8
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
  • 获取系统默认目标的名称

    1
    2
    [root@localhost ~]# systemctl get-default
    multi-user.target
  • 禁用sshd服务

    1
    2
    3
    [root@localhost ~]# systemctl disable sshd.service
    Removed symlink /etc/systemd/system/multi-user.target.wants/sshd.service.
    // systemctl disable/enable sshd.service disable禁用 enable开启
  • 从系统运行级5切换到系统运行级3

    1
    systemctlusolate multi-user.target

    未找到命令

  • 显示NFS服务的运行状态

    1
    systemctl status nfs.service

    未找到服务

  • 检查是否启用了ssh服务

    1
    2
    [root@localhost ~]# systemctl is-enabled sshd
    enabled
  • 列出系统上安装的所有单元,包括失效或空的

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    [root@localhost ~]# systemctl list-unit-files
    UNIT FILE STATE
    proc-sys-fs-binfmt_misc.automount static
    dev-hugepages.mount static
    dev-mqueue.mount static
    proc-sys-fs-binfmt_misc.mount static
    sys-fs-fuse-connections.mount static
    sys-kernel-config.mount static
    sys-kernel-debug.mount static
    tmp.mount disabled
    brandbot.path disabled
    systemd-ask-password-console.path static
    systemd-ask-password-plymouth.path static
    systemd-ask-password-wall.path static
    session-1.scope static
    session-2.scope static
    session-3.scope static
    arp-ethers.service disabled
    auditd.service enabled
    autovt@.service enabled
    blk-availability.service disabled
    brandbot.service static
    chrony-dnssrv@.service static

用户登录与账户管理

添加用户

1
useradd [选项] 用户名
选项 说明
-c<备注> 加上备注文章,备注文字会保存在passwd得备注栏位中
-d<登录目录> 指定用户登入时起始目录
-D 变更预设值
-e<有效期限> 指定账户的有效期限
-f<缓存天数> 指定在密码过期后多少天即关闭该帐号。
-g<群组> 指定用户所属的群组。
-G<群组> 指定用户所属的附加群组。
-m 自动建立用户的登入目录。
-M 不要自动建立用户的登入目录。
-n 取消建立以用户名称为名的群组.
-s 指定用户登入后所使用的shell
-u 指定用户ID

为添加的用户指定相应的用户组

1
useradd -g root test01

创建一个系统用户

1
useradd -r tt

为新添加的用户指定home目录

1
useradd -d /home/test01 test01

设置用户密码

1
passwd 用户名

批量创建用户

  1. 创建userfile.txt的文件

    1
    2
    student01:x:520:520::/home/student01:/sbin/nologin
    student02:x:521:521::/home/student02:/sbin/nologin
    image-20211217090040734
    1. 创建对应的userpwdfile.txt

      1
      2
      student01:123456
      student02:123456
      image-20211217090159047
    2. 使用newusers批量添加用户

      1
      newusers userfile.txt
| ![image-20211217090840336](https://hexo-1253463144.cos.ap-chongqing.myqcloud.com/image-20211217090840336.png) |
| ------------------------------------------------------------ |
  1. chpasswd批量修改密码

    执行命令/usr/sbin/pwunconv,将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中, 并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消shadow password功能,关闭影子文件。

    1
    2
    3
    pwunconv // 
    chpasswd < userpwdfile.txt // 批量修改密码
    pwunconv // 恢复影子文件
    cat /etc/passwd

删除用户

1
2
userdel [-r] 用户名
// -r 代表递归删除用户目录下的所有文件和文件夹

用户组操作

添加用户群组
1
2
groupadd [选项] group
// group群组名
删除用户群组
1
2
grouddel group
// group 群组名
为用户添加用户组

-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。

1
usermod -a -G groupA user

将用户登录名test01修改为test02,将工作目录改为/home/test02,将所属群组该为root

1
usermod -l test01 test02 -d /home/test02 -m -g root
将用户从用户组中移除
1
gpasswd -d userName groupName
修改用户群组属性
1
groupmod [-g gid [-o]][-n new_group_name] old_group_name
选项 说明
-g gid 设置新群组的标识号
-o 重复使用群组的标识号
-n old_name new_name 设置新群组名称

查看登录用户

who 查看目前登录的用户信息

w 查询登录用户的详细信息

last 搜索/var/log/wtmp文件 显示自创建该文件以来登录(和退出)的所有用户列表

lastlog 显示所有用户的最近登录情况,或者指定用户最近的登录情况

查看近两年登录的用户

1
lastlog -t 2

改变用户身份

su

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
用法:
su [选项] [-] [USER [参数]...]

将有效用户 id 和组 id 更改为 USER 的 id。
单个 - 视为 -l。如果未指定 USER,将假定为 root。

选项:
-m, -p, --preserve-environment 不重置环境变量
-g, --group <组> 指定主组
-G, --supp-group <组> 指定一个辅助组

-, -l, --login 使 shell 成为登录 shell
-c, --command <命令> 使用 -c 向 shell 传递一条命令
--session-command <命令> 使用 -c 向 shell 传递一条命令
而不创建新会话
-f, --fast 向shell 传递 -f 选项(csh 或 tcsh)
-s, --shell <shell> 若 /etc/shells 允许,则运行 shell

-h, --help 显示此帮助并退出
-V, --version 输出版本信息并退出

在低权限用户下用root用户执行命令

1
su -c "whoami" root

sudo

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
sudo - 以其他用户身份执行一条命令

usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ...

选项:
-A, --askpass 使用助手程序进行密码提示
-b, --background 在后台运行命令
-C, --close-from=num 关闭所有 >= num 的文件描述符
-E, --preserve-env 在执行命令时保留用户环境
--preserve-env=list 保留特定的环境变量
-e, --edit 编辑文件而非执行命令
-g, --group=group 以指定的用户组或 ID 执行命令
-H, --set-home 将 HOME 变量设为目标用户的主目录。
-h, --help 显示帮助消息并退出
-h, --host=host 在主机上运行命令(如果插件支持)
-i, --login 以目标用户身份运行一个登录 shell;可同时指定一条命令
-K, --remove-timestamp 完全移除时间戳文件
-k, --reset-timestamp 无效的时间戳文件
-l, --list 列出用户权限或检查某个特定命令;对于长格式,使用两次
-n, --non-interactive 非交互模式,不提示
-P, --preserve-groups 保留组向量,而非设置为目标的组向量
-p, --prompt=prompt 使用指定的密码提示
-r, --role=role 以指定的角色创建 SELinux 安全环境
-S, --stdin 从标准输入读取密码
-s, --shell 以目标用户运行 shell;可同时指定一条命令
-t, --type=type 以指定的类型创建 SELinux 安全环境
-T, --command-timeout=timeout 在达到指定时间限制后终止命令
-U, --other-user=user 在列表模式中显示用户的权限
-u, --user=user 以指定用户或 ID 运行命令(或编辑文件)
-V, --version 显示版本信息并退出
-v, --validate 更新用户的时间戳而不执行命令
-- 停止处理命令行参数

文件系统管理

软连接硬链接

ln

参数 说明
-s 创建软连接
-d 创建硬链接(不写默认)

软硬链接区别

  • 软连接
    • 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
    • 软链接可以 跨文件系统 ,硬链接不可以
    • 软链接可以对一个不存在的文件名进行链接
    • 软链接可以对目录进行链接
  • 硬链接
    • 硬链接,以文件副本的形式存在。但不占用实际空间。
    • 不允许给目录创建硬链接
    • 硬链接只有在同一个文件系统中才能创建

给文件创建一个软连接

1
ln -s log2013.log link2013

给文件创建一个硬连接

1
ln log2013.log ln2013

查看磁盘分区信息

1
/sbin/fdisk -l
image-20211222105513556

文件权限

1
2
3
chmod u+s  [file] 

// 给用户的某个文件增加超级权限

参数

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
u 文件所有者

g 用户组

o 其他用户

a 所有用户

--------------------------------------

r(4) 读取权限

w(2) 写入权限

x(1) 执行权限


t 粘贴位(给其他用户(o)设置超级权限的时候,没有执行权限(x)显示T,如果其他用户有执行权限(x),那么就会变成t)
s 特殊权限
- 没有权限

所属者 对应 SUID 特殊权限
所有者 对应 SGID 特殊权限
所有人 对应 sticky 特殊权限

当设置特殊权限为4
4转换为2进制为100分别对应
所属者 所属组 所有人
1 0 0

那么特殊权限为SUID

当设置特殊权限为1
1转换为2进制为001分别对应
所属者 所属组 所有人
0 0 1

那么特殊权限为sticky

特殊权限

当权限编码数字长度为4个的时候,第一位表示特殊权限,后三位表示普通权限

第一位表示特殊权限时,具体分为8中情况:

当第一位是0,特殊权限为空

当第一位是1,特殊权限为sticky

当第一位是2,特殊权限为SGID

当第一位是3,特殊权限为SGID,sticky

当第一位是4,特殊权限为SUID

当第一位是5,特殊权限为SUID,sticky

当第一位是6,特殊权限为SUID,SGID

当第一位是7,特殊权限为SUID,SGID,sticky

快速转换十进制转二进制

转换表

1
1 2 4 8 16 32 64 128

将 77 转为二进制

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
1 2 4 8 16 32 64 128
0 0 0 0 0 0 0 0
77 在 64 -128 区间内
在64 位将0 替换为1
1 2 4 8 16 32 64 128
0 0 0 0 0 0 1 0
在将 77 - 64 = 13
13 在 在 8 - 16 区间
在8 位将0 替换为1
1 2 4 8 16 32 64 128
0 0 0 1 0 0 1 0
在将 13 - 8 = 5
5 在 在 4 - 8 区间
在4 位将0 替换为1
1 2 4 8 16 32 64 128
0 0 1 1 0 0 1 0
在将 5 - 1 = 1
1 就是第一位
直接将第一位替换为 1
1 2 4 8 16 32 64 128
1 0 1 1 0 0 1 0

得到
10110010
反过来
1001101
这就是 77 的二进制

有了这个表 z

chmod 4755 file

这个4表示其他用户执行该文件时,具有该文件所有者一样的权限

查看文件基本信息

stat查看文件的修改信息

image-20211231092254724

查看环境变量

echo $PATH

image-20211222111043216

磁盘分区

查看磁盘容量

1
df -h
image-20211222115812518

查看指定文件或目录大小

1
du -h /etc/passwd
image-20211222115948032

磁盘分区

在分区前先给虚拟机添加一块硬盘

查看磁盘分区
fdisk -l
image-20211222141541818
对刚刚挂载的磁盘分区
fdisk /dev/sdb
image-20211222141808867
n 新建分区 d 删除分区 l 展示分区编码号 w把实现的分区结果保存在磁盘中
image-20211222141840616
可选 p(primary) 和 e (extended)
查看分区结果
image-20211222143638669

格式化分区

mkfs.xfs /dev/sdb1

挂载

创建一个文件夹
mkdir /home/temp_disk
将分区挂载到新建的文件夹中
mount /dev/sdb1 /root/temp_disk
image-20211222144352235
完成

报错问题

1
2
3
4
问题:
mount: block device /dev/sr0 is write-protected, mounting read-only
解决方式:
mount -o remount,rw /dev/cdrom /mnt/cdrom

卸载

umout 分区名
删除分区
fdisk /dev/sdb
image-20211222144813661

centos7 启用NFS服务

yum.pid被锁定或sleeping

使用

rm -rf /var/run/yum/pid

条件:两台虚拟机

在A主机上操作
yum install -y nfs-utils rpcbind // 安装nfs
image-20211227214542864
mkdir /root/data // 创建共享目录
image-20211227214725715
systemctl start nfs // 启动nfs
image-20211227214949907

编辑 vim /etc/exports

1
/root/data/ 172.20.10.0/24(rw,sync,all_squash)
image-20211227215414551

检查端口启动情况

image-20211227215546660

// 不关无法访问

systemctl stop firewalld.service 关闭防火墙

在主机B上操作
yum install -y nfs-utils rpcbind // 安装nfs
image-20211227215946698
showmount -e 172.20.10.134 // 在主机B上查看A可提供的挂载信息
image-20211227221619118如果没有显示,重新在A主机重启nfs服务
mkdir /mnt/test1 //创建挂载目录
mount -t nfs 172.20.10.134:/root/data /mnt/test1 //在主机B上实现NFS的挂载
df -h // 查看是否挂载成功
image-20211227222112777
成功
创建文件测试
image-20211227222223478
解决方式(在主机A 上 给data目录改变权限)
chown -R nfsnobody:nfsnobody /root/data/
再次测试
成功

卸载nfs

查找服务名

1
2
3
rpm -qa | grep nfs

rpm -qa | grep rpcbind
image-20211227222753084

卸载查找到的服务名

1
yum remove -y 服务名

磁盘文件与目录管理

磁盘管理

df 查看磁盘空间的使用情况
df -h 以便于阅读的方式输出磁盘空间信息
image-20211229202227601
du 显示磁盘上目录或文件的大小
du -h [文件或目录] 以便于阅读的方式输出
image-20211229202656740
pwd 显示当前目录
显示当前目录
image-20211229202757582

查看文件内容的方式

find 查找文件

以文件名称、后缀名、文件相关用户、文件大小、文件类型、文件访问、修改时间等去查询文件,但不包括以文件内容去查询

列出当前目录及字目录下后缀为txt的所有文件
find ./ -name “*.txt”
image-20211230084651385
列出当前目录及字目录下所有文件
find ./ -type f (f 一般文件 d 目录 l 链接文件)
image-20211230084708423
将查询出来的文件以ls输出方式显示出来
find -iname “*.txt” -exec ls -lh {} ;
find -iname “*.txt” -ok [命令] {} ; // 与上一个命令功能一样,区别在于-ok 执行命令时 会询问用户
image-20211230085719748
按照权限查找文件
find -perm 755
按照用户查找文件
find -user admin
按照文件的所属组来进行查找
find -group 文件所属组名
find -atime -1 (-1 一天以内 +1 一天以前)
atime n天内被读取 mtime n月被读取 ctime n分钟被读取 aminn天内被修改 mminn月内被修改 cminn分钟内被修改
image-20211230100014886
1
2
3
4
根据文件的大小来查找文件
find -size 1M
find -size -1M // 查找小于1MB的文件
find -size +1M // 查找大于1MB的文件
1
2
3
4
按照文件的深度层次来进行查找
find -depth -iname "*.txt" 将指定路径作为第一层,向下遍历到最深处,来查找每一层满足指定条件的文件
find -maxdepth -iname "*.txt" 将指定路径作为第一层,向下遍历到第n层,来查找每一层满足指定条件的文件
find -mindepth -iname "*.txt" 将指定路径作为第一层,从第n层开始向下遍历到最深处,来查找每一层满足指定条件的文件
1
2
3
4
5
6
将多个条件按照指定逻辑组合在一起进行文件查找
逻辑组合有
-a: and 表示多个条件同时满足
-o: or 表示多个条件只需要满足一个即可
find -type f -o -iname "*.txt"
find -type f -a -iname "*"

chmod 修改文件权限

cat 查看文件内容
  • 适合查看行数较少的文件
  • 查看文件的开头部分的内容
参数 说明
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数
-n<行数> 显示的行数
more
  • 类似 cat ,不过会以一页一页的形式显示

    • Enter 向下n行,需要定义。默认为1行
    • Ctrl+F 向下滚动一屏
    • 空格键 向下滚动一屏
    • Ctrl+B 返回上一屏
    • = 输出当前行的行号
    • :f 输出文件名和当前行的行号
    • V 调用vi编辑器
    • !命令 调用Shell,并执行命令
    • q 退出more
说明 参数
-num 一次显示的行数
+num 从第 num 行开始显示
less
  • 进行文件内容的查看(适合查看大文件,相比与more,他的功能更全)

    • enter:逐行下翻
    • 空格:逐页下翻
    • ctrl+f::逐页下翻
    • ctrl+b:逐页上翻

less +/关键字 filename

  • 文本中关键字高亮显示

less +n filename

  • 从第n行开始进行文件内容的查看

less +/关键字.\

  • 高亮显示任意文件中的关键字

less -N filename

  • 显示行号
tail

文件压缩与解压缩

compress/uncompress

压缩

compress filename

解压

uncompress filename

gzip/gunzip

压缩

gizp filename

解压

gunzip filename

文件备份与恢复

tar

压缩

tar -zcvf 原文件名.tar.gz 源文件名

解压

tar -xzvf 压缩包.tar.gz

简单信息处理

wc
  • 显示文件基本的统计信息(对应的行数、词数、字符数、文件名)
image-20220106100007750
  • 显示多个文件

    1
    wc /目录/{file1, file2}
grep
  • 查找文件内容
  • 语法
    • grep 关键字 文件名
1
2
grep -c 关键字 文件名
// 统计关键字在文本当中出现的次数
image-20220106102847513
1
2
3
4
5
6
7
8
9
10
11
12
13
14
grep -c -i 关键字 文件名
// -i 忽略大小写

grep -c -i 关键字 *.txt
// -i 忽略大小写
// *.txt 指定任意文件名类型为txt的文件

grep -c -i 关键字 *.*
// -i 忽略大小写
// *.* 指定任意文件名任意类型的文件

grep -c -i 关键字 /*
// -i 忽略大小写
// /* 指定路径下所有文件
1
2
grep -n 关键字 filename
// 显示增加行号
image-20220106104544139
1
2
grep -v 关键字 filename
// 反向匹配,显示没有匹配到的行
image-20220106104939766
sort
  • 排序:是对文件的每一行进行排序(依据ASCII值)
  • ASCII:American standard code of information interchage
  • 0-9:48-57
  • A-Z:65-96
  • a-z:97-122
1
2
3
4
5
sort filename
sort -g filename
//
sort -n filename
sort -r filename
cut
  • 展现文件的局部范围的内容
  • cut -b 2-5,8,10 filename
uniq
  • 文本去重

    在进行去重显示的时候,去重的规则是:连续重复出现

1
2
3
4
uniq filename 进行文件的去重展示
uniq -c filename 针对文件当中出现的重复行进行计数
uniq -u filename 将没有连续重复出现的行显示出来
uniq -i filename 将连续重复出现的行忽略大小写,作为重复行,将进行去重显示

Linux包管理

RPM

  1. 安装
  2. 查询(查询一个包是否安全)
    1. rpm -qa |grep telnet
  3. 检验:检验包安装的正确性
  4. 包升级
  5. 包删除

yum

1
2
3
4
yum install -y package
y:代表下载并安装
d:仅仅下载,并不安装
N:直接退出

yum repolist

用于列出系统中已配置的yum源

yumex

yum list yumex

yum list installed

进程管理

shell编程

vi

vi filename

命令模式,文本编辑模式,行编辑模式

vi filename

命令模式

i,a,s,o

​ esc + shift + Q 进入行编辑模式

​ esc + 双击y 对光标所在行进行复制

​ esc + p 对复制的内容进行粘贴

​ esc + 双击g 将光标移到首行

​ esc + 双击d 删除当前行

​ ctrl + insert 对选中的内容进行复制

​ shift + insert 对已经复制的内容进行粘贴

文本编辑模式

​ 内容编辑

行编辑模式

​ q,q!,wq,w,wq!

​ /1 /[0-9]

​ ?1

未完待续

服务器搭建

centos7 搭建ftp服务器

  1. 安装vsftpd

    1
    yum install -y vsftpd
    image-20211126102811262
  1. 启动ftp服务器

    1
    systemctl start vsftpd.service
    image-20211126102859053
  1. 配置ftp

    • 配置文件目录
    1
    /etc/vsftpd/vsftpd.conf
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
#除下面提及的参数,其他参数保持默认值即可。

#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES

#在行首添加#注释掉以下参数:
#关闭监听IPv6 sockets。
#listen_ipv6=YES

# 可能配置会没有 需要手动加入
#在配置文件的末尾添加下列参数:
#设置本地用户登录后所在目录。
local_root=/var/ftp/test
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list


# vim 跳转到行末 :$
#开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本教程中为Linux实例的公网IP。
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=<port number>
image-20211126104633357
  1. 防火墙放行相应端口

    • 关闭防火墙命令

      1
      systemctl stop firewalld
    • 添加主端口

      1
      firewall-cmd --permanent --zone=public --add-port=21/tcp
      image-20211126103857582
  • 添加被动端口

    1
    firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp
    image-20211126104016073
  • 重新加载防火墙

    1
    firewall-cmd --reload
    image-20211126104032009
  1. 创建ftp用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 创建一个Linux用户
    adduser ftptest
    # 修改ftptest用户的密码
    passwd ftptest
    # 创建一个供FTP服务使用的文件目录
    mkdir /var/ftp/test
    # 创建测试文件
    touch /var/ftp/test/testfile.txt
    # 运行以下命令更改/var/ftp/test目录的拥有者为ftptest
    chown -R ftptest:ftptest /var/ftp/test
    image-20211126113010434
  2. 设置ftp服务开机启动

    1
    systemctl enable vsftpd.service
image-20211126105621217
  1. 测试

    登录
    image-20211126113311940
    image-20211126113400796

卸载ftp服务器

  • 查找vsftpd服务

    1
    rpm -aq vsftpd
  • 停止ftp服务

    1
    systemctl stop vsftpd.service
  • 卸载ftp服务

    1
    rpm -e vsftpd-3.0.2-21.el7.x86_64

centos7 搭建telent服务

  1. 先检查是否安装了telnet

    1
    2
    rpm -qa | grep telnet   //检查你的CentOS是否安装了telnet和telnet-server
    rpm -qa xinetd //检查你的CentOS是否安装了xinetd,telnet的自启动依赖它

    执行后都为空就是没有安装。

  2. 安装telnet并设置开机自启动

yum list |grep telnet //列出当前可用的rpm包
image-20211208110639596
yum install telnet-server  //安装telnet-server 服务端
image-20211208110737038
yum install telnet    //安装telnet 客户端
image-20211208110818582
  1. 安装xinetd

    yum install -y xinetd
    image-20211208110911484
    systemctl enable xinetd.service //设置xinetd开机自启动
    systemctl start xinetd.service //启动xinetd
    systemctl status xinetd.service //查看xinetd状态
    image-20211208111146743
  2. 设置telnet服务开机启动

    systemctl enable telnet.socket //设置telnet服务开机启动
    systemctl start telnet.socket //启动telnet服务
    systemctl restart xinetd //telnet服务依赖xinetd守护,安装telnet-server后启动时需要重启xinetd服务
    image-20211208111712231
  3. 防火墙放行23端口

    CentOS采用了 firewalld 防火墙,查询是否开启23端口
    firewall-cmd –query-port=23/tcp
    image-20211208112029253
    firewall-cmd –zone=public –add-port=23/tcp –permanent // 放行23端口
    firewall-cmd –complete-reload // 重新加载firewall-cmd
    image-20211208112148775
  4. 修改telnet配置文件,开启服务

    /etc/xinetd.d/telnet // 没有就自己创建

    vim /etc/xinetd.d/telnet
    image-20211208112345302
    ps -ef | grep xinetd // 查看xinetd是否启动
    image-20211208112742114
  5. 测试

    telnet localhost // 登录测试
    image-20211208112902991
    Login incorrect 报错解决
    image-20211208113008722
    查看日志
    tail /var/log/secure
    <br />
    vim /etc/securetty //在该文件末尾添加pts/4
    再次测试
    image-20211208113357962
    成功
  6. 卸载telnet

    rpm -qa | grep telnet #显示telnet-server和telnet包
    image-20211208113500156
    rpm -e telnet-0.17 #卸载telnet客户端
    rpm -e telnet-server-0.17 #卸载telnet服务端
    rpm -qa |grep xinetd // 显示xinetd包
    rpm -e xinetd-2.3.15-14.el7.x86_64 // 卸载xinetd
    image-20211208113729679