前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4 Linux 高级Shell脚本与用户管理

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

作者头像
Lemon黄
发布2023-11-28 16:41:21
2730
发布2023-11-28 16:41:21
举报
文章被收录于专栏:Lemon黄

本文,我们将要学习 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/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 莫奈黄 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shell 脚本
    • 1 创建动态目录
      • 2 自动备份脚本
        • 3 使用 Cron 自动执行备份脚本
        • 用户管理
          • 1 基本命令
            • 2 创建和显示用户名
              • 参考资料
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档