Frage Hallo an Alle Leider habe ich auf meine Frage bis jetzt keine funktionierende Antwort gefunden oder aber ich bin zu blöd die Puzzleteile zusammen zu setzen. Ich habe eine Batch Datei erstellt, in der ich unter anderem mehrere Powershell Script starte. Dazwischen hat es immer noch andere Befehle die in der Reihenfolge ausgeführt warden sollen. Nun erscheint aber bei jedem Start eines der Powershell Scripts ein blaues Fenster und zeigt was er da so abarbeitet. Das interessiert den User nicht resp. verwirrt diesen nur. Also sollen diese Fenster nicht angezeigt warden resp. unterdrückt werden. Aber wie? Das Powershell Script rufe ich mit folgendem Befehl auf. Powershell Fenster unterdrücken. PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""C:\1""'}" Danke für jeden Tipp Trix Antworten Hallo Trix, ich würde Dir empfehlen, die Hilfe für die mal genau zu studieren! ;-) Also einfach mal auf der Kommandozeile " /? " eingeben und die Hilfe komplett lesen.
Danach wird der Bildschirm freigegeben und man erhält den normalen Eingabe-Prompt für weitere Aufgaben zurück. Mit den im folgenden beschriebenen Befehlen kann man dann die weitere Verarbeitung der einzelnen Jobs manipulieren. Prozess abbrechen - ^C ¶ Mit der Tastenkombination Strg + C können laufende Prozesse der Shell [2] beendet werden. Der Prozess muss dafür im Vordergrund laufen! wget -nv ^C Prozess anhalten - ^Z ¶ Z können laufende Prozesse der Shell [2] pausiert werden. Der Prozess muss dafür im Vordergrund laufen! wget -nv ^Z [1]+ Angehalten wget -nv Man erhält die Jobnummer, den neuen Status des Jobs sowie den kompletten Aufruf-Befehl als Information zurück. Shell script im hintergrund ausführen online. Prozess in den Hintergrund - bg ¶ Mit Hilfe des Befehls bg wird ein angehaltener Job der Shell [2] in den Hintergrund verschoben und wieder gestartet: bg%Jobnummer [1]+ wget -nv & Man bekommt die Jobnummer und den ursprünglichen Aufruf-Befehl mit & ausgegeben. Beispiel einer kompletten Eingabefolge mit Job-Abfrage: wget -nv ^Z [1]+ Angehalten wget -nv [1]+ wget -nv & [1]+ Läuft wget -nv & Ruft man bg oder fg ohne Parameter auf, wird der zuletzt gestartete Prozess (in der Ausgabe von jobs mit einem + markiert) in den Vorder- bzw. Hintergrund geholt.
nohup, um einen Befehl mit dem Befehl nohup im Hintergrund auszuführen: nohup command & Die Befehlsausgabe wird in die Datei umgeleitet. nohup: ignoring input and appending output to '' Alternativen Es gibt eine Reihe von Programmen, mit denen Sie mehrere interaktive Sitzungen gleichzeitig durchführen können. Bildschirm Screen oder GNU Screen ist ein Terminal-Multiplexer-Programm, mit dem Sie eine Bildschirmsitzung starten und eine beliebige Anzahl von Fenstern (virtuelle Terminals) innerhalb dieser Sitzung öffnen können. In Screen ausgeführte Prozesse werden weiterhin ausgeführt, wenn ihr Fenster nicht sichtbar ist, auch wenn Sie die Verbindung trennen. Tmux Tmux ist eine moderne Alternative zum GNU-Bildschirm. Shell-Befehl im Hintergrund aus dem Skript ausführen - - 2022. Mit Tmux können Sie auch eine Sitzung erstellen und mehrere Fenster in dieser Sitzung öffnen. Tmux-Sitzungen sind persistent, was bedeutet, dass Programme, die in Tmux ausgeführt werden, auch dann weiter ausgeführt werden, wenn Sie das Terminal schließen. Fazit Um einen Befehl im Hintergrund auszuführen, schließen Sie & am Ende des Befehls ein.
eval '${1}' würde auch mehrere Argumente ignorieren, wie Sie betont haben. eval ' [email protected] ' würde diese beiden Randfälle behandeln. Dem stimme ich zu eval '${1}' sollte jedoch ausreichen, da Ihr Code in der Art und Weise, wie er diese Funktion aufruft, konsistent sein sollte. Shell script im hintergrund ausführen im windows subsystem. Anfordern der Anführungszeichen in _evalBg '${cmd}' Anstatt von _evalBg ${cmd} wird den Code auf lange Sicht übersichtlicher machen. @ GreenRaccoon23, als Demonstrationsfall, betrachten set -- printf '%s\n' 'first argument' 'second argument' -- ' [email protected] ' wird alleine arbeiten, eval ' [email protected] ' Gewohnheit. @ GreenRaccoon23,... und ja, ich positioniere das Ignorieren mehrerer Argumente als Feature und nicht als Fehler mit der Begründung, dass es besser ist, einen Fall überhaupt nicht zu unterstützen, als ihn schlecht zu unterstützen: Akzeptieren Sie entweder eine einzelne Zeichenfolge mit Code laufen ( eval '$1') oder akzeptieren Sie eine Liste von Argumenten ( ' [email protected] '); aber eval ' [email protected] ' verhält sich genauso wie eval '$*' würde, mit all den Fehlern, die impliziert.
Bzgl. des dauerhaften Laufens hast Du zwei Möglichkeiten: entweder lässt Du den Loop im Skript drin (dann läuft der Task dauerhaft, was vielleicht aus Fehlernachvollziehbarkeit nicht so gut wäre) oder Du definierst, dass der Task jede Minute wiederholt werden soll. Je nachdem, wie schnell die PDFs ausgedruckt werden müssen... Gruß Ben MCSA Windows 8 (. Shell script im hintergrund ausführen 1. 1) MCSA Windows Server 2012 (R2) Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-) Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können. Hallo, wenn du einen Windows Server einsetzt kannst du auch alternativ den File Server Ressource Manager nutzen. Dann brauch dein Script nicht mehr loopen und wird nur gestartet, wenn einen neue Datei im Verzeichnis auftaucht. Ressourcen-Manager für Dateiserver (File Server Resource Manager, FSRM) Beste Grüße Alex
Suche die Definition und die Übersetzung im Kontext von " rufen ", mit echten Kommunikationsbeispielen. Ähnliche Verben: hervorrufen, widerrufen, anrufen
wird an ge ruf en (von jmdm. ) wird an ge ruf en bei etw. ) an ge ruf en bei jmdm. ) an ge ruf en etw. /jmd. ) an ge ruf en irgendwoher wird (durch jmdn. ) an ge ruf en jmd. wird (durch jmdn. ) irgendwoher an ge ruf en jmd. ) bei jmdm. an ge ruf en jmd. wird gegen/um etw. (durch jmdn. wird um etw. (von jmdm. )