lunes, 10 de diciembre de 2007
¿Cómo utilizar apt-get en OpenSuse?
Por favor pasate por mi nuevo blog ya que este esta abadonado:
http://blog.iniciodetrayecto.com
Para aquellos que migran desde Debian, Ubuntu y demás derivados a OpenSuse deben saber que éste no utiliza apt-get, si no Yast, que es un potente manejador de paquetes.
Para utilizar apt-get en OpenSuse sigan los siguientes pasos.
Comencemos abriendo Yast, vamos a Sistema>Instalar Software.
En la busqueda colocamos apt.
Lo instalamos y va que chuta
viernes, 7 de diciembre de 2007
Alternativa Dreamweaver
Para linux hay una laternativa bastante buena al programa de diseño web Dreamweaver. Este se llama Kompozer, funciona tanto para linux, windows y creo que hasta mac y es bastante facil de utilizar, funciona con pestañas como firefox o dreamwevaer mx 2004. y la instalación en paquetes rpm es muy facil de instalar: botón derecho del raton sobre el rpm e instalar.
Adjunto un par de screenshots
Hay que reconocer, que la versión para windows es de lo mejorcito que puede haber, ni siquiera hay qeu ejecutar un instalador, basta con descomprimir el contenido del zip en una carpeta y a funcionar sin problemas. Desde ahora ya no uso dreamwevaer (ya que tenia una version trial de esas de 30 dias), os lo recomiendo.
lunes, 5 de noviembre de 2007
domingo, 14 de octubre de 2007
Propietarios con chown y chgrp
Introducción.
Tanto chown como chgrp, forman parte del paquete coreutils, el cual se instala de forma predeterminada en todas las distribuciones de GNU/Linux, por tratarse de un componente esencial.
URL: ftp://alpha.gnu.org/gnu/coreutils/
Mandato chown.
El mandato chown se utiliza para cambiar el propietario al que pertenece un fichero o directorio. Puede especificarse tanto el nombre de un usuario, así como un número de identidad de usuario (UID). Opcionalmente, utilizando un signo de dos puntos (:), o bien un punto (.), permite especificar también un nombre de grupo.
Opciones.
-R | Cambia recursivamente el propietario (y, opcionalmente, el grupo al que pertenecen los directorios, junto con todos sus contenidos. |
-v (o --verbose) | Salida de chown más descriptiva. |
--version | Ver el número de versión del programa. |
--dereference | Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino. |
-h (o --no-dereference) | En el caso de enlaces simbólicos, cambia el propietario del destino en lugar del propio enlace. |
--reference | Cambia el el propietario de un fichero, tomando como referencia el propietario de otro. |
Utilización.
chown [opciones] usuario[:grupo] fichero(s) o directorio(s) |
Mandato chgrp.
El mandato chgrp se utiliza para cambiar el grupo al que pertenece un fichero o directorio. Puede especificarse tanto el nombre de un grupo, así como un número de identidad de grupo (GID).
Opciones.
-R | Cambia recursivamente el grupo al que pertenecen los directorios, junto con todos sus contenidos. |
-v (o --verbose) | Salida de chgrp más descriptiva. |
--version | Ver el número de versión del programa. |
--dereference | Actúa sobre enlaces simbólicos en lugar de hacerlo sobre el destino. |
-h (o --no-dereference) | En el caso de enlaces simbólicos, cambia el grupo del destino en lugar del propio enlace. |
--reference | Cambia el grupo de un fichero, tomando como referencia el propietario de otro. |
Utilización.
chgrp [opciones] fichero(s) o directorio(s) |
Ejemplos.
El siguiente mandato realiza el cambio de propietario a fulano, sobre el fichero algo.txt.
chown fulano algo.txt |
El siguiente mandato realiza el cambio de propietario a fulano y el grupo desarrollo, sobre el fichero algo.txt.
chown fulano:desarrollo algo.txt |
El siguiente mandato realiza el cambio de propietario a fulano y el grupo mail, del subdirectorio Mail, junto con todo su contenido.
chown -R fulano:mail Mail |
El siguiente mandato realiza el cambio de grupo a desarrollo, sobre el fichero algo.txt.
chgrp desarrollo algo.txt
miércoles, 10 de octubre de 2007
Estructura directorios linux
/
bin Binarios de comandos esenciales
boot Archivos estáticos de cargador de arranque(boot-loader)
dev Archivos de dispositivos
etc Configuración del sistema local-máquina
home Directorios home de los usuarios
lib Librerías compartidas
mnt Punto de montaje de particiones temporales
root Directorio hogar del usuario root
sbin Binarios del sistema esenciales
tmp Archivos temporales
usr Segunda jerarquía mayor
var Información variable
lunes, 23 de julio de 2007
enlazar (links en el sistema de archivos)
-s Crea un enlace simbólico ejemplo:
ln -s /home/usuario/curriculum.doc /home/usuario/Desktop (crea un acceso directo del archivo “curriculum.doc” al escritorio)
ln -s origen_archivo_o_carpeta destino_donde_queremos_el_acceso_directo
miércoles, 11 de julio de 2007
chmod
CHMOD files, asignando permisos
Una de las dudas mas habituales cuando nos enfrentamos a la instalación de scripts (perl, php) es la asignación de los permisos correspondientes. Las preguntas sobre CHMOD suelen ser las mas habituales en todos los foros que se dedican a estos temas. En este artículo abordaremos que son los permisos, para que sirven, y como asignarlos.
Los script y los permisos
CHMOD ("Change mode") es un comando UNIX que permite cambiar los permisos de acceso de un archivo. Cada archivo tiene nueve clases de acceso, que pueden ser permitidas o denegadas. Se pueden aplicar diferentes permisos al dueño del fichero, al grupo al que el fichero pertenece y al resto de usuarios. Cada una de estas tres clases de usuarios (dueño, grupo, resto de usuarios) puede tener permisos de lectura, escritura y ejecución
Al instalar cualquier archivo en una página web, podemos definir sus propiedades, para determinar en que forma será accesible para los visitantes de la página.
Estas propiedades son lo que llamamos permisos y segun cuales asignemos a cada archivo este será solo de lectura, de escritura o ejecutable, o cualquier combinación de los tres.
Piensa por ejemplo en una página de html sencilla, respecto de la cual solo nos interesa garantizar que todo el mundo pueda verla pero no modificarla; el archivo que contiene esa página necesita unicamente permisos de lectura, pero no de ejecución ni de escritura. Por contra, si se trata de un script, necesitará probablemente permisos de lectura y de ejecución, etc.
La orden CHMOD
En este documento nos referimos a la asignación de permisos en servidores unix (unix, linux, freebsd, todos ellos pertenecientes a la familia unix, y con diferencia los mas difundidos en la red). La asignación de permisos se hace mediante el comando CHMOD. Por eso, cuando al leer las instrucciones de instalación de cualquier aplicación web te encuentres con la misteriosa frase "haz chmod 666 tal_archivo.htm" ten en consideración que nos estan diciendo los permisos que ese archivo necesita.
Los servidores Windows tienen su propio sistema de permisos, en los que no vamos a entrar aqui.
El concepto de usuario en UNIX
El sistema operativo UNIX esta diseñado para ser multiusuario. Por ello UNIX permite tres niveles de acceso a los archivos, para tres categorias diferentes de usuarios:
owner (propietario) La persona que el sistema reconoce como dueño del archivo.
Group (grupo): Conjunto de usuarios con permisos similares. Muy usado en entornos de trabajo, es de escasa aplicación en páginas web.
Other (otros): Cualquier otra persona.
Es un error asociar el concepto de usuario a una persona real. Se trata de una abstracción, que se refiere no a personas sino a categorias. Por ejemplo, si nosotros creamos un script, somos efectivamente sus autores y propietarios; pero ese script esta destinado a la red. Nosotros, y el resto de personas, accederan al archivo no a traves de nuestra maquina local sino por internet. Es frecuente en los servidores la creación de usuarios genéricos (root, www, www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser cualquiera que visite la página, lo cual será necesario si como es normal se trata de scripts que se administran via web.
Tipos de permiso de acceso:
Read (lectura): Permiso para ver el archivo o directorio, sin hacer cambios.Write (escritura): Permiso de escritura: puede escribir el archivo, y por tanto, cambiarlo.
Execute (ejecución): El archivo o directorio puede ser ejecutado. Se usa para directorios con scripts, formularios, etc ...
Y tratándose de directorios:
read listar los archivos de un directorio
write añadir nuevos archivos al directorio
execute acceder a los archivos del directorio
Como conozco los permisos de un archivo ?
Si tenemos acceso ftp al servidor, tecleamos el comando ls -l y vemos algo asi:
-rw-r--r-- 1 irvnet irvnet 1272 Sep 28 07:31 index.php
| // / | | | |
| | | | | | tamaño nombre del archivo
| | | | | |_ nombre grupo
| | | | |
| | | | |_ nombre usuario
| | | |
| | | |_ Permisos genericos
| | |
| | |_ Los siguientes tres digitos los permisos del Group
| |
| |___ los siguientes tres caracteres determinan los permisos del owner:
| r de real, lectura; w, write, escritura y x de
| execute, ejecución
|
|
|___ El primer carácter indica si nos encontramos ante un directorio o un
fichero: d significa directorio, - significa fichero,
l significa link
Advierte que tenemos TRES categorias de usuarios ("user," "group," y "other") y para categoria pueden asignarse TRES tipos de permisos: "r," "w," y "x".
Fijando permisos
La orden chmod puede usarse con letras o numeros. La forma mas corriente es expresar los permisos numericamente. Seguro que lo has visto por ahi, chmod 777 etc ...
Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de lectura. 2 permiso de escritura y 1 permiso de ejecución. Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de usuario):
4= lectura
2= escritura
1= ejecución
6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecución
3 (2+1)= escritura y ejecución
7 (4+2+1)= lectura, escritura y ejecución
Todo ello para los tres tipos de usuario.
Asi, un chmod file 777 significa que owner, group y others tienen permiso de lectura, escritura y ejecución. chmod 766 significa que el owner tiene permiso de lectura, escritura y ejecución, y el group y others permiso de lectura y escritura. Chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecución, y group y others unicamente permisos de lectura.
Como ves, son tres digitos, de izquierda a derecha designan los permisos del owner, group y others.
Vemos a continuación su equivalente en letras:
0 = --- = sin acceso
1 = --x = ejecución
2 = -w- = escritura
3 = -wx = escritura y ejecución
4 = r-- = lectura
5 = r-x = lectura y ejecución
6 = rw- = lectura y escritura
7 = rwx = lectura, escritura y ejecución
Asi, en el ejemplo de antes:
rw-r--r--
significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos de lectura unicamente (r--) y other, permiso de lectura (r--). ¿como seria el equivamente numerico? sería chmod 644.
La sintaxis para usar chmod con texto:
chmod [ugo][+-][rwx] [nombre_archivo] Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes] [r=read, w=write, x=execute]
Por ejemplo, chmod go+r index.php significa que asignamos permisos de lectura para group y others en index.php
De esta forma solo cambiamos los atributos que especificamos, pero no alteramos otros compatibles que pudieran estar asignados anteriormente) por ejemplo, no modifica la atribucion anterior a group de un permiso de ejecución).
Si queremos fijar de nuevo todos los permisos, la sintaxis sería:
chmod go=r index.php donde asignamos a group y other permiso de lectura sobre index.php y eliminamos cualquier otro permiso para ambos.
Ten encuenta asimismo que puedes usar comodines:
chmod 644 *.html etc ...
lunes, 9 de julio de 2007
La utilidad screen
Lo primero que tenemos que hacer es instalar la utilidad screen ya sea desde un paquete deb, rpm o un tar.gz
Básicamente, screen nos permite abrir consolas virtuales y desconectarnos y reconectarnos a ellas. El juego de instrucciones básico que debemos saber es el siguiente
screen
Este comando abre una pantalla nueva, nos aparecerá un mensaje para avisarnos y después de pulsar Intro podemos trabajar en nuestra nueva consola
screen -list
Aqui podemos ver la lista de pantallas que tenemos abiertas, nos interesa especialmente el número que aparece y el estado de la ventana (Atached o Deatached), un listado típico de este comando sería el siguiente
suse@linux:~$ screen -list
There are screens on:
22113.pts-0.servidor (Attached)
21576.pts-0.servidor (Detached)
screen -d
Con este comando liberamos la pantalla en la que estamos trabajando, lo que se esté ejecutando en esa pantalla seguirá en marcha, lo único que hacemos es dejar de verla
screen -r numero
Esto sirve para conectarnos a una pantalla libre, si ejecutamos
screen -r 21576
tendriamos acceso a ver que es lo que está pasando en la pantalla 21576exit
Si estamos en una pantalla, la cierra de forma definitiva
Y eso es todo: tenemos muchas más opciones para investigar, pero para eso está el man.
viernes, 6 de julio de 2007
as cosas se instalan en
miércoles, 27 de junio de 2007
Modificar inicio sesion en consola
mensaje de inicio de sesion:
/etc/profile
martes, 26 de junio de 2007
Instalacion deletemail en suse
asi pues primero buscamos gracia a san google el deletemail
...
Como debremos de compilar... recuerdo que hay que tener instalado make install (lo instalamos facilmente a traves de yast2)
para instalar paquetes en formato tar.gz debes primero desempaquetarlos con la siguiete instruccion
tar xvfz paquete.tar.gz
(nota de Jano, ¬¬, ejem ¿como quieres instalar algo desde las fuentes sin compilador?)
hemm... desto, necesitamos como minimo el gcc con yast2 y despues hacemos lo de los pasos sisguientes.
el te creara un directorio con el nombre del paquete ahora lo que tiene que hacer es ingresar al directorio creado
cd directorio_creado_paquete
todos los paquetes traen un instructivo de instalacion por lo general llama INSTALL O README estos te daran una gia,
ahora ejecuta
./configure
despues
make
.- - - lo compilamake install
- - - - instala el programaDeletemail se puede descargar de aqui
http://www.jhweiss.de/software/deletemail.html
RPM, compilar a partir de un tar.gz
Por ejemplo, el spamassassin y el rkhunter.
Supongamos que queremos instalar el ultimo spamassassin y que sólo tenemos su tar.gz, lo bajamos de aqui: http://spamassassin.apache.org
Ahi bajamos el tar.gz de la ultima versión y ejecutamos:
rpmbuild -ta Mail-Spamassassin-3.1.8.tar.gz
verifica que la versión se corresponda con la que hayas bajado, al momento de éste howto es la 3.1.8
El sistema se demorará un rato compilando y obtendrás el rpm.
Lo mismo puedes intentar con cuando tar.gz encuentres. Te garantizo que la mayoría no compilará pues no contienen el .spec.. pero algunos sí.
Si no lo puedes compilar desde tar.gz con rpm, te sugiero crees un rpm basándote en algún .spec que por ahi encuentres.
jueves, 21 de junio de 2007
Apuntes de un minicurso
Ctrl + Alt + Fn F1, F2, F3... cambia de consola de Linux
comando "top" como el administrador de tareas.
-La columna PID indica la prioridad del proceso y sulue ser desde -20 a 20, es decir -20 = Prioridad Maxima, 0 Normal y 20 Minima prioridad.
Ctrl + alt + Blackspace (la de borrar, no supr) reincia únicamente el entorno gráfico.
para saber la version instalada de linux: "uname -a"
Comando parecido al "type archivo.txt" sería "cat archivo.txt"
Para saber los últimos 1000 comandos usados por un usuario escribiremos el comando "history", si por el contrario queremos buscar un comando llamado ls, escribiremos "histrory |grep ls" con grep decimos que busque en el contenido.
La carpeta "/home" seria la equivalente al document and settings de windows
"k3b" seria la utilidad de grabación parecida al Nero
"xmms" seria la utilidad equivalente al winamp
"opartool" utilidad gáfica para poder ver las particiones del disco duro.
Particiones en linux:
1 swat (tamaño minimo = memoria del PC x 2) ej. 256mb x 2 = 512MB de swat
/boot /tamaño recomendado 128MB (pero esto depende de la distribución)
El resto del sistema ext3
Otras distribuciones:
wifislax - distribución especifica para crackear redes wifi o bluetooth.
riplinux - Analisis forense del PC (vamos para saber que narices a pasado)
lunes, 18 de junio de 2007
Más sobre mail / mailx
Primero para saber en que directorio se encuentra, es lógico ya que no podemos hacer un del *.* asi por las buenas..
si nos situamos en el directorio /var/mail/ y realizamos un dir o un ls podremos ver una lista con todos los usuarios que tienen correo.
pues bien aque escribiremos como root o con un usuario que tenga permisos para ello "rv *" y con esto ya hemos borrado todos los correos de todos los usuarios.
otra cosa ya mucho más aburrida seria utilizar el comando mailx -u nombreusuario y una vez dentro escribir "d *" para que borrara todos los mensajes, esta forma "rm *" es muy practica si no queremos entretenernos a borrar mails o simplemente no queremos saber saber nada de lo sucedido (lo que seule pasar a veces con el visor de suecesos de windows)
Tema relacionado
miércoles, 13 de junio de 2007
Tareas, Procesos y Administrador de tareas
Tareas y procesos
En este punto tendremos que empezar a determinar que es un proceso y una tarea. Anteriormente dijimos que un programa se transformaba en proceso en el momento en que este se ejecutaba y estaba en memoria. Además del nombre que el proceso recibe, que es el nombre del programa que esta corriendo, recibe también un número identificativo llamado PID (process ID, o ID de proceso). Si ejecutamos el comando ps veremos los procesos que están ejecutando en este momento con nuestro UID, es decir que estamos corriendo nosotros mismos
[shrek@pantano:~]$ ps
PID TTY STAT TIME COMMAND
172 p0 S 0:00 -bash
184 p0 R 0:00 ps
[shrek@pantano:~]$
Se puede ver que están corriendo dos procesos, el bash (que es el intérprete de comandos) y el proceso ps que es el que estamos usando en este momento en una terminal determinada. Como se puede ver el primer número es el PID que el sistema le asigna al proceso y en la columna COMMAND se puede ver el nombre del proceso. De ninguna manera estos son todos los procesos que se están ejecutando en el sistema. Si se quisieran ver todos los procesos tendrían que poner ps -ax con lo que obtendrían un listado con todos los procesos que se estén ejecutando. Como se puede apreciar, están ambos procesos ejecutándose al mismo tiempo, pero solo uno de ellos esta activo, el comando ps. Nos podemos dar cuenta de esto ya que en la columna STAT aparece en la línea del bash la letra S de SLEEP, ya que en ese momento el intérprete de comandos esta esperando a que el proceso ps termine. Y es aquí donde esta la diferencia entre proceso y tarea. Aunque ambos son procesos, una tarea se refiere al proceso que esta corriendo. Este calificativo solo lo da el shell del sistema cuando se utilizan los controles de tareas dado que no todos los intérpretes de comandos soportan este tipo de control.
Primer y segundo plano
Cualquier proceso puede estar en primer o segundo plano. Lo único a tener en cuenta es que solo un proceso estará en primer plano al mismo tiempo y es con el que estemos trabajando e interactuando en ese momento. Un proceso que este en segundo plano no recibirá ninguna señal de parte nuestra, es decir que no nos podemos comunicar con él a través, por ejemplo, del teclado. La utilidad de enviar un programa a segundo plano esta dada por el hecho de que existen tareas que no requieren de nuestro control para que se ejecuten. Por ejemplo, bajar algún archivo de Internet, compilar el kernel u otro programa. Estas son tareas que pueden ser lanzadas tranquilamente en segundo plano. Para lanzar un proceso en segundo plano, tendremos que poner a continuación del comando el símbolo &. Para ejemplificar esto usaremos el comando find y dejaremos que busque todos los archivos que existen en el disco
[shrek@pantano:~]$ find / -name "*"
Esto nos mostraría una lista bastante larga de archivos por pantalla y nos quedaríamos sin el control del intérprete de comandos mientras esta ejecutándose. Podríamos usar el dispositivo null, que si recuerdan era como un agujero negro donde todo lo que se enviaba a él desaparecía, para redirigir la salida y que no saliera por pantalla
[shrek@pantano~]$ find / -name "*" > /dev/null
Igualmente así no contaríamos con la atención de nuestro interprete de comandos hasta que terminara el trabajo el comando find. La forma de tener la atención del shell inmediatamente después de lanzar el proceso find es enviándolo en segundo plano
[shrek@pantano:~]$ find / -name "*" > /dev/null &
[1] 192
[shrek@pantano:~]$
Como se aprecia, regresó de inmediato al shell, pero antes envió un mensaje a la terminal. El [1] representa a un número de trabajo que el shell asigna a cada uno de los procesos que pasa a segundo plano. Inmediatamente después vemos el número de PID del proceso. Podremos identificar al proceso por cualquiera de los dos números mientras se encuentre en segundo plano. Para ver cuantos trabajos están ejecutándose en este momento podemos usar el comando jobs.
[shrek@pantano:~]$ jobs
[1]+ Running find / -name "*" >/dev/null &
[shrek@pantano:~]$
Podremos eliminar un proceso que se esta ejecutando con la ayuda del comando kill seguido bien sea del número de trabajo precedido de un signo % o del número de PID. De esta forma estamos matando al proceso pero puede darse el caso de que este tarde en desaparecer dado que tiene que limpiar el entorno, por esto muchas veces parecerá que no nos a hecho caso. En realidad el proceso esta haciendo una limpieza del sistema evitando así el mal funcionamiento del mismo y/o una inconsistencia en los datos con que trabajaba. Como ejemplo usaremos otro comando muy típico, el comando yes. Este comando enviará a la salida estándar continuamente la letra y. Sirve este comando para que en caso de que se requiera contestar afirmativamente a las peticiones de un programa pudiéremos mediante una redirección contestarle con un y a cada pregunta. Si lo ejecutáramos sin redirigir la salida a /dev/null, nos llenaría la pantalla con una columna infinita de y. Por esto lo enviaremos a segundo plano redirigiendo la salida y luego lo mataremos con el comando kill.
[shrek@pantano:~]$ yes > /dev/null &
[1] 201
[shrek@pantano:~]$ kill %1
[shrek@pantano:~]$ jobs
[1]+ Terminated yes > /dev/null &
[shrek@pantano:~]$
Como podrán ver, en el momento en que se mando el comando kill, no hubo ningún mensaje. Solo después de ejecutar el comando jobs se nos informo que el trabajo número 1 había finalizado (TERMINATED). Podemos también hacer lo mismo empleando el número de PID con lo que obtendremos idénticos resultados.
[shrek@pantano:~]$ kill 201
Como parar y relanzar tareas
Los procesos pueden ser suspendidos temporalmente hasta que nosotros dispongamos, para así relanzarlos y que continúen ejecutando donde se habían quedado. Esto es de gran utilidad. Supongamos que se esta trabajando con el editor de texto Vi y no queremos trabajar en otra consola, solo tenemos que enviar al programa Vi a dormir un rato y tendremos el intérprete de comandos a nuestra disposición. En la mayoría de los programas, se envía una señal de terminación utilizando las teclas Ctrl-C, para poder enviar un trabajo a dormir utilizaremos otra combinación de teclas Ctrl-Z. Hay que tener en cuenta que no es lo mismo un trabajo en segundo plano que uno que es enviado a dormir. Un trabajo en segundo plano sigue ejecutándose, en cambio uno que se envía a dormir queda esperando en el lugar donde estaba hasta que sea despertado. Para ejemplificar esto, enviaremos al comando yes a segundo plano y luego lo pondremos a dormir.
[shrek@pantano:~]$ yes >/dev/null &
[shrek@pantano:~]$ yes >/dev/null
Ahora presionamos Ctrl-Z
[shrek@pantano:~]$ yes >/dev/null &
[shrek@pantano:~]$ yes >/dev/null
[2]+ Stopped yes >/dev/null
[shrek@pantano:~]$ jobs
[1]- Running yes >/dev/null &
[2]+ Stopped yes >/dev/null
Como pueden ver, el proceso que se envió a segundo plano todavía se esta ejecutando (Running), en cambio la que se mando dormir estaparada esperando que la relancemos (Stopped). Para ponerlo en primerplano o despertarlo a cualquiera de los dos podemos usar el signo "%"seguido del número del proceso o bien el comando fg.
[shrek@pantano:~]$ %1
yes >/dev/null &
Ahora presionamos Ctrl-Z
[shrek@pantano:~]$ fg %1
yes >/dev/null
Podremos enviar también un comando que esta durmiendo a que ejecute en segundo plano a través del comando bg
[shrek@pantano:~]$ jobs
[1]- Stopped yes >/dev/null
[shrek@pantano:~]$ bg %1
[1]+ yes >/dev/null &
[shrek@pantano:~]$ jobs
[1]+ Running yes >/dev/null &
Cabe decir que tanto fg como bg son comandos internos del intérprete de comando. Esto es así porque es el mismo intérprete quien hace el control de tareas. Puede darse el caso de que existan intérpretes de comandos que no tengan soporte para control de tareas.
Programas de seguimiento (ps y top)
Los sistemas GNU/Linux cuentan varios programas para efectuar el seguimiento de los procesos que se están ejecutando en el sistema. Entre los mas usados en la interfase de texto están los programas ps y top.
ps
Sin ninguna opción dará la lista de procesos que están corriendo desde la terminal donde se ejecuto el ps
[shrek@pantano:~]$ ps
PID TTY TIME CMD
9648 tty2 00:00:02 bash
9659 tty2 00:00:00 ps
[shrek@pantano:~]$
Las columnas que nos quedan por explicar son TTY y TIME. TTY identifica la consola donde se esta ejecutando el proceso. En este caso es una terminal local. La columna TIME nos indica la cantidad de tiempo total que el proceso se ha estado ejecutando. Como se puede ver el tiempo es de 2 segundos. Aunque este horas el sistema encendido, el bash pasa su mayor parte del tiempo esperando que se le envie algún comando para ejecutar, mientras tanto esta esperando dormido. Puede verse en la columna STAT en que estado se encuentra el programa. Por ejemplo, que vemos que el bash en el momento de ejecutarse el comando ps esta dormido (S) y que el proceso ps esta activo (R). Si añadimos la opción l tendremos un listado largo del comando ps. En algunas versiones se usa la opción -l
[shrek@pantano:~]$ ps l
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 100 9648 1 9 0 4368 1400 11b1d0 S tty2 0:01 -bash
4 100 9660 9648 17 0 2676 732 - R tty2 0:00 ps l
Dentro de esta información esta la columna del UID que identifica el dueño del proceso. El PID del proceso y también el PPID que es el PID del proceso padre. Podemos apreciar que el padre del comando ps l es el -bash. NI viene de nice y es un nivel que se otorga a un proceso para requerir cierto privilegio. En este caso tiene uno muy bajo por ende un proceso que tenga un valor mayor tendrá más tiempo de procesador para trabajar. SIZE es el tamaño que tiene el proceso. RSS es la tamaño del proceso que se encuentra residente en la memoria. WCHAN es el nombre de la función del kernel donde el proceso esta durmiendo. Esta expresado en forma hexadecimal.
Otra forma en la que podemos ver el padre de cada proceso es a través del modificador f.
[shrek@pantano:~]$ ps f
PID TTY STAT TIME COMMAND
9648 tty2 S 0:02 -bash
9660 tty2 R 0:00 \_ps f
[shrek@pantano~]$
Aquí se puede ver que el comando ps f depende del -bash.
top
Ahora bien, el comando ps nos muestra una radiografía de los procesos en el momento, pero no nos muestra los cambios que se van teniendo. Para esto contamos con el comando top. El mismo muestra en tiempo real la situación de los procesos que se están ejecutando en el sistema, ordenados por defecto según el porcentaje la CPU que estén usando. Al ejecutarlo se podrá ver otra información adicional, como la cantidad de usuarios que están en el sistema, cuantos procesos están corriendo y de estos cuantos estas activos, cuantos durmiendo, cuantos en proceso de terminar (ZOMBIE) y cuantos finalizados. Además se podrá ver la cantidad e memoria física total, la cantidad usada y la cantidad libre; así como también se podrá obtener la misma información de la memoria swap.
Lo más importante es que esta información de ira actualizando automáticamente cada tanto tiempo, por defecto 5 segundos, y que podremos ir alterando lo que va mostrando. Por ejemplo podemos hacer que ordene los procesos de acuerdo a la cantidad de memoria que esta usando con solo presionar la tecla M. U ordenarlos de acuerdo al tiempo que llevan corriendo. Otra utilidad es que podríamos matar algún proceso con solo presionar la tecla k y luego darle el número de PID.
El listado que nos mostrará contendrá el número de PID, el usuario que lo está ejecutando, la prioridad del proceso (PRI), el valor nice (NI), el tamaño del proceso (SIZE), el tamaño total del proceso junto con los datos que maneja (RSS), el tamaño usado por el proceso en la memoria (SHARE), el estado del proceso(STAT), el tamaño de las librerías del proceso (LIB), el porcentaje de CPU ( %CPU) y de memoria (%MEM) así como también el tiempo de ejecución (TIME) y el nombre del proceso (COMMAND).
Algunos comandos
ps aux
kill -9 + [nºID del proceso] mata el proceso actual. Ejemplo: kill -9 7563
martes, 12 de junio de 2007
¿Cómo puedo leer y contestar correo con mail/mailx?
¿Cómo puedo leer y contestar correo con mail/mailx?
El correo electrónico en Linux no puede considerarse como un extra al sistema operativo, sino que forma parte del mismo pues es una característica casi inherente a todo Linux. Esto quiere decir que aunque no hayamos instalado ningún cliente de correo como Netscape o Pine, probablemente dispondremos en el sistema de herramientas ya preparadas para ello.
Dentro de casi cualquier sistema Linux disponemos de un programa básico de email en consola (modo texto) llamado Mailx que nos permitirá el envio, lectura y contestación de mensajes de correo electrónico. En resumen, posibilita el envío de texto y datos dentro de una estructura coherente llamada mensaje, con su cabecera (campos: FROM (persona que envía el mensaje), TO (persona destinataria del mismo), SUBJECT (tema del que trata el mensaje) y CC o carbon copy (lista de personas que recibirán una copia del mismo).) y su BODY (cuerpo del mensaje), pudiendo incluir además ficheros añadidos que vienen incluidos dentro del paquete del mensaje (attach).
Para explicar el uso de mailx se va a usar un sencillo ejemplo en un máquina con un sólo usuario: sromero, además del obligatoriamente existente root (puede obternerse la lista de usuarios presentes en el sistema y en qué terminal están trabajando simplemente ejecutando la orden who). Suponga os que somos el usuario sromero y queremos enviarle un mensaje a root para testear las capacidades de envio de email. La manera más sencilla de enviar un mensaje a un usuario de la red es ejecutar mail :
[sromero@localhost info]$ mail root
Subject: Prueba de MailX.
Esto es el cuerpo del mensaje. Es una prueba de mailx.
Un mensaje se acaba con un punto (.) al principio de línea.
.
Cc: (intro)
Al ejecutar mail root se nos ha preguntado el tema (subject), el cuerpo del mensaje (acabado en punto (.)), y a quién se le deseaba enviar copias del mismo (Cc), cosa que hubiera sido bastante útil si nuestro mensaje fuera una invitación a un grupo de amigos o una información para un grupo concreto de personas. Tras escribir esto, el mensaje escrito se graba como un fichero de texto (con el mismo nombre que el destinatario del mensaje, y al que se añadirán más mensajes conforme se le vayan enviando a dicho destinatario) en el directorio /var/spool/mail, a la espera de que el usuario destino los lea y vayan siendo eliminados del mismo.
Si root está conectado o entra más tarde en cualquier terminal del sistema, recibirá un mensaje de aviso indicando que el sistema ha detectado la llegada de correo para el usuario:
You have mail.
Para realizar la lectura del correo electrónico, simplemente se invoca al programa mail, obteniendo una lista del correo pendiente y esperando el programa a que el usuario lo lea, responda, borre o almacene para más tarde:
[root@localhost /root]# mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/root": 3 messages 3 new
>N 1 sromero Thu Jul 30 17:04 17/55 "Prueba de MailX."
N 2 sromero Thu Jul 30 17:15 17/50 "Pregunta sobre adm"
N 3 sromero Thu Jul 30 17:16 15/44 "Felices vacaciones!"
& _
Como puede verse, mail nos muestra los mensajes pendientes (en este caso 3) por responder, con su usuario de origen (sromero), la fecha y el tema, con el cursor virtual (>) situado sobre el primero (es decir, indicando sobre cual actuará una orden de lectura, respuesta o borrado), y con un promtp (el carácter &) a la espera de recepción de órdenes sobre qué hacer con dicho correo.
Estas órdenes son:
'número' -> Listar el mensaje .
't' -> lista el mensaje actual (el apuntado por >)
'n' -> Pasar al siguiente mensaje y visualizarlo.
'd' -> Borrar mensaje.
'e' -> Editar mensaje
'r' -> Responder mensaje.
'q' -> Salir de mailx.
A la mayoría de estas opciones se les puede pasar un nº de mensaje (desde 1 hasta n) para indicar sobre qué mensaje realizar la acción (ejemplo 'd 3' o 'delete 3'). Otras opciones, obtenidas mediante la ayuda de mailx, son:
& ?
Mail Commands
t listar mensaje
n ir al mensaje especificado y listarlo.
e editar mensaje
f ver cabeceras del mensaje
d borrar mensaje
s añadir mensajes a un fichero
u recuperar mensajes borrados
R Responder a los remitentes del mensaje
r Responder al remitente y a todos los destinatarios.
pre hacer ir los mensajes de nuevo a /usr/spool/mail
m enviar mensaje a los usuarios especificados.
q salir grabando mensajes en mbox
h mostrar cabeceras activas.
! permite ejecutar una shell o comandos de shell
En el caso de no disponer de correo en ese momento, mail nos avisa con un:
[root@localhost root]# mail
No mail for root
Otro fichero asociado es el fichero .signature de nuestro directorio home, utilizado como fichero de firmas y cuyo contenido es incluido al
final de los emails escritos y respondidos por nosotros, pudiendo editarse y rellenarse con cualquier editor estándar de Linux para
incluir nuestra firma personal. Este fichero es utilizado por la mayoría de gestores de correo de Linux como fichero de firmas por
defecto, tal y como hace Mail, Pine, Netscape, Kmail, etc.
Algunos ejemplos:
Para borrar todos los mensajes desde un Id hasta otra...
borrar mensajes del 22 al 30 --> "d 22-30"
Imprimir desde linea de comandos
Nombre para la impresion:
Este será el nombre de la cola de impresion o nombre del puerto como queramos llamarle.
Descripción de impresora:
Esto es básicamente para saber de que impresora se trata.
lpr -P HP4500ADMIN [nombrearchivo a imprimir]
en nuestro ejemplo enviamos a imprimir un archivo de texto a la impresora hp de administracion por ejemplo.
Imprimir bajo Linux
Esta sección comenta cómo imprimir ficheros, examinar la cola de impresión,
eliminar trabajos de la cola, formatear ficheros antes de imprimirlos, y
configurar tu entorno de impresión.
Histórico
El sistema de impresión de Linux (el sistema lp
) es una adaptación del código
escrito por los Regents de la Universidad de California para la versión
Berkeley Software Distribution (BSD) del sistema operativo UNIX.
Lo básico de imprimir
La forma más simple (con mucho) de imprimir en el sistema operativo Linux es
enviar el fichero a ser impreso directamente al dispositivo de impresión. Una
manera de hacer esto es usar el comando cat
. Como usuario root
, uno puede hacer
lo siguiente:
# cat tesis.txt > /dev/lp
En este caso, /dev/lp
es un enlace simbólico al verdadero dispositivo
de impresión (una matricial, láser, tipográfica o plotter). Mira la página del
man ln(1)
para más información acerca de enlaces simbólicos.
Para el propósito de la seguridad, sólo el usuario root
y los usuarios de su
mismo grupo como el demonio de impresión son capaces de escribir directamente
a la impresora. Es por esto por lo que se tienen que usar comandos como lpr
, lprm
y lpq
para acceder a la impresora.
Por esto, los usuarios tienen que usar lpr
para imprimir un fichero. El
comando lpr
es responsable de preocuparse por el trabajo inicial para
imprimir un fichero, pasando entonces el control a otro programa, lpd
, el
demonio de las impresoras de líneas.
Este demonio le dice entonces a la impresora cómo imprimir el fichero.
Cuando lpr
es ejecutado, primero copia el fichero a un cierto directorio
(el directorio de spool
) donde el fichero permanece hasta que lpd
lo
imprime. Una vez se le dice a lpd
que hay un fichero para imprimir, creará
una copia de sí mismo (lo que los programadores llaman un 'fork
'). Esta
copia imprimirá nuestro fichero mientras la copia original queda esperando otras
peticiones. Esto permite que hayan múltiples trabajos a la vez en una cola.
Las sintaxis de lpr(1)
es bastante familiar,
$ lpr [ opciones ] [ nombre_fichero ... ]
Si no se especifica un nombre de fichero, lpr
asume que la entrada
será efectuada por la entrada estándar (normalmente el teclado o la salida de
otro programa). Esto permite que el usuario redirija la salida de un programa
al dispositivo de impresión. Por ejemplo:
$ cat tesis.txt | lpr
o algo más potente, como
$ pr -l60 tesis.txt | lpr
El comando lpr
acepta varios argumentos en la línea de comandos que
permiten al usuario controlar cómo trabaja. Algunos de los argumentos más
ampliamente usados son: -Pprinter
especifica la impresora a usar, -h
suprime la impresión de la página, burst, -s
crea un enlace simbólico en
lugar de copiar el fichero completo al directorio de spooling (útil para
ficheros grandes), y -#num
especifica el número de copias a imprimir.
Un ejemplo de interacción con lpr
podría ser algo como
$ lpr -#2 -sP dj tesis.txt
Este comando crearía un enlace simbólico al fichero tesis.txt
en el
directorio de spool de la impresora llamada dj
, donde debería ser
procesado por lpd
. Además debería imprimir una segunda copia de tesis.txt
.
Para ver un listado de todas las opciones que reconoce lpr
, ver la página
del man lpr(1)
.
Viendo la cola de impresión
Algunas veces es útil saber qué trabajos están actualmente en una cola de
impresión particular. Esta es la única tarea del comando lpq
.
Para ver qué hay en la cola de la impresora por defecto (definida por /etc/printcap
), usa
$ lpq
lp is ready and printing
Rank Owner Job Files Total Size
active mwf 31 tesis.txt 682048 bytes
Cancelando un trabajo de impresión
Otra útil característica para cualquier sistema de impresión es la capacidad de
cancelar un trabajo que ha sido 'encolado' anteriormente. Para hacer esto,
usa lprm
.
$ lprm -
El comando anterior cancela todos los trabajos de impresión que son propiedad
del usuario que envió el comando. Se puede cancelar un trabajo de forma
individual obteniendo primero el número del trabajo usando lpq
, dando
entonces el número a lprm
. Por ejemplo
$ lprm 31
cancelaría el trabajo 31 (tesis.txt
) en la impresora por defecto.
Comandos Linux Vs DOS
DOS Linux
CD nombredir\ cd nombredir/
COPY fich1 fich2 cp fich1 fich2
DEL fichero rm fichero
DELTREE directorio rm -R directorio/
DIR ls
EDIT fichero vi fichero
emacs fichero
joe fichero
FORMAT fdformat
mount, umount
HELP comando man comando
MD directorio mkdir directorio/
MOVE fich1 fich2 mv fich1 fich2
NUL /dev/null
PRINT fichero lpr fichero
PRN /dev/lp0,
/dev/lp1
RD directorio rmdir directorio/
REN fich1 fich2 mv fich1 fich2
RESTORE tar -Mxpvf device
TYPE fichero less fichero
Cambiar fecha/hora
El fichero crontab o Programador de tareas
Cada uno de los ficheros crontab de configuración
están formados por asignaciones de valores a
variables de entorno y una línea por actividad que
queramos programar su ejecución. Las líneas
en blanco, los espacios iniciales y los tabuladores se
ignoran.
Los comentarios en este fichero son líneas completas
cuyo primer carácter que no sea un espacio es un
carácter #.
Las línea de programación de tareas siguen un
formato estándar formada por cinco campos que
indican un instante de ejecución y la ruta del
fichero que hay que ejecutar.
Los campos que describen el instante de ejecución
son por orden:
minuto 0-59
hora 0-23
día del mes 0-31
mes 0-12 (o sunombre con las tres primeras letras en
inglés)
dia semana 0-7 (0 or 7 indica domingo, o su nombre con las
tres primeras letras en inglés)
Un campo puede contener:
Un un asterisco (*) para indicar todos los posibles
valores.
Un valor fijo para indicar un minuto, hora, día o
mes.
Un rango de valores, dos números separados por
guiones. Un rango puede terminar en /numero para indicar el
incremento.
Una lista de valores separados por comas.
Un valor */numero para indicar todos los valores con
incremento de "número".
Ejemplos
Vemos diversas formas de configurar la ejecución de
la orden /usr/bin/fetchmail:
Ejecutarlo a las 12 de la noche cada día
|
Ejecutarlo a las 12 :15 de la noche cada día
|
Ejecutarlo 15 después de cada hora exacta, a las y
cuarto
|
Ejecutarlo el día 1 del mes a las 6:30
|
Ejecutarlo cada dos día a las 6:30
|
Ejecutarlo los días 1,3,7,12,15 y 20 del mes a las
6:30
|
Ejecutarlo el día 1 de julio a las 6:30
|
Ejecutarlo los lunes cada 10 minutos
|
Ejecutarlo de lunes a viernes a las hora en punto
|
Crontab predeterminados
Los sistemas, para facilitar la programación de
tareas de administración, disponen de un crontab
estándar que permite ejecutar tareas cada hora, cada
día, cada semana o cada mes; se crea un directorio
para cada una de estas tareas y todos los ficheros
ejecutables que pogamos allí, normalmente guiones de
shell, se ejecutarán automáticamente. Los
directorios en cuestión son, /etc/cron.hourly,
/etc/cron.dail, /etc/cron.weekly y /etc/cron.monthly.
El fichero /etc/crontab que ejecuta los contenidos de estos
directorios quedaría como:
|
Comandos más habituales de vi
Comando | descripción |
---|---|
i | insertar antes del cursor |
a | añadir detrás del cursor |
o | añadir una línea en blanco |
x | borrar un carácter |
j | borrar el final de línea (une dos líneas) |
dd | borra la línea completa |
u | deshacer la última edición |
:q | salir |
:q! | salir sin guardar |
:w | guardar |
:wq | guardar y salir |
:set nu | muestra números de línea |
:set nonu | oculta números de línea |
:n copy m | copia la línea n detrás de la línea m |
:n1, n2 copy m | copia desde la línea n1 hasta la línea n2 detrás de la línea m |
:%s/b/r/ | donde b = cada de texto a buscar y r cada de texto por la que reemplazar |
configurar un usuario fetchmail
fetchmail
deletemail
el primero sirve para trabajar con los e-mail: lo coge de un servidor externo pop3 y lo movemos a nuetro exchange, vamos que trabaja sobre smtp para que nos hagamos una idea.
Mientras que el delete mail lo que hace es que cuando pase x tiempo elime los mensajes del servidor.
Esto de mantener los mensajes en el servidor es por propia copia de seguridad.
Partiendo el usuario origen que vamos a llamarlo UsrOrigen vamos a crear otro usuario llamado UsrDestino, el primero sus datos en el servidro externo son:
Hosting Externo | Exchange | |
Dirección: | emailusrorigen@dominio.ext | emailusrdestino@dominio.local |
Login del servidor: | pop3usrorigen | exchgusrdestino |
Contraseña de la cuenta: | passwordusrorigen | passwordusrdestino |
Servidor pop3: | pop3.dominio.ext | srvexchange |
que archivos copiar:
/home/usuarioorigen/.fetchmailrc
/home/usuarioorigen/.deletemailrc
ambos archivos se han de copiar dentro de la carpeta home de cada usuario, este paso lo haremos con el usuario root
Contenido del archivo .fetchmailrc
poll pop3.dominio.ext protocol pop3
username [nombre de usuario pop3], with password [contraseña usuario pop3], to "[login]" here;
[nombre de usuario pop3]
Aqui pondriamos el login de pop3 que solemos colocar en el outlook, en nuestro ejemplo será pop3usrorigen
[contraseña usuario pop3]
Yo creo que esta muy claro es colocar la contraseña que le toque, bueno por si eres muy cazurro en nuestro ejemplo seria: passwordusrorigen
[login]
Aqui ponemos lo que bienen antes de @dominio.local es decir la cuenta del usuario de destino (exchange), me explico: recordamos que la cuenta de origen es emailusrorigen@dominio.ext y queremos enviarlo a emailusrdestino@dominio.local, pues aqui tan solo hemos de colocar emailusrdestino. Esto no necesariamente ha de ser igual al del usuario que inicie la sesion en el exchange.
Contenido del archivo .deletemailrc
GLOBAL # Valores por omision
# ssl: no # use SSL for secure IMAP connections
days: 15 # delete mail which is older than two weeks
ACCOUNT # Cuenta del usuario
host: pop3.dominio.ext # POP server
user: pop3usrorigen # username
pass: passwordusrorigen # password
Paso a paso:
ssl: no por defecto esta en este valor si necesitaramos habilitar ssl para el acceso al correo substituiriamos 'no' por 'yes'
days El número de dias que se han de mantener los correos en el servidor externo, en nuestro caso le hemos puesto 15 dias, este valor variará dependiendo del trafico de datos que se generen.
host nombre del servidor externo
user usuario con el que se ha de iniciar la sesion en el servidor externo
pass Como és lógico es la contraseña del usuario que ha de inciar sesion en el servidor
ahora tan solo falta configurar preparar el crontab o Tareas programadas.
para ello deberemos de iniciar en linux como el usuario qu equeramos realizar la programación. para ello en la linea de comandos escribiremos crontab -e el hecho de colocar -e es para editar el programador de tareas para ese usuario.
Crontab
*/10 * * * * /usr/bin/fetchmail -k -S [nombre DNS del servidor de exchange] -D [nombre del dominio] -U
00 12 * * 0 /usr/bin/deletemail -u
Notas generales Fetchmail Exchange
Fechmail.rc
Deletemail.rc
Ambos se encuntran en la carpeta home de cada usuario
Programador de tareas
Crontab –e
1-Lunes
0-domingo
Para salir y guardar cambios en vi :wq
-K deja copia en el servidor
-S host smtp en nuestro caso EXCHANGE
-D dominio (dominio.com)
-u sabe si es nuevo los mails o no, si no le ponemos esto, se descargaria todos los mails constantemente.
Para ver las entradas del programador de tareas:
Contrab –e
Cambiar chmod 600 los ficheritos de los usuarios
Chown para cambiar el propietario y deletemail.
“chown nuevopropietario nombredelficherito” le cambiamos el propietario a .fetchmailrc
Para copiar usamos "cp archivo.origen archivo.destino"