martes, 10 de julio de 2012

Creando y Removiendo enlaces simbolicos

Un enlace simbolico es un apuntador que contiene el nombre de la ruta hacia un archivo ó directorio. Los enlaces simbolicos se distinguen con la letra "l" en el campo de tipo de archivo al listarlos con el comando ls -l. 

Sintaxis                                     

ln -s origen destino

- origen: hace referencia al archivo al cual quieres crear el enlace.

- destino: hace referencia al nombre del enlace simbolico el cual apuntará al archivo origen.


Ejemplo:

johnny@debianJG:~/Documents/pruebas$ pwd
/home/johnny/Documents/pruebas
johnny@debianJG:~/Documents/pruebas$echo "Este es mi archivo" > /home/johnny/Desktop/hola.txt
johnny@debianJG:~/Documents/pruebas$ cat /home/johnny/Desktop/hola.txt
Este es mi archivo
johnny@debianJG:~/Documents/pruebas$ ln -s /home/johnny/Desktop/hola.txt mio
johnny@debianJG:~/Documents/pruebas$ ls -ltrh
total 48K
drwxr-xr-x 3 johnny johnny 4.0K Mar 11 12:32 carpeta1
drwxr-xr-x 3 johnny johnny 4.0K Mar 11 13:19 dir_carpeta
-rw-r--r-- 1 johnny johnny 1.6K Mar 13 23:03 neruda.txt
drwxr-xr-x 2 johnny johnny 4.0K Apr  4 17:57 abecedario
-rw-r--r-- 1 johnny johnny 1.6K Apr 11 01:10 neruda.txt.bkp
-rw-r--r-- 1 johnny johnny   24 Jul  9 23:00 archivo4.txt
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:05 unidad#6.bkp2
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:08 unidad#6.bkp
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:22 bin
-rw-r--r-- 1 johnny johnny   24 Jul  9 23:30 archivo3.txt
drwxr-xr-x 2 johnny johnny 4.0K Jul  9 23:31 unidad#6
drwxr-xr-x 3 johnny johnny 4.0K Jul  9 23:42 newdir
lrwxrwxrwx 1 johnny johnny   29 Jul 10 00:29 mio -> /home/johnny/Desktop/hola.txt
johnny@debianJG:~/Documents/pruebas$ cat mio
Este es mi archivo

johnny@debianJG:~/Documents/pruebas$ ls -F
abecedario/  archivo3.txt  archivo4.txt  bin/  carpeta1/  dir_carpeta/  mio@  neruda.txt  neruda.txt.bkp  newdir/  unidad#6/  unidad#6.bkp/  unidad#6.bkp2/

johnny@debianJG:~/Documents/pruebas$


Removiendo enlaces simbolicos

Para remover o quitar un enlace simbolico se pueden usar los siguientes comandos:
- rm nombre_enlace
- unlink nombre_enlace

Ejemplo: eliminando el enlace anteriormente creado sería lo sicuiente

rm mio ó unlink mio.

lunes, 2 de julio de 2012

Comando "man"

Con el comando "man" podemos la documentacion realacionada a un comando ó archivo, alguna de las opciones utilies a utilizar en este comando son:

- f: muestra las secciones asociadas a un comando un archivo.
- s: para especificar la sección o pagina a visualizar.

- k: para especificar una busqueda en los manuales asociados a una palabra clave.

Ejemplos:


1)
johnny@debianJG:~$ man -f passwd
passwd (1)           - change user password
passwd (5)           - the password file
passwd (1ssl)        - compute password hashes

similar en solaris (man -l passwd)

Los campos especificados entre parentesis indican la sección o pagina a visualizar para obtener mayor informacion del comando u archivo.

Para mayor información sobre las secciones o pagina pueden consultar el man del man.
...
       The table below shows the section numbers of the manual followed by the types of pages they contain.

       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages and conven‐
           tions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
...


2)
man -s número comando  -> man -s 1 passwd 
man -s número archivo     -> man -s 5 passwd


3)
johnny@debianJG:~$ man -k passwd
chgpasswd (8)        - update group passwords in batch mode
chpasswd (8)         - update passwords in batch mode
exim4_passwd (5)     - Files in use by the Debian exim4 packages
exim4_passwd_client (5) - Files in use by the Debian exim4 packages
fgetpwent_r (3)      - get passwd file entry reentrantly
getpwent_r (3)       - get passwd file entry reentrantly
gpasswd (1)          - administer /etc/group and /etc/gshadow
grub-mkpasswd-pbkdf2 (1) - generate hashed password for GRUB
lppasswd (1)         - add, change, or delete digest passwords.
mkpasswd (1)         - Overfeatured front end to crypt(3)
pam_localuser (8)    - require users to be listed in /etc/passwd
passwd (1)           - change user password
passwd (1ssl)        - compute password hashes
passwd (5)           - the password file
passwd2des (3)       - RFS password encryption
SSL_CTX_set_default_passwd_cb (3ssl) - set passwd callback for encrypted PEM file handling
SSL_CTX_set_default_passwd_cb_userdata (3ssl) - set passwd callback for encrypted PEM file handling
update-passwd (8)    - safely update /etc/passwd, /etc/shadow and /etc/group
vnc4passwd (1)       - change a VNC password
vncpasswd (1)        - change a VNC password


Esta última es similar al utilizar el comando whatis -r passwd.

martes, 26 de junio de 2012

Descomprimir archivos .rar en Debian

Para poder descomprimir archivos .rar en Debian debemos tomar tener agregado en el archivos de repositorios /etc/apt/source.list la siguiente linea:

deb http://ftp.de.debian.org/debian squeeze main non-free

Una vez hecho esto es importante ejecutar el siguiente comando:

aptitude update ó apt-get update

Esto con el fin de que se actualice la lista de repositorio con los paquetes disponibles y nos tome en cuenta el repositorio agregado anteriormente.

Despues procedemos a instalar el paquete unrar:

aptitude install unrar ó apt-get install unrar


root@debianJG:/home/johnny/Downloads/rar# aptitude install unrar
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Reading task descriptions...
The following NEW packages will be installed:
  unrar
0 packages upgraded, 1 newly installed, 0 to remove and 177 not upgraded.
Need to get 101 kB of archives. After unpacking 246 kB will be used.
Writing extended state information...
Get:1 http://ftp.de.debian.org/debian/ squeeze/non-free unrar i386 1:3.9.10-1 [101 kB]
Fetched 101 kB in 1s (53.3 kB/s)
Selecting previously deselected package unrar.
(Reading database ... 123183 files and directories currently installed.)
Unpacking unrar (from .../unrar_1%3a3.9.10-1_i386.deb) ...
Processing triggers for man-db ...
Setting up unrar (1:3.9.10-1) ...
update-alternatives: using /usr/bin/unrar-nonfree to provide /usr/bin/unrar (unrar) in auto mode.
Reading package lists...
Building dependency tree...
Reading state information...
Reading extended state information...
Initializing package states...
Writing extended state information...
Reading task descriptions...


Una vez instalado el paquete ya podemos hacer uso del mismo.

Entre las opciones más comúnes a utilizar estan: "e" y "v".

  • e - Extract: Extrae el contenido del archivo .rar en el directorio actual
  • v - Verbose: Muestra el contenido del archivo .rar sin descomprimir
Ejemplo:

- unrar v archivo.rar
- unrar e archivo.rar

Para mayor información consultar man del comando.

jueves, 26 de abril de 2012

Trabajos programados en cola - comando "at"


El comando at lo utilizamos si queremos colococar en una cola un trabajo ó tarea para ser ejecutado en un tiempo especifico. La orden at a diferencia de las tareas del cron se ejecuta solo una vez y desaparece de la cola, mientras que las tareas del cron se ejecutan periodicamente en el horario que se le especifique.

Sintaxis

  • at [-V] [-q queue (cola)] [-f file (archivo)] [-mldv (opciones)] tiempo [fecha]
  • El tiempo puede ser: HH:MM se puede colocar el sufijo AM ó PM, midnight (12:00am), noon (12:00pm), or teatime (4:00pm)
  • La fecha se puede especificar de la siguiente manera: MMDDYY, MM/DD/YY, today, tomorrow. Nota: si se coloca solo la hora y no se especifica fecha, se asume como “today” que seria el dia actual.

Ordenes del at

  • atq: despliega los trabajos en cola.
  • atrm numero_trabajo: elimina un trabajo de la cola.

Archivos Generales

/etc/at.allow → Usuario permitidos
/etc/at.deny → Usuarios denegados


Ejemplo

* Creo un trabajo en la cola “c” a ejecutarse el dia de mañana a las 21:55.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at -q c 21:55 tomorrow
warning: commands will be executed using /bin/sh
at> free > /home/johnny/Documents/pruebas/carpeta1/carpeta2/free.txt
at> <EOT>
job 9 at Mon Apr 9 21:55:00 2012

* Muestro el trabajo creado.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
9 Mon Apr 9 21:55:00 2012 c johnny

* Creo dos nuevos trabajos a ejecutarse el dia de hoy. Si no se especifica un numero de cola toma por defecto la cola “a”
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 21:57
warning: commands will be executed using /bin/sh
at> uptime > /home/johnny/Documents/pruebas/carpeta1/carpeta2/uptime.txt
at> <EOT>
job 10 at Sun Apr 8 21:57:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny

johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ at 22:00
warning: commands will be executed using /bin/sh
at> date > /home/johnny/Documents/pruebas/carpeta1/carpeta2/date.txt
at> <EOT>
job 12 at Sun Apr 8 22:00:00 2012
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
9 Mon Apr 9 21:55:00 2012 c johnny
12 Sun Apr 8 22:00:00 2012 a johnny

* Elimino de la cola el trabajo a ejecutarse el dia de Lunes 9 de Abril, trabajo #9.
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atrm 9
johnny@debianJG:~/Documents/pruebas/carpeta1/carpeta2$ atq
10 Sun Apr 8 21:57:00 2012 a johnny
12 Sun Apr 8 22:00:00 2012 a johnny

miércoles, 25 de abril de 2012

Administrador de procesos cron


El cron es un administrador de procesos que se encarga de ejecutar tareas periodicas en un tiempo especifico. Los procesos o tareas que deben ser ejecutados por el demonio cron, se encuentran en el fichero crontab de cada usuario. Estos son procesos que se ejecutan en segundo plano (demonios).


Sintaxis

  • Tiempo de ejecución
      * Minutos (0-59)
      * Horas (0-23)
      * Día del mes (1-31)
      * Meses (1-12) ó (jan, feb, mar, apr, may, jun, jul, aug,sep, oct, nov, dec)
      * Día de la Semana (1-7) ó (mon, tue,wed, thr,fri, sat,sun). El Domingo puede ser el 0 ó el 7.
  • Usuario de ejecución.
  • Comando a ejecutar. (PATH ABSOLUTO)

Se pueden utilizar las siguientes opciones como comodines:

  • Asterisco “*” → Todos
  • Guión “-” → Rango (defino rango o periodo)
  • Coma “,” → Selectivo (defino minutos, horas, meses, dias de la semana en especifico)
  • Intervalos “/” → Intervalos


Opciones a utilizar con el comando crontab

  • -l → Lista el contenido del crontrab
  • -r → elimina el crontab actual
  • -e → crea un nuevo crontab para el usuario en caso de no existir ó edita el crontab actual del usuario.


Archivos Generales

/etc/crontab → Se encuentra el archivo general del sistema
/var/spool/cron/crontabs → Se encuentra el archivo crontab de cada usuario

/etc/cron.allow → Usuario permitidos
/etc/cron.deny → Usuarios denegados

/etc/init.d/cron status → Verifico el estado del proceso cron. Puedo utilizar cualesquier de las siguientes opciones (status, stop, star, restart, reload)


Ejemplo:
A modo de ejemplo colocare la misma tarea a ejecutar, pero en diferentes horarios de modo de practicar la sintaxis del crontab.

  1. Ejecuta la tarea todos los dias, a cada hora, en el minuto 25.
min | hr | dia_mes | mes | dia_semana | usuario | Comando
25     *           *            *        *    cp /home/usuario/prueba/* /tmp/

  1. Ejecuta la siguiente tarea cada 5 minutos.
min | hr | dia_mes | mes | dia_semana | usuario | Comando
*/5 * * * * cp /home/usuario/prueba/* /tmp/

  1. Se ejecuta cada minuto durante los primero 15 minutos, entre las horas 2 y 4 todos los meses, siempre y cuando el dia sea Domingo.
min    |    hr    | dia_mes | mes | dia_semana | usuario | Comando
1-15     2-4          3,7         *          7                   cp /home/usuario/prueba/* /tmp/

Prioridad en los procesos con “nice” y “renice”


Utilizamos las ordenes:

  • nice: para ejecutar un proceso con una prioridad inicial. Su valor por defector es 10.
  • renice: para alterar la prioridad de un proceso ya iniciado.

Las prioridades pueden variar entre -20 y 19, siendo la prioridad negativa la mas alta.

Nota: un usuario no puede iniciar o alterar la prioridad de un proceso a prioridad negativa a menos que sea tenga permisos o sea root.

Sintaxis:

nice -n [prioridad negativa/positiva] orden
renice -n [prioridad negativa/positiva] orden


A continuacion se vera un ejemplo donde ejecutamos varias veces un proceso xclock con distintas prioridades:

- Inicia proceso con prioridad 0
johnny@debianJG:~$ xclock &
[3] 2853

- Inicia proceso con prioridad 10
johnny@debianJG:~$ nice xclock &
[4] 2856

- Inicia proceso con prioridad 5
johnny@debianJG:~$ nice -n 5 xclock &
[5] 2857

- Intenta iniciar proceso con prioridad negativa -5 y nos da un error por no tener permisos, deja prioridad 0.
johnny@debianJG:~$ nice -n -5 xclock &
[6] 2858
johnny@debianJG:~$ nice: cannot set niceness: Permission denied
johnny@debianJG:~$ top
top - 22:29:58 up 1:35, 2 users, load average: 0.11, 0.06, 0.01
Tasks: 157 total, 2 running, 155 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.3%us, 1.2%sy, 0.0%ni, 91.7%id, 1.7%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 2853196k total, 1023116k used, 1830080k free, 264020k buffers
Swap: 1951736k total, 0k used, 1951736k free, 401024k cached

PID PPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2867 2450 johnny 20 0 2456 1116 832 R 4 0.0 0:00.04 top
2858 2450 johnny 20 0 7968 3012 2420 S 0 0.1 0:00.04 xclock
2857 2450 johnny 25 5 7968 3012 2420 S 0 0.1 0:00.04 xclock
2856 2450 johnny 30 10 7968 3012 2420 S 0 0.1 0:00.05 xclock
2853 2450 johnny 20 0 7968 3016 2420 S 0 0.1 0:00.06 xclock


Cambiamos la prioridad del proceso 2853a prioridad negativa -10, usando root.

root@debianJG:~# renice -n -10 2853
2853: old priority 0, new priority -10
johnny@debianJG:~$ top
top - 22:40:15 up 1:46, 2 users, load average: 0.10, 0.06, 0.01
Tasks: 159 total, 2 running, 157 sleeping, 0 stopped, 0 zombie
Cpu(s): 28.5%us, 0.7%sy, 0.0%ni, 70.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2853196k total, 1026396k used, 1826800k free, 264536k buffers
Swap: 1951736k total, 0k used, 1951736k free, 401356k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2858 johnny 20 0 7968 3012 2420 S 0 0.1 0:00.04 xclock
2857 johnny 25 5 7968 3012 2420 S 0 0.1 0:00.05 xclock
2856 johnny 30 10 7968 3012 2420 S 0 0.1 0:00.06 xclock
2853 johnny 10 -10 7968 3016 2420 S 0 0.1 0:00.06 xclock

Evitar sobreescribir archivos con redirecciones


A continuación explicare brevemente como evitar sobreescribir archivos existente cuando intentamos usar redirecciones en Debian squeeze. Esto puede variar dependiendo de la distribucion.

  • Usar el comando set -o noclobber para evitar que se que sobreescriba un archivo existente.
  • Si queremos quitar la proteccion ultilizamos >|
  • Si queremos que la proteccion se presente de forma permanente debemos incluir el comando set -o noclobber en el shell predeterminado del usuario. Ejemplo: .bashrc, .cshrc, entre otros.
Veamos los siguientes ejemplos:

johnny@debianJG:~/Documents/pruebas$ free > archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
total used free shared buffers cached
Mem: 2853196 1038132 1815064 0 269776 403900
-/+ buffers/cache: 364456 2488740
Swap: 1951736 0 1951736
johnny@debianJG:~/Documents/pruebas$ ls -l archivo1
-rw-r--r-- 1 johnny johnny 230 Apr 5 22:14 archivo1
johnny@debianJG:~/Documents/pruebas$ set -o noclobber
johnny@debianJG:~/Documents/pruebas$ uptime > archivo1
bash: archivo1: cannot overwrite existing file

johnny@debianJG:~/Documents/pruebas$ ls >| archivo1
johnny@debianJG:~/Documents/pruebas$ cat archivo1
!
archivo1
archivo2
archivo3
archivo4
-C
d
este>archivo
mi archivo
ooooo
-V