删除Crontab中的现有作业/任务[重复]

问题描述 投票:0回答:2
我正在编写脚本,并且希望能够删除用户可以使用Crontab命令创建的特定作业/任务。

我知道,要删除所有作业/任务,您只需使用:

crontab -r;

但是如果有多个作业/任务,您如何列出它们,然后删除所选的任务?
linux bash cron cron-task
2个回答
-1
投票
显示带有索引的可用作业,阅读用户的选择,通过其索引删除作业

#!/usr/bin/env bash # Array of cron job entries typeset -a cron_entries # Store the contab jobs into an array mapfile -t cron_entries < <(crontab -l | grep -vE '^(#.*|[[:space:]]*)$') if (( ${#cron_entries[@]} > 0 )); then # List all the jobs echo "Here are the current cron jobs:" printf 'Index\tJob entry\n' for ((i=0; i<"${#cron_entries[@]}"; i++)); do printf '%4d\t%s\n' $i "${cron_entries[i]}" done # Prompt user for job index or exit read -p $'\nPlease choose a job index to delete, or an invalid index to abandon: ' -r answer # If answer is a positive integer and within array bounds if [[ "$answer" =~ ^[0-9]+$ ]] && (( answer < ${#cron_entries[@]} )); then # Show deleted entry printf '\nDaleting:\t%4d\t%s\n' "$answer" "${cron_entries[answer]}" # Delete the selected cron entry unset cron_entries["$answer"] # Send the edited cron entries back to crontab printf '%s\n' "${cron_entries[@]}" | crontab - else printf '\nAborted with choice %q\nNo job deleted\n' "$answer" fi else printf 'There is no cron job for user: %s\n' "$USER" fi


1
投票
使用crontab -e,它应该在系统编辑器中打开所有cron任务,然后删除特定的条目并保存并退出。干杯

编辑:添加从脚本中删除

您可以执行类似-

crontab -l | grep -v '<SPECIFICS OF YOUR SCRIPT HERE>' | crontab -

根据您的脚本。试试看,让我知道它是否有效
© www.soinside.com 2019 - 2024. All rights reserved.