En un servidor CentOS 7, quiero obtener la lista de unidades seleccionables para las que journalctl
pueden 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 -F
Respuestas:
journalctl
puede 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
journalctl
usar: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-files
no muestra unidades instanciadas y unidades transitorias.man journalctl
dice:Entonces, puedes ejecutar:
para obtener la lista de unidades seleccionables para las que
journalctl
pueden 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
,adm
ywheel
puede leer todos los archivos de diario.)fuente
sudo journalctl --field _SYSTEMD_UNIT
. Pero por lo demás, gracias y +1 por agregar información.sudo
puede, puede usar,journalctl
pero solo obtiene una pequeña lista de unidades que están directamente relacionadas con la sesión de su usuario.systemd 219
que no admite los argumentoslist-unit-files --all
proporcionados en la respuesta actualmente aceptada.