Comment faire pour démarrer un script shell dans une minute plus tard sous linux?
Comment lancer un script shell dans une minute plus tard?
Supposons qu'il existe deux bash fichiers un.sh et b.sh
Je veux exécuter.b.sh d'une minute(ou de plusieurs secondes) après une.sh exécuté.
que dois-je code dans un.sh ?
Simple. vous souhaitez utiliser " à " à l'horaire de votre travail. et 'date' pour calculer votre moment dans le futur.
Exemple:
echo b.sh | at now +1 minute
ou:
echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%S"`
-v+60S ajoute 60 secondes à l'heure actuelle. Vous pouvez contrôler exactement le nombre de secondes que vous souhaitez ajouter.
Mais généralement, quand les gens veulent un programme de lancement d'une minute après l'autre, ils ne sont pas sûr à 100%, il ne faudra pas plus ou moins d'une minute. c'est tout. b.sh pourrait être lancé avant a.sh est fini. ou a.sh avez fini, 30 secondes plus tôt que "prévu" et b.sh pourrait avoir commencé plus rapide.
Je voudrais recommander un autre modèle. Où b.sh est lancé en premier. a.sh crée un fichier temporaire lorsqu'il démarre. exécuter des tâches et de supprimer les fichiers temporaires à la fin. b.sh regarder pour le fichier temporaire créé, puis supprimé. et le début de ses tâches.
Oui, je vous remercie! C'est exactement ce que je veux. Mais il est un peu l'erreur peut-être? Il dit: "Date invalide option --v" Les différentes versions de date prennent en charge différentes options. Essayez: echo b.sh | at now + 1 minute Sera la b.sh être exécuter dans une fenêtre visuelle ? et comment? Il ne les exécute pas.b.sh de toute façon, je ne sais pas pourquoi droit après avoir ajouté le au travail, mais avant que la minute est passé. essayez d'exécuter l'atq, elle doit montrer votre travail. vous pouvez aussi rechercher dans votre système, les journaux et savoir quand la commande a été exécutée. comme pour l'ouverture de la commande dans une fenêtre. c'est une toute autre question. votre commande devra exécuter le terminal de votre choix. vous aurez besoin de savoir comment nourrir la commande de votre terminal. et de vos ENV aurez besoin d'avoir un AFFICHAGE var correctement réglé.
Ou pour des cas plus compliqués, vous pouvez utiliser le at commande:
echo b.sh | at now +1 minute
Voir le at page de manuel pour plus d'informations.
Je vais essayer plus tard Non , il n'est exécuter.b.sh comme prévu BTW, comment l'exécuter au bout de 10 secondes ? J'ai changé la minute, à la seconde , il dit erreur de syntaxe. ne pas faire des incréments de temps plus fine qu'une minute. sleep 60 détiendra le loggin processus pendant 60 secondes.
Simple. vous souhaitez utiliser " à " à l'horaire de votre travail. et 'date' pour calculer votre moment dans le futur.
Exemple:
ou:
-v+60S
ajoute 60 secondes à l'heure actuelle. Vous pouvez contrôler exactement le nombre de secondes que vous souhaitez ajouter.Mais généralement, quand les gens veulent un programme de lancement d'une minute après l'autre, ils ne sont pas sûr à 100%, il ne faudra pas plus ou moins d'une minute. c'est tout.
b.sh
pourrait être lancé avanta.sh
est fini. oua.sh
avez fini, 30 secondes plus tôt que "prévu" et b.sh pourrait avoir commencé plus rapide.Je voudrais recommander un autre modèle. Où
b.sh
est lancé en premier.a.sh
crée un fichier temporaire lorsqu'il démarre. exécuter des tâches et de supprimer les fichiers temporaires à la fin.b.sh
regarder pour le fichier temporaire créé, puis supprimé. et le début de ses tâches.Les différentes versions de
date
prennent en charge différentes options. Essayez:echo b.sh | at now + 1 minute
Sera la b.sh être exécuter dans une fenêtre visuelle ? et comment?
Il ne les exécute pas.b.sh de toute façon, je ne sais pas pourquoi
droit après avoir ajouté le au travail, mais avant que la minute est passé. essayez d'exécuter l'atq, elle doit montrer votre travail. vous pouvez aussi rechercher dans votre système, les journaux et savoir quand la commande a été exécutée. comme pour l'ouverture de la commande dans une fenêtre. c'est une toute autre question. votre commande devra exécuter le terminal de votre choix. vous aurez besoin de savoir comment nourrir la commande de votre terminal. et de vos ENV aurez besoin d'avoir un AFFICHAGE var correctement réglé.
OriginalL'auteur shigazaru
Faire la dernière ligne d'un.sh:
(Si b.sh n'est pas dans un répertoire dans le CHEMIN, prendre un chemin d'accès complet à b.sh.)
OriginalL'auteur William Pursell
Vous pouvez simplement
sleep
:Ou pour des cas plus compliqués, vous pouvez utiliser le
at
commande:Voir le
at
page de manuel pour plus d'informations.Non , il n'est exécuter.b.sh comme prévu BTW, comment l'exécuter au bout de 10 secondes ? J'ai changé la minute, à la seconde , il dit erreur de syntaxe.
ne pas faire des incréments de temps plus fine qu'une minute.
sleep 60 détiendra le loggin processus pendant 60 secondes.
OriginalL'auteur larsks
Utiliser le
at
commande.Voir
homme
pour savoir comment l'utiliser.OriginalL'auteur iWantSimpleLife
Vous pouvez utiliser la commande pour le sommeil de votre script pour 1 minute.
Ensuite, lorsque vous souhaitez appeler le 2ème script
OriginalL'auteur David K
Si vous voulez exécuter le second script certain nombre de secondes après le commencer de la première script, vous pouvez le faire dans le premier:
et dans le second:
Vous pouvez passer le nombre de secondes comme un argument de la première à la seconde.
Malheureusement,
at
ne pas faire des incréments de temps plus fine qu'une minute.OriginalL'auteur Dennis Williamson
L'annexe à la fois les scripts à exécuter en même temps dans cron et de mettre le délai requis dans b.sh.
OriginalL'auteur ankit tyagi