Linux脚本编程:sudo命令下设置定时任务

  • 题目要求
  • 编程平台
    • 本地
    • 云端
  • 代码实现
    • 基本思路
    • 解决脚本
    • 其他说明

题目要求

让普通用户使用sudo命令编写一个脚本,脚本内容为:设置定时任务,每隔5分钟,输出“当前用户名_时间”到/tmp/output.txt中,时间格式为: xxxx-yy-zz aa:bb:cc。
注意:整个题目答案只有一个脚本文件,且脚本要分别在本地和云端成功运行。

编程平台

本地

本地操作系统:Windows 10
本地虚拟机运行平台:VMware Workstation Pro 14
本地虚拟机镜像:CentOS-7-x86_64-Minimal-1908.iso

云端

云服务器提供商:阿里云计算有限公司
Linux发行版本及版本号:CentOS 7.6 64位

代码实现

基本思路

一般情况下,设置定时任务需要两个文件。一个是定时任务文件,用于记录定时详情和待执行的脚本位置;另一个是脚本文件,用于记录待执行的操作。由于题目要求结果只能有一个脚本文件,故我们需要让脚本文件既能创建和运行定时任务文件,又能执行定时任务规定的内容。
可以使用 if…else… 语句:
(1)在 if 语句中检查定时任务文件是否已经创建;
(2)如果没有,则创建定时任务文件后开始定时服务;
(3)如果有,则说明已经有定时任务文件正在运行,且现在已经到达执行定时任务内容的时刻,于是在 else 语句中存放待执行操作的代码即可。

解决脚本

#! /bin/bash
# 安装crontab服务
sudo yum -y install crontabs# 创建定时任务
filePath=`pwd`"/cronTest"  # 定时任务文件设置在当前工作目录下
if [ ! -f "$filePath" ];then # 查看定时任务文件是否已经存在touch $filePath # 创建定时任务文件echo "*/5 * * * * "`pwd`"/脚本名.sh" > $filePath # 设置定时任务内容,此处认为本脚本在当前工作目录下# 提交给cron进程,此时会在/var/spool/cron目录下生成执行文件,文件名就是用户名crontab $filePath# 设置普通用户拥有执行/var/spool/cron目录的权限cd /var/spoolsudo chmod o+rx croncd ~sudo service crond restart # 开启crontab服务
else # 此时定时任务文件存在且正在运行,所以现在开始执行定时任务内容name=`whoami` # 获取当前用户名time=`sudo date "+%Y-%m-%d %H:%M:%S"` # 按照格式要求获取日期echo "${name}_${time}" >> /tmp/output.txt
fi

其他说明

在本题中,我们认为所编写的脚本文件除了第一次被我们运行以外,都是由正在执行的定时任务满足时间点后去运行的。所以,如果要修改定时任务内容,在执行修改后的脚本前,请先删除定时任务文件。

如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!

Linux脚本编程:sudo命令下设置定时任务相关推荐

  1. linux脚本编程(shell)浅介

    linux脚本编程(shell)浅介 2006-01-10 11:45 27693人阅读 评论(18) 收藏 举报 脚本shelllinux编程bash语言 linux脚本(shell)编程 啊,昨天 ...

  2. cmd脚本编程基础命令

    cmd脚本编程基础命令 1.外部命令 调用system32/64 目录下的应用程序. 2.内部命令 2.1. 显示.设置或删除环境变量. command des set /? 查询set用法 set ...

  3. 【转】linux su和sudo命令的区别——百度知道

    linux su和sudo命令的区别 su表示切换用户命令命令,如: 输入:su命令后回车表示切换当前的用户到root用户,或者: 输入:su - root(或者其他用户名)这里加了"-&q ...

  4. linux su和sudo命令的区别 -【linux学习笔记】

    linux su和sudo命令的区别 首先,两个缩写,  su : switch user                                 sudo : super user do ! ...

  5. [linux]十一、sudo命令的详细使用方法和ACL的基本命令讲解

    目录 1.sudo的授权 1.1.使用sudo给一个普通用户授予root用户的权限 1.2. 给组授予root用户权限 1.2.1.ip addr add + ip地址 1.3.sudo日志文件 1. ...

  6. 关于linux中的sudo命令

    关于linux中的sudo命令 sudo -i,加载用户变量,并跳转到目标用户home目录: sudo -s,不加载用户变量,不跳转目录: sudo : 暂时切换到超级用户模式以执行超级用户权限,提示 ...

  7. linux下设置定时任务,linux下定时任务设置

    任务调度的crond常驻命令 crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便 ...

  8. Linux中使用crontab命令启用自定义定时任务

    一 简介 Linux下的任务调度分为两类,系统任务调度和用户任务调度 系统任务调度:系统需要定期执行的任务,比如重启.日志清理等,其配置文件是:/etc/crontab 用户任务调度:某个用户需要定期 ...

  9. linux脚本编程(shell)浅介 (转载)

    linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...

最新文章

  1. 2021年大数据Spark(五十一):Structured Streaming 物联网设备数据分析
  2. 动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...
  3. 金立M2017续航出色不仅是因为电池大,还有超强快充
  4. Word转换英文为大写小写的方法
  5. 如何检测远程主机上的某个端口是否开启
  6. 使用FCN做图像语义分割(实践篇)
  7. 电脑技巧:如何彻底关闭电脑右下角闪烁弹窗广告?
  8. 原始Dao开发方法以及存在的问题
  9. 就这几个简单页面APP,这混小子要我10W块?!大家评评理!
  10. python字符串结合操作符的使用
  11. 记住,TCP是一种流协议
  12. eclipse——Error exists in required project Proceed with launch?
  13. 服务器是怎么工作的?(一)——DHCP工作原理剖析
  14. OCP DBA考证轻松过关详解(ZT)
  15. iptables 简介
  16. 关于深度学习caffe for Windows编译入门
  17. forrtl: error (200): program aborting due to control-C event
  18. C语言微信控制windows电脑代码,Windows电脑版微信实现多开 无需第三方软件(bat命令实现)...
  19. google有自定义文章流畅度的伪原创工具吗
  20. java中函数式接口的使用

热门文章

  1. 是时候选择诺基亚Windows Phone手机
  2. Part 3 对象的组合
  3. docker container的attach和detach模式
  4. 半导体设备英文缩写_半导体设备进口 晶圆制造中光刻机进口要格外注意这个问题...
  5. vue-admin-template-3.8.0 整合sping boot初始配置
  6. 数据结构和算法 绪论
  7. 访问mp4出现416
  8. Unity学习笔记--怎么打断当前动画并且重新播放当前动画(超简单一步实现版)
  9. TF girls系列(1)搭建二层全连接神经网络
  10. 微信小程序 动态修改颜色