elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  GNU/Linux (Moderador: MinusFour)
| | |-+  [solucionado] Como puedo hacer este comando simple?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [solucionado] Como puedo hacer este comando simple?  (Leído 3,510 veces)
venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
[solucionado] Como puedo hacer este comando simple?
« en: 15 Agosto 2015, 16:12 pm »

Bueno, hasta hace unos dias, estaba 'hosteando' unos servidores de juegos y decidí a crear un comando para que el servidor no exceda la cuota de espacio (porque el servidor no respeta el FTP)
.
Bien, tenia este comando que detectaba el tamaño de los archivos y los borraba

Código
  1. find /home/ftp -size +150M -exec rm {} \;

Pero... Como puedo hacer que coja el tamaño del directorio total, ysi excede.. Que elimine el ultimo archivo modificado?
PD: Existiria alguna forma de poner una "excepcion" de archivos y que pase al siguiente, por ejemplo: "archivo que no puede borrar: internal.db", y si el ultimo modificado es "internal.db" y el segundo despues es "texto.txt", que elimine "texto.txt" y no "internal.db", nose si me explique, es un poco complicado todo


« Última modificación: 15 Agosto 2015, 20:33 pm por venadHD » En línea

WIитX


Desconectado Desconectado

Mensajes: 1.024


WINTX


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #1 en: 15 Agosto 2015, 16:40 pm »

Porque no creas a cada FTP 1 usuario a el usuario le creas cuotas y le pones que le avise cuando valla a llenar el disco cuando le queden no 300MB o algo así


En línea

"Es más divertido hacerse pirata que unirse a la marina." (Steve Jobs)
venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #2 en: 15 Agosto 2015, 16:45 pm »

Porque no creas a cada FTP 1 usuario a el usuario le creas cuotas y le pones que le avise cuando valla a llenar el disco cuando le queden no 300MB o algo así

Porque el servidor en sí puede crear archivos y escribirlos, por eso el metodo 'anti-llenado' de disco duro, al execeder X tamaño, eliminar el ultimo archivo
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #3 en: 15 Agosto 2015, 18:34 pm »

Creo que puedes hacer:

Código
  1. find /home/ftp -type d -size +150M -exec rm {} \;

Código:
-type c
              File is of type c:

              b      block (buffered) special

              c      character (unbuffered) special

              d      directory

              p      named pipe (FIFO)

              f      regular file

              l      symbolic link; this is never true if the -L option or
                     the -follow option is in effect, unless the symbolic
                     link is broken.  If you want to search for symbolic
                     links when -L is in effect, use -xtype.

              s      socket

              D      door (Solaris)
En línea

venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #4 en: 15 Agosto 2015, 18:58 pm »

Creo que puedes hacer:

Código
  1. find /home/ftp -type d -size +150M -exec rm {} \;

Código:
-type c
              File is of type c:

              b      block (buffered) special

              c      character (unbuffered) special

              d      directory

              p      named pipe (FIFO)

              f      regular file

              l      symbolic link; this is never true if the -L option or
                     the -follow option is in effect, unless the symbolic
                     link is broken.  If you want to search for symbolic
                     links when -L is in effect, use -xtype.

              s      socket

              D      door (Solaris)
Pero lo que tu dices elimina el directorio, la cosa es que eliminara un archivo, o al servidor le quitara el permiso de escritura, de esa forma no podria escribir en el directorio:

Estuve haciendo este script pero da mas errores.. No sé nada de linux, quizas sea por eso XD (ni cerrar la condicional)
Código
  1. root@venad1:~# bash rbf.sh
  2. ': not a valid identifier`limitdisk
  3. ': not a valid identifier`directdisk
  4. rbf.sh: line 10: syntax error near unexpected token `fi'
  5. rbf.sh: line 10: `      fi'
  6. root@venad1:~#

El script xD
Código
  1. #! /bin/bash
  2. typeset -i limitdisk
  3. typeset -i directdisk
  4. limitdisk=1610612736
  5. directdisk=$(du -bs /home/ftp/oqq77888)
  6. if [$directdisk -ge $limitdisk] then
  7. echo "Espacio libre excedido"
  8. else
  9. echo "espacio no excedido"
  10. fi

Aunque bueno, lo mismo que tu has dicho.. podria hacerlo asi:

Código
  1. find /home/ftp -type d -size +1500M -exec chmod 555 /home/ftp/oqq77888/mta-server \;
Funcionaria, no?

PD: Un poco cochino mi numero de mensajes no?
« Última modificación: 15 Agosto 2015, 19:03 pm por venadHD » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #5 en: 15 Agosto 2015, 19:11 pm »

No habia visto que era solo para el ultimo achivo modificado   

Código
  1. find /home/ftp -type d -size +150M -exec rm $(ls -1t {} | head -n 1) \;

Pero hay que tener mucho cuidado con los directorios....
En línea

venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #6 en: 15 Agosto 2015, 19:41 pm »

No habia visto que era solo para el ultimo achivo modificado   

Código
  1. find /home/ftp -type d -size +150M -exec rm $(ls -1t {} | head -n 1) \;

Pero hay que tener mucho cuidado con los directorios....

Cuidado con los directorios? Ese script que pusiste puede borrar un directorio sin querer?, alternativamente, como podria hacer para que no borrara determinados archivos? tanto nombre como extension "internal.db", "mtaserver.conf", "acl.xml", etc etc
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #7 en: 15 Agosto 2015, 20:00 pm »

Cuidado con los directorios? Ese script que pusiste puede borrar un directorio sin querer?, alternativamente, como podria hacer para que no borrara determinados archivos? tanto nombre como extension "internal.db", "mtaserver.conf", "acl.xml", etc etc

Cuando tu haces:

Código
  1. ls -1t

Te devuelve el ultimo fichero modificado y estos pueden ser directorios tambien. Igual es mejor tener un script separado que busque dentro del directorio el ultimo archivo modificado y que excluya directorios.
En línea

venadHD

Desconectado Desconectado

Mensajes: 94

Donde hay hackers, tambien hay crackers.


Ver Perfil WWW
Re: Como puedo hacer este comando simple?
« Respuesta #8 en: 15 Agosto 2015, 20:32 pm »

Cuando tu haces:

Código
  1. ls -1t

Te devuelve el ultimo fichero modificado y estos pueden ser directorios tambien. Igual es mejor tener un script separado que busque dentro del directorio el ultimo archivo modificado y que excluya directorios.

Hmm, me pondre a investigar sobre eso xD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como hacer que un comando winsock este tambien en otro Form
Programación Visual Basic
Log-On 8 2,765 Último mensaje 9 Septiembre 2006, 03:00 am
por Log-On
Como puedo hacer este efecto « 1 2 »
Diseño Gráfico
jamarchi 17 7,072 Último mensaje 29 Agosto 2007, 23:57 pm
por jamarchi
(Solucionado) [VBS] como hacer este bucle? « 1 2 »
Scripting
Eleкtro 11 10,212 Último mensaje 22 Febrero 2012, 10:14 am
por Eleкtro
Comprueba si Windows 10 está correctamente activado con este simple comando
Noticias
wolfbcn 0 1,179 Último mensaje 23 Marzo 2017, 18:39 pm
por wolfbcn
[C]Como puedo parsear un simple comando
Programación C/C++
huchoko 9 2,674 Último mensaje 13 Febrero 2019, 22:48 pm
por ThunderCls
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines