使用linux下的shell编程,创建 /home/random.sh 文件,实现以下功能: 1、使用系统变量 RANDOM 产生1-6的随机数 2、使用 for 循环由1得到的随机数,并输出如下格式:年月日 时分秒#%#随机数#%#随机8位字符串,并将内容附加重定向到 /home/random.log 文件 数据参考如下: 2023-05-24 13:14:00#%#1#%#e0a15f36 3、配置 crontab ,每分钟的第5秒运行 random.sh 程序(此配置内容写在 random.sh 文件的第二行,并注释)
时间: 2024-02-03 08:14:59 浏览: 28
以下是实现要求的 /home/random.sh 文件的代码:
```bash
#!/bin/bash
# crontab -e 配置如下: */1 * * * * sleep 5; /bin/bash /home/random.sh
for ((i=1; i<=$RANDOM; i++))
do
now=$(date +"%Y-%m-%d %H:%M:%S")
rand_num=$((1 + RANDOM % 6))
rand_str=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
echo "$now#%#$rand_num#%#$rand_str" >> /home/random.log
done
```
上面的代码会每次运行时生成一个随机数,然后使用 for 循环输出相应数量的随机数。输出的每一个随机数都包括当前时间戳、随机数和随机字符串。最后,将所有输出内容追加到 /home/random.log 文件中。
要使该脚本每分钟的第5秒运行,可以将以下行添加到 crontab 中:
```
*/1 * * * * sleep 5; /bin/bash /home/random.sh
```
这条命令的意思是每一分钟都运行 /home/random.sh,但是在每分钟的第5秒之前先暂停5秒,然后再运行该脚本。这样就可以确保脚本每分钟的第5秒运行了。
相关问题
使用linux下的shell编程,创建 /home/random.sh 文件,实现以下功能: 使用系统变量 RANDOM 产生1-6的随机数 使用 for 循环由1得到的随机数,并输出如下格式:年月日 时分秒#%#随机数#%#随机8位字符串,并将内容附加重定向到 /home/random.log 文件 数据参考如下: 2023-05-24 13:14:00#%#1#%#e0a15f36 配置 crontab ,每分钟的第5秒运行 random.sh 程序(此配置内容写在 random.sh 文件的第二行,并注释)
你可以按照以下步骤实现:
1. 创建并编辑 `/home/random.sh` 文件:
```
#!/bin/bash
# 配置 crontab 每分钟的第5秒运行该脚本
# 生成随机数和随机字符串
number=$((RANDOM % 6 + 1))
random_str=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
# 输出格式化的时间和数据到日志文件
now=$(date +"%Y-%m-%d %H:%M:%S")
echo "$now#%#$number#%#$random_str" >> /home/random.log
```
2. 给脚本文件添加执行权限:
```
chmod +x /home/random.sh
```
3. 使用 `crontab -e` 命令编辑定时任务:
```
*/1 * * * * sleep 5 && /home/random.sh
```
这个定时任务表示每分钟执行一次脚本,并且在每分钟的第5秒开始执行。由于在脚本中已经配置了 crontab,因此不需要在这里重复配置。保存并退出编辑器即可。
4. 查看日志文件 `/home/random.log`,确认数据是否已经按照指定格式写入。
注意:在生成随机字符串时,使用了 `tr`、`fold` 和 `head` 命令来实现。其中:
- `tr -dc 'a-zA-Z0-9'` 表示将输入中所有不是 a-z、A-Z 和 0-9 的字符都删除;
- `fold -w 8` 表示将输入中的字符按照每8个一组进行折行;
- `head -n 1` 表示只保留第一组折行后的结果。
二、使用linux下的shell编程,创建 /home/random.sh 文件,实现以下功能: 1、 使用系统变量 RANDOM 产生1-6的随机数 2、 使用 for 循环由1得到的随机数,并输出如下格式:年月日 时分秒#%#随机数#%#随机8位字符串,并将内容附加重定向到 /home/random.log 文件 数据参考如下: 2023-05-24 13:14:00#%#1#%#e0a15f36 3、 配置 crontab ,每分钟的第5秒运行 random.sh 程序(此配置内容写在 random.sh 文件的第二行,并注释)
好的,我明白了。以下是实现要求的 /home/random.sh 文件内容:
```shell
#!/bin/bash
# 每分钟的第5秒运行 random.sh 程序,crontab 配置如下:
# * * * * * sleep 5; /bin/bash /home/random.sh >> /dev/null 2>&1
for i in $(seq 1 $((1 + RANDOM % 6)))
do
now=$(date +"%Y-%m-%d %H:%M:%S")
random_num=$((1 + RANDOM % 6))
random_str=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
echo "$now#%#$random_num#%#$random_str" >> /home/random.log
done
```
其中,使用 `seq` 函数和 `$((1 + RANDOM % 6))` 表达式来生成随机数。使用 `date` 函数获取当前时间,使用 `/dev/urandom` 产生随机字符串,并使用 `head` 函数选取第一行。最后将生成的内容附加重定向到 `/home/random.log` 文件。
在第二行,注释中写入了 crontab 的配置,可以使用 `crontab -e` 命令来编辑 crontab 配置,将该配置添加到文件中即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)