En un servidor CentOS 7, quiero obtener la lista de unidades seleccionables para las que journalctlpueden producir registros. ¿Cómo puedo cambiar el siguiente código para lograr esto?
journalctl --output=json-pretty | grep -f UNIT | sort -u
En el terminal CentOS 7, produce el código anterior grep: UNIT: No such file or directory.
EDITAR:
El siguiente programa Java está finalizando sin imprimir ningún resultado del grep deseado. ¿Cómo puedo cambiar las cosas para que el programa Java funcione además de la versión del terminal?
String s;
Process p;
String[] cmd = {"journalctl --output=json-pretty ","grep UNIT ","sort -u"};
try {
p = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = br.readLine()) != null)
System.out.println("line: " + s);
p.waitFor();
System.out.println ("exit: " + p.exitValue()+", "+p.getErrorStream());
BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((s = br2.readLine()) != null)
System.out.println("error line: " + s);
p.waitFor();
p.destroy();
} catch (Exception e) {}

grep -FRespuestas:
journalctlpuede mostrar registros para todas las unidades: si estas unidades escriben en el registro es una cuestión diferente.Para enumerar todas las unidades disponibles y, por lo tanto, todas disponibles para
journalctlusar:En cuanto a su código Java, para que las tuberías funcionen
Runtime.exec(), puede poner el comando en un script e invocar el script o usar una matriz de cadenas, algo como:o:
fuente
list-unit-filesno muestra unidades instanciadas y unidades transitorias.man journalctldice:Entonces, puedes ejecutar:
para obtener la lista de unidades seleccionables para las que
journalctlpueden producir registros(por defecto, sólo root y los usuarios que son miembros de algunos grupos especiales tienen acceso a la revista sistema y los diarios de otros usuarios. Los miembros de los grupos
systemd-journal,admywheelpuede leer todos los archivos de diario.)fuente
sudo journalctl --field _SYSTEMD_UNIT. Pero por lo demás, gracias y +1 por agregar información.sudopuede, puede usar,journalctlpero solo obtiene una pequeña lista de unidades que están directamente relacionadas con la sesión de su usuario.systemd 219que no admite los argumentoslist-unit-files --allproporcionados en la respuesta actualmente aceptada.