Tut mir leid, das ist ein Neuling in Sachen Kritik.
Ich wollte ein Skript generieren, das alle Verzeichnisse unter current_directory mit „bifn*0.2e“ im Namen einträgt und dann jede Minute automatisch Dateien mit „acc“ im Namen löscht. Diese werden kontinuierlich von einem anderen Prozess generiert. Das ist, was ich habe, und es scheint zu funktionieren.
#!/bin/bash
while true
do
find /current_directory/bifn*0.2e* -name '*acc*' -mmin +1 -delete
sleep 60
done
Nachdem ich jedoch das Skript ./auto_remove ausgeführt hatte, drückte ich Strg+Z und bg
ließ es im Hintergrund laufen. Ich wollte, dass dieses Skript auch nach dem Verlassen des Terminals mit dem Entfernen von Dateien fortfährt. Dieser Teil funktioniert auch. Aber jetzt kann ich nicht mehr beenden, was es tut, und ich sehe auch keine Anzeichen dafür, dass das Skript ausgeführt wird (außer, dass die ACC-Dateien entfernt werden!). Ich habe versucht, es einzutippen, ps fjx
oder jobs.
ich habe auch versucht, das Skript mit auskommentierter Find-Zeile erneut auszuführen.
Helfen Sie mir also bitte, das zu stoppen! Und wie kann ich für die zukünftige Verwendung eleganter tun, was ich tun möchte, und es gleichzeitig bei Bedarf beenden?
Antwort1
Nun, ich habe das Problem beim Beenden gefunden. Ich musste mich bei dem bestimmten Knoten anmelden, der dieses Skript ausführte, um dann kill auszuführen. Ich bin mir immer noch nicht sicher, wie ich dies in Zukunft vermeiden kann.
Antwort2
Die Hälfte des Skripts ist unnötig. Entfernen Sie alle Zeitprüfungen. Stellen Sie es einfach so ein, dass es nach Namen sucht und löscht. Stellen Sie es dann jede Minute in der Crontab ein. Wenn Sie es aus irgendeinem Grund stoppen möchten, stoppen Sie den Cron einfach, indem Sie die Ausführungszeile kommentieren, und starten Sie den Cron neu.