Solución 1:
Puedes hacer esto con una combinación de ps, awk y kill:
ps -eo pid,etime,comm
Le brinda una salida de tres columnas, con el PID del proceso, el tiempo transcurrido desde que comenzó el proceso y el nombre del comando, sin argumentos. El tiempo transcurrido se parece a uno de estos:
mm:ss
hh:mm:ss
d-hh:mm:ss
Dado que desea procesos que se han estado ejecutando durante más de una semana, buscará líneas que coincidan con ese tercer patrón. Puede usar awk para filtrar los procesos por tiempo de ejecución y por nombre de comando, así:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }'
que imprimirá los pid de todos los comandos que coincidan con 'mycommand' que se hayan estado ejecutando durante más de 7 días. Pasa esa lista a kill y listo:
ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }' | kill -9
Solución 2:
killall --quiet --older-than 1w process_name