Ich benutze ein Skript von ASP.NET/C# mit SharpSsh. Ich merke, wenn das Skript ausgeführt wird und ich einen ps -ef grep von Unix mache, sehe ich das gleiche Skript zweimal, eins in csh -c und das andere mit ksh. Das Skript hat shebang ksh, also bin ich mir nicht sicher, warum auch eine Kopie von csh läuft. Auch wenn ich das gleiche Skript direkt von Unix aus laufe, läuft nur eine Kopie mit ksh. Es gibt keine andere Shell, die im Skript ausgeführt wird.SharpSsh - Skript läuft zweimal in Csh und Ksh
0
A
Antwort
1
Die meisten Unix/Linux haben jetzt einen Befehl oder eine Option, die Prozessbäume zeigen, mit eingerückter Liste wie, suchen nach-t oder -T Optionen zu ps ODER ptree ODER ???
USER PID PPID START TT TIME CMD
daemon 1 1 11-03-06 ? 0 init
myusr 221568 1 11-03-07 tty10 1.00s \_ -ksh
myusr 350976 221568 07:52:11 tty10 0 | \_ ps -efT
Ich wette, Sie werden sehen, dass die csh der Benutzer Login-Shell ist, dass Ihr Skript als Argument enthält (Sie müssen verschiedene Optionen ps sehen Sie die vollständige Befehlszeile des csh Prozess verwenden kann) UND als Unterprozess sehen Sie, dass ksh Ihr Skript ausführt, und weitere Unterprozesse unter ksh für alle externen Befehle, die das Skript aufruft.
Ich hoffe, das hilft.
P.S. Wenn Sie als neuer Benutzer eine Antwort erhalten, die Ihnen hilft, denken Sie bitte daran, sie als akzeptiert zu markieren oder geben Sie ein + (oder -) als nützliche Antwort an.
Ist es möglich, dass sich SharpSsh als ein Benutzer anmeldet, der csh als Standard-Shell hat, und dann Ihr Skript ausführt, während der Shebang das Richtige tut? Ein ksh-Skript kann nicht mit csh interpretiert werden, da die Syntax zu unterschiedlich ist. Sie können auch eine Debugging-Ausgabe in Ihr Skript einfügen, zum Beispiel mit '$$', um die PID auszugeben, die zum Beispiel an eine Datei angehängt oder berührt wird. (SharpSsh kenne ich übrigens nicht.) –
das mag stimmen, da die Standard-Shell des Benutzers csh ist ... aber würde es trotzdem nicht funktionieren? Ich kann das Ksh-Skript von Unix mit dem gleichen Benutzer in Csh ausführen, und es funktioniert immer noch. Außerdem kann ich das Skript nicht in csh umschreiben. – Templar
Ich sage nur, dass es dafür verantwortlich sein kann, dass es zweimal in der Prozessliste erscheint. Vielleicht ist der 'csh -c'-Eintrag der Prozess, der das Skript startet, und der andere Eintrag ist das tatsächlich laufende Skript. –