java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Java Basics - Anfänger-Themen

Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 03.06.2009, 08:02   #1 (permalink)
Benutzer
int
 
Registriert seit: 03.06.2009
Fachbeiträge: 63
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
Standard [ Solved ]Unix Commando ausfuehren

Hallo Forum!

Ich habe mit meinem Programm folgendes Problem.
Ich will ein laengeres Unix Commando, welches auch eine laengere Laufzeit aufweist, in Java ausfuehren.
Leider jedoch erzeugt es absolut keinen Output, auch keine Fehlermeldungen.

Kann mir vll. jemand sagen, an was das liegen kann?
Bin leider noch nicht so bewandert in Java.

Danke Euch vielmals!

Code:
import java.io.*;
import java.lang.management.*;

public class Cfiles {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub

                String name = (new File("/opt/find/lock/find.lock")).getName();
                String lock = "/opt/find/lock/";
                String age_of_logfile_to_delete = "7";
                String logdirectory = "/opt/find/log";
                String log = "find.log_";
                String command = "find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep -iv e2ereleases grep -iv orcbackup >> /opt/find/log/find.log";
                int c;


                // LOCK ueberpruefen

                /*              Runtime rt = Runtime.getRuntime();

                try {
                        Runtime rt = Runtime.getRuntime();
                        Process proc = rt.exec("find /opt/find/lock/find.lock " + lock + " -newer /opt/find/lock/find.lock");
//                      System.out.print("Process: " + proc + "\n");
                } catch (Throwable t)
                {
                        System.out.println("find.lock is newer");
                        t.printStackTrace();
              } */

        try{
                File file = new File("/opt/find/lock/find.lock");
                 if ( file.exists() ) {
                         System.out.println("File: " + file.getAbsolutePath());
                         System.out.println("Lock File is already existing");
                         System.exit(256);
                 }
                 else {
                         System.out.println("File: " + file.getAbsolutePath() + " nicht vorhanden");
                         String tb  = ManagementFactory.getRuntimeMXBean().getName(); {
                     //System.out.println("Process: " + tb + "\n");

                     try {

                             File datei = new File("/opt/find/lock/find.lock");
                             FileWriter PID = new FileWriter(datei);
                             // 2.2. schreiben
                             PID.write(tb); //ASCII Zahl => A
                             //      2.3. schliessen, sonst geschieht nichts!
                             PID.close();

                             // Programmablauf

[B][COLOR="Red"]                             Runtime r = Runtime.getRuntime();
                                Process p;
                                p = r.exec("find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep -iv e2ereleases | grep -iv orcbackup >> /opt/find/log/find.log");[/COLOR][/B]
                                p.getErrorStream().close();
                                p.getOutputStream().close();
                                p.getInputStream().close();

                             System.out.println("PROC: " + p);

                             if (datei.exists()) {
                                 datei.delete();
                             }
                             System.out.println("File deleted");
                     }
                 catch(FileNotFoundException e) { }
                 catch(IOException e) { }

                 }
        }
        } finally {
                System.out.print("Look forward");
        }
       }
}

Geändert von byron1778 (03.06.2009 um 10:42 Uhr)
byron1778 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 08:23   #2 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von faetzminator
 
Registriert seit: 05.01.2007
Fachbeiträge: 4.906
Abgegebene Danke: 57
Erhielt 542 Danke für 523 Beiträge
versuchs mal mit:
Java Code: Quelltext in neuem Fenster öffnen
1
2
String[] findArgs = "find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep -iv e2ereleases | grep -iv orcbackup >> /opt/find/log/find.log".split(" ");
p = r.exec(findArgs);

EDIT: du solltest AFAIK mit "bash -c" noch sicherstellen, dass pipen möglich ist. also zuerst explizit die bash aufrufen und die restlichen Argumente übergeben.
__________________
Ich bin keine Signatur, ich headbang hier nur!
faetzminator ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 08:41   #3 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 03.06.2009
Fachbeiträge: 63
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
Hallo!

Leider hat es auch so nicht funktioniert!
Ich habe in der Shell folgendes auch ausprobiert, wenn ich dich richtig verstanden habe:

Code:
bash -c "find ..."
Das hat auch ohne Probleme funktioniert, das Commando selber in der Bash funktioniert ebenso!

Ebenso hab ich folgendes ausprobiert:

Code:
String[] findArgs = "bash -c \"find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep -iv e2
ereleases | grep -iv orcbackup >> /opt/find/log/find.log\"".split(" ");
Hat leider ebenso zu keinem Erfolg gefuehrt!
byron1778 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 08:43   #4 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von thE_29
 
Registriert seit: 11.05.2004
Fachbeiträge: 6.733
Blog-Einträge: 3
Abgegebene Danke: 4
Erhielt 51 Danke für 40 Beiträge
Ich würde schon alles in einem String lassen!
Also probier das was S gesagt hat nur ohne split! Und dann guck ob in die Datei was reinkommt.

Achja, eventuell ein Process.waitFor(); müsstest du einbauen. Weil wenn sich das Programm gleich beendet, wird das nix..
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub)
Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/
thE_29 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 09:19   #5 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 03.06.2009
Fachbeiträge: 63
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
Hm, hat leider auch nichts gebracht, weder mit String[] noch als String!

So sieht mein Code nun aus (habe noch ein exitValue eingebaut, da steigt er mit 1 aus - duerfte also nicht gefunkt haben, oder?)

Code:
  // Programmablauf

                             Runtime r = Runtime.getRuntime();

                             String findArgs = "find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep -iv e2ereleases | grep -iv orcbackup >> /opt/find/log/find.log";
                             Process p = Runtime.getRuntime().exec(findArgs);
                  
                             try {
                             p = r.exec(findArgs);
                             p.waitFor(); 
                             int status=p.exitValue();
                             System.out.println("Test: " + status); } catch { InterruptedException e) { System.out.println("Test: "); }

Geändert von byron1778 (03.06.2009 um 09:27 Uhr)
byron1778 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 10:42   #6 (permalink)
Benutzer
int
Themenstarter
 
Registriert seit: 03.06.2009
Fachbeiträge: 63
Abgegebene Danke: 6
Erhielt 0 Danke für 0 Beiträge
Ich konnte das Problem loesen, bzw. glaube ich, dass Faetzminator schon die richtige Loesung gepostet hatte, ich es leider nur falsch verstanden habe!

Code:
String[] findArgs = {"/bin/bash", "-c", "find /opt -mtime 0 -print | grep -i -v netbeans | grep -i -v orc | grep -iv gate | grep
 -iv e2ereleases | grep -iv orcbackup >> /opt/find/log/find.log"};

Process p = Runtime.getRuntime().exec(findArgs);
Danke Euch vielmals!
byron1778 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 14:42   #7 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von thE_29
 
Registriert seit: 11.05.2004
Fachbeiträge: 6.733
Blog-Einträge: 3
Abgegebene Danke: 4
Erhielt 51 Danke für 40 Beiträge
Ne, das ist ne Mischung von mehreren Strings und Parameter!
Das split(" ") hätte dir auch >> gesplittet und das ohne eine Datei geht nicht wirklich..

Du hast jetzt 3 Strings! Einmal den Befehl selbst und dann halt 2 Parameter (wobei der 2te ja mehrere Befehle sind).
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub)
Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/
thE_29 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 03.06.2009, 15:02   #8 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Benutzerbild von faetzminator
 
Registriert seit: 05.01.2007
Fachbeiträge: 4.906
Abgegebene Danke: 57
Erhielt 542 Danke für 523 Beiträge
du meinst, der letzte Parameter sollte ">> somefile" sein und würde funktionieren (im Fall, dass man es ohne bash -c machen würde)?
__________________
Ich bin keine Signatur, ich headbang hier nur!
faetzminator ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 10.06.2009, 15:37   #9 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von thE_29
 
Registriert seit: 11.05.2004
Fachbeiträge: 6.733
Blog-Einträge: 3
Abgegebene Danke: 4
Erhielt 51 Danke für 40 Beiträge
Nö, gerade das letzte >> darf nix separates sein, weil das kein explizites Kommano ist sondern halt die Umleitung!
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub)
Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/
thE_29 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Unix Shell Subroutine ausfuehren Gast1 Java Basics - Anfänger-Themen 3 30.12.2008 14:54
Verzeichnisse mit Inhalt verschieben auf UNIX Lombak Java Basics - Anfänger-Themen 5 21.04.2008 20:51
Owner (UNIX) coco_der_Affe Java Basics - Anfänger-Themen 2 26.03.2007 15:13
Double-Click f. alle Komps UNIX u. WIN verschieden ? gast AWT, Swing, JavaFX & SWT 5 03.08.2005 10:43
Vi-Editor von UNIX mit Java (RMI) Flyer Netzwerkprogrammierung 2 06.01.2005 12:10


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de