4 Linux 高级Shell脚本与用户管理

2023-11-28 16:41:21 浏览数 (1)

本文,我们将要学习 Linux 高级 Shell 脚本以及用户管理(重点)。下面,我们将开始探索几个使用的 Shell 脚本,然后介绍 Linux 中的用户管理。

Shell 脚本

1 创建动态目录

首先,我们创建一个名为 create_directories.sh的脚本文件,这个将本将用于生成指定数量且具有动态名称的目录。以下是脚本的内容:

代码语言:javascript复制
#!/bin/bash

# 检查是否由 3 个参数
if [ "$#" -ne 3 ]
then
    echo "Please use the following sequence: ./createDirectories.sh <directory-name> <start-number> <end-number>"
    exit 1
fi

# 保存 3 个参数的变量
# 目录成成
directory_name=$1
# 起始编号
start_number=$2
# 结束编号
end_number=$3

# 循环创建目录
for ((i=start_number; i<=end_number; i  )); do
    mkdir "$directory_name$i"
done

# 输出目录创建成功
echo "The directories have been successfully created"

解释:上面脚本采用三个参数:目录名称、起始编号和结束编号。然后,脚本使用指定的目录名称以及起始和结束编号,循环创建目录。例如,如果目录名称为 directory,起始编号和结束编号分别为 1 和 3,则将创建目录名称为directory1directory2以及 directory33 个目录。

以下是操作和执行的结果:

代码语言:javascript复制
[root@localhost test]# vim create_directories.sh
[root@localhost test]# chmod 700 create_directories.sh
[root@localhost test]# ./create_directories.sh dicrectory 1 3
The directories have been successfully created
[root@localhost test]# ls
case1.sh  case3.sh   create_directories.sh  dicrectory2  fruits.txt  test.txt
case2.sh  color.txt  dicrectory1            dicrectory3  readme.md

2 自动备份脚本

自动备份,可用于备份我们需要备份的资料,还是非常实用的。创建一个名称为auto_backup.sh的脚本文件,以下是脚本的内容:

代码语言:javascript复制
#!/bin/bash

# 设置将要备份的目录路径
backup_dir="/root/test"

# 设置带时间戳的文件名称
backup_filename="backup_$(date  "%Y%m%d_%H%M%S").tar.gz"

# 创建压缩文件
tar -czf $backup_dir/$backup_filename -C /root/test/backup .

# 如果备份文件创建成功
if [ -f "$backup_dir/$backup_filename" ]; then
    echo "备份文件创建成功"
else
    echo "备份失败"
    exit 1
fi

解释:上面的脚本通过将指定目录压缩成压缩包(.tar.gz)来创建备份。备份文件名称包含一个时间戳,以确保唯一性。脚本使用带有 c(创建)、z(使用 gzip 压缩)和 f(指定输出文件)选项的 tar 命令。然后它会检查备份文件是否创建成功,并提供相应的信息。

以下是运行的过程及结果:

代码语言:javascript复制
[root@localhost test]# ./auto_backup.sh
备份文件创建成功
[root@localhost test]# ls
auto_backup.sh                 case1.sh  color.txt              dicrectory2  readme.md
backup                         case2.sh  create_directories.sh  dicrectory3  test.txt
backup_20231126_094004.tar.gz  case3.sh  dicrectory1            fruits.txt

3 使用 Cron 自动执行备份脚本

Cron 是 Linux 中基于时间的作业调度程序。可以用它定期自动执行备份脚本。下面是具体操作方法:

  1. 打开中单或命令提示符。
  2. 输入命令:crontab -e编辑 crontab 文件。
  3. 添加一行新内容来安排备份脚本。例如,要在每天凌晨 2:00 运行备份,可以添加如下行:
代码语言:javascript复制
0 2 * * * /bin/sh /root/test/auto_backup.sh

/root/test/auto_backup.sh替换为你自己备份脚本的实际路径。

  1. 保存 crontab 文件并退出文本剪辑器。

现在,备份脚本将根据指定的计划自动运行。

提示:Cronitor[1] 提供快速简便的 cron 计划表达式编辑器。

用户管理

1 基本命令

在 Linux 系统中,用户管理对于控制访问和权限至关重要。以下是一些基本命令:

  • 要创建用户,需要使用 useradd命令。例如:
代码语言:javascript复制
sudo useradd username
  • 要删除用户,请使用 userdel命令。例如:
代码语言:javascript复制
sudo userdel username
  • 要修改用户属性,例如密码或主目录,请使用 usermod命令。例如:
代码语言:javascript复制
sudo usermod -d /new/home/directory username
  • 要显示用户信息,请使用 idfinger命令。例如:
代码语言:javascript复制
id username
finger username

切记使用 sudo 管理权限执行这些命令,以确保正确的用户管理。

2 创建和显示用户名

要创建用户并显示它们的用户名,可以按照下列步骤操作:

  1. 打开终端或命令提示符。
  2. 运行以下命令创建第一个用户:
  • 运行命令:sudo useradd user1,出现提示时提供所需的信息。
  • 重复上一步创建第二个用户:sudo useradd user2
  • 要显示用户名,可以使用命令:awk -F '{print $1}' /etc/passwd,此命令将从 etc/passwd文件中检索用户名。

以下是执行过程:

代码语言:javascript复制
[root@localhost test]# sudo useradd user1
[root@localhost test]# sudo useradd user2
[root@localhost test]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
abrt
rpc
apache
sshd
postfix
chrony
ntp
tcpdump
huang
nginx
user1
user2

通过熟悉以上用户管理命令,我们就可以高效处理 Linux 系统上的用户帐户。

参考资料

[1]

Cronitor: https://crontab.guru/

0 人点赞