Question Comment imprimer le contenu des travaux?


J'ai une boîte Debian avec des travaux planifiés en utilisant at. Je sais que je peux lister les emplois avec leur temps en utilisant atq, mais existe-t-il un moyen d’imprimer leur contenu, mis à part jeter un coup d’œil furtif? /var/spool/cron/atjobs?


23
2017-08-26 07:31


origine




Réponses:


at -c jobnumber listera un seul travail. Si vous voulez tous les voir, vous pouvez créer un script comme

#!/bin/bash
MAXJOB=$(atq | head -n1 | awk '{ print $1; }')
for each in $(seq 1 $MAXJOB); do echo "JOB $each"; at -c $each; done 

Il y a probablement un moyen plus court de le faire, j'ai juste sorti ça de ma tête :)


29
2017-08-26 07:41



at -c $(atq | cut -f 1) ou for each in $(atq | cut -f 1) évitera les erreurs "Impossible de trouver le jobid". (Aussi, Bash a for ((each=1; each<=MAXJOB; each++)) donc pas besoin de seq. Si vous êtes préoccupé par la portabilité, alors #!/bin/sh.) - Dennis Williamson


Sur la base des réponses précédentes, ceci répertorie la ligne de chaque travail de atq affichage du numéro de travail et de l’heure planifiée, puis de la commande à exécuter, triée par ordre chronologique (plutôt que par numéro de travail):

for j in $(atq | sort -k6,6 -k3,3M -k4,4 -k5,5 |cut -f 1); do atq |grep -P "^$j\t" ;at -c "$j" | tail -n 2; done

produire, par exemple

48  Fri Mar 10 15:13:00 2017 a root
/usr/local/bin/a-command

47  Fri Mar 10 15:14:00 2017 a root
/usr/local/bin/another-command

5
2018-03-10 22:12





Une approche beaucoup plus simple:

for j in $(atq | cut -f 1); do at -c "$j"; done

Vous pouvez aussi regarder chacun dans less à son tour, ce qui pourrait être plus clair:

for j in $(atq | cut -f 1); do at -c "$j" | less; done

3
2018-05-10 00:35