Wie starte ich bei der Anmeldung meines Benutzers eine Befehlsdatei (z. B. *.sh) in einem separaten Shell-Interaktionsprogramm (z. B. iTerm2)?

Wie starte ich bei der Anmeldung meines Benutzers eine Befehlsdatei (z. B. *.sh) in einem separaten Shell-Interaktionsprogramm (z. B. iTerm2)?

iTerm2 ist ein fantastisches Dienstprogramm und erleichtert mir die Interaktion mit der Befehlszeile erheblich. Ich führe täglich viele Update-Befehle aus und dachte, es wäre großartig, wenn diese bei der Anmeldung meines Benutzers gestartet werden könnten. Ich weiß, dass zum Ausführen eines Skripts bei einer Benutzeranmeldung ein Verzeichnis unter /System/Library/StartupItems erstellt werden muss, wobei das auszuführende Skript denselben Namen wie das Verzeichnis haben muss (z. B. update_sys/update_sys.sh). Die beiden Hauptprobleme, die ich danach habe, sind, dass 1) beim Ausführen der Befehle kein Terminalfenster mit einer Ausgabe angezeigt wird und 2) ich nicht weiß, wie ich iTerm2 (oder ein anderes Dienstprogramm) als primäres Terminal-Dienstprogramm zum Ausführen von Skripten festlegen kann. Ich habe iTerm2 als Standard-Terminal-Dienstprogramm festgelegt, einige ausgeführte Skripte werden jedoch weiterhin im Terminal gestartet.

Jede Hilfe wird sehr geschätzt!

(Wenn meine Vorstellungen zum Hinzufügen von Befehlen zu einem Benutzeranmeldeereignis falsch sind oder es einen einfacheren Weg gibt, lassen Sie es mich bitte wissen!)

Antwort1

Ich habe iTerm (oder Mac OS) nie verwendet; aber da iTerm ein Terminalemulator ist, ist es wahrscheinlich nicht zum Planen von Aufgaben geeignet. Auf *nixiod-Systemen werden Anmeldeskripte normalerweise aus Dateien wie ~/.profile, /etc/profileund in Shell-spezifischen Dateien wie ~/.bashrcund ausgeführt /etc/bash.bashrc. Sie können darüber auf der Manualpage Ihrer Shell lesen (z. B.man 1 bash).

Antwort2

Mit iTerm können Sie diese Skripte interaktiv ausführen und die Ergebnisse sehen, während interaktive Sitzungen die Ausgabe an den Bildschirm senden.

Viele Programme können auch als Hintergrundprozesse ausgeführt werden.

Die beste Möglichkeit, die Ausgabe anzuzeigen, besteht normalerweise darin, sie manuell an ein Protokoll anzuhängen. Verwenden Sie bei Bedarf Echo-Anweisungen, um anzuzeigen, wo und welcher Befehl ausgeführt wird. Für den Ausgabestrom, der vom integrierten Befehl stammt.

Ich denke, was Sie wahrscheinlich wollen, wird hier ausführlich beschrieben:https://unix.stackexchange.com/questions/74520/kann ich die Ausgabe gleichzeitig in eine Protokolldatei und in den Hintergrund eines Prozesses umleiten?

d. h. some_cmd > some_file 2>&1 &die Standardausgabe wird in die Protokolldatei umgeleitet.

verwandte Informationen