Quantcast
Channel: Blog Virtualizacion
Viewing all articles
Browse latest Browse all 679

Script Matar Procesos Libreoffice

$
0
0

Script Matar Procesos Libreoffice

Hoy os quiero enseñar como matar procesos de Libreoffice a través de Powershell. Os explico un poco los casos de uso para este script. Un aplicativo que no puede tener sesiones en memoria por más de 1 minuto ya que puede dar problemas.

Al final, cuando abres SCALC, por ejemplo, en memoria se generan varios procesos Windows, esos son soffice.bin, soffice.exe, scalc.exe…y si abrimos SWORD, pues sword.exe pero no otro SOFFICE.EXE ni SOFFICE.BIN. Y esto se repite por cada usuario que esté logueado en el equipo.

----soffice.bin
----soffice.exe

             |_______ scalc.exe

             |_______ sword.exe

Si matas soffice.exe no matas los subprocesos, pero eso sí pasa con soffice.bin. Así que, vamos a mirar directamente a SOFFICE.bin para forzar su cierre. Miraremos el ID y nos aseguramos que el proceso de Libreoffice no esté en memoria más de 60 segundos.

Os dejo el script y la explicación por sección, deja log por pantalla y en fichero:

##############################################################################
##############
############# Script Raúl para el Blog de Negu - 24062018
############# 
############ Parar procesos con más de 60 segundos en memoria
##############################################################################
# Clear-Host
# Cargamos una variable con la hora menos 60 segundos
$60Segundos = (Get-Date).AddSeconds(-60)
# Cargamos variable con el cmd más antiguo en memoria
$Procs = get-process -name soffice.bin -ErrorAction SilentlyContinue | Sort StartTime | Select -First 1
# Empezamos a escribir el log
# Start-Transcript ("c:\script\log\matar-procesos{0:yyyyMMdd-HHmmss}.log" -f (Get-Date))
# Si existen procesos en memoria los comprueba
if ($Procs -ne $null)
{
# Revisamos los IDs
ForEach ($ProcID in $Procs.ID)
{
# Vemos la diferencia de tiempo
$diferencia = $60Segundos - $Procs.StartTime
# Si la diferencia es igual o mayor que 1 minuto
if ($diferencia.Minutes -ge '1')
{
$hora1 = Get-Date
# Matamos los IDs de los procesos de más o igual a 1 minuto 
stop-process -id $ProcID -Force
# Exportamos todo a un fichero log
$log1 = Write-Output "Forzamos cierre proceso $ProcID, el dia $hora1, llevaba $diferencia minutos"
Add-Content $log1 -Path "c:\script\log\matar-procesos.log"
Write-Output "##############PROCESOS CERRADOS###############"
Write-Output "Forzamos cierre proceso $ProcID, el dia $hora1, llevaba $diferencia minutos"
Write-Output "##########FIN PROCESOS CERRADOS###############"
} 
# Si hay procesos soffice pero no tienen más de o igual de 1 minuto 
else 
{
$hora2 = Get-Date
# Exportamos todo a un fichero log
$log2 = Write-Output "$hora2, no hay procesos de mas de 60seg que cerrar"
Add-Content $log2 -Path "c:\script\log\matar-procesos.log"
Write-Output "##############NO HAY PROCESOS DE 60SEG###############"
Write-Output "$hora2, no hay procesos de mas de 60seg que cerrar"
Write-Output "##########FIN PROCESOS CERRADOS###############"
}
}
}
# Si no existen procesos soffice en memoria
else
{
$hora3 = Get-Date
# Exportamos todo a un fichero log
$log3 = Write-Output "$hora3, no hay procesos que cerrar"
Add-Content $log3 -Path "c:\script\log\matar-procesos.log"
Write-Output "##############NO HAY PROCESOS A CERRAR########"
Write-Output "$hora3, no hay procesos que cerrar"
Write-Output "##########FIN PROCESOS CERRADOS###############"
#Liberamos variables para nueva ejecucion
Remove-Variable 60segundos
Remove-Variable Procs
}
# Parar la escritura del log
# Stop-Transcript

La entrada Script Matar Procesos Libreoffice se publicó primero en VMware Citrix Blog.


Viewing all articles
Browse latest Browse all 679