Ricreare i file dallo script di shell o java?

2

Ho un'applicazione java che prende un file, che viene creato da un processo in esecuzione sul terminale. Comincio il processo usando un piccolo script di shell. Quindi esegui l'applicazione Java e legge il file creato dal processo.

Ogni volta che questo sistema viene eseguito, il file creato deve essere rimosso in modo che il processo lo crei usando lo stesso nome. Non ho alcun controllo sul processo di creazione del file, quindi non posso sovrascrivere o aggiungere al file.

La mia domanda è, su quale parte dovrebbe essere cancellato il file? Nell'applicazione Java o nel piccolo script di shell che ho scritto?

Mi dispiace se altri aspetti del sistema sembrano mal progettati, ma come ho detto ho poco controllo su di esso.

    
posta ickarsim 05.09.2014 - 12:15
fonte

2 risposte

2

Sono un grande fan degli stupidi strumenti. Voglio che il mio martello martelli e che i miei cacciaviti si avvitino. Se uso grep, voglio trovare qualcosa, ma non voglio che sia in grado di inviarmi tramite e-mail i risultati. Se lo volessi, potrei collegarlo a un altro strumento che lo farebbe.

Allo stesso modo, hai un programma Java che può fare qualsiasi cosa immaginabile. Perché esattamente non farebbe qualcosa di immaginabile? È perché oltre a perdere tempo a implementare qualcosa che non è richiesto dal tuo programma, più funzionalità aggiungi a un programma, più diventa complicato. Devi destreggiarti tra i molti modi diversi di chiamare il programma, solo per fare la stessa cosa che uno strumento già fa, stupidamente .

Quindi, a mio modesto parere, non dovresti aggiungere nulla al programma java che non può essere fatto nello script di shell. Scrivi uno stupido programma e lascia che lo script della shell fornisca la logica che lo sottende, il che rende facile capire come funziona e come cambiare in seguito.

Se ti trovi spesso a fare questi tipi di cose spesso, potresti prendere in considerazione la possibilità di esaminare Ant , che è un linguaggio di scripting multipiattaforma basato su Java.

    
risposta data 05.09.2014 - 13:23
fonte
1

L'aggiunta dell'eliminazione del file al programma Java ha l'inconveniente di rendere difficile il debug, supponendo che il programma Java non si comporti come previsto e si desideri riprodurre il comportamento con i dati di input originali.

Se il programma Java viene chiamato dallo script della shell, avrà senso aggiungere la parte di eliminazione allo script, poiché in questo caso lo script sa quando termina il programma Java. Ma hai scritto

I start the process using a small shell script. Then run the Java application and it reads the file created by the process.

Sembra che si stia avviando manualmente il programma Java. Quindi lo script non sa quando il file è stato elaborato dall'applicazione Java o quando l'applicazione Java è terminata. Quindi aggiungere la cancellazione del file allo script non ha alcun senso.

Questo ti lascia le seguenti opzioni:

  • cancella il file manualmente dopo la chiusura dell'applicazione Java
  • scrivi un secondo script di shell che avvia l'applicazione Java ed elimina il file in seguito (usa questo script per richiamare l'applicazione Java)
  • non eliminare il file dopo la fine dell'applicazione Java. Invece, rimuovi il file (se esiste da un'esecuzione precedente) dallo script di shell prima che inizi il processo di generazione dei file .

Nella maggior parte dei casi, preferirei l'ultima alternativa, poiché renderà la riproduzione di qualsiasi problema molto più semplice.

    
risposta data 05.09.2014 - 14:08
fonte

Leggi altre domande sui tag