Inicio > Linux > Linux: Conociendo al pingüino a través del terminal

Linux: Conociendo al pingüino a través del terminal

lunes, 21 de noviembre de 2011 Dejar un comentario Ir a comentarios

Para todos aquellos que aun no hayan tenido ni la oportunidad ni la posibilidad de disfrutar de las bondades que nuestro afable animalito nos ofrece, hoy las iremos descubriendo de la mano del tan temido a la par que desconocido terminal. Comprobaremos la potencia que nos brinda a los ojos de alguno de sus temidos comandos.

Es cierta la evolución manifiesta de los escritorios, pero si verdaderamente deseamos obtener toda la potencia del pingüino, irremediablemente nos veremos en la necesidad de recurrir al uso del terminal.

Este articulo va a ser tratado como algo vivo en el tiempo, y en el que continuamente iré introduciendo nuevos comandos, por lo que estará sujeto a revisiones constantes.

Como siempre, todo será afrontado a través de ejemplos en los que la visión suele resultar mas sencilla.

Dicho esto, manos a la obra abriendo un terminal:

#xterm / #konsole …

Como en todo inicio en la vida, irremediablemente vamos a estar completamente perdidos. Poco a poco compañeros. Sin desesperar!.

Empezaremos conociendo información sobra la distribución que tenemos instalada en nuestro sistema:

#uname -a
Linux pedlap 2.6.32-5-686 #1 SMP Fri Nov 20 18:51:05 UTC 2011 i686 GNU/Linux

Veamos el contenido de algunos ficheros a través del comando cat, que nos irán aportando mas información sobre nuestra máquina.

#cat /proc/version
Linux version 2.6.32-5-686 (Debian 2.6.32-35squeeze2) (dannf@debian.org)…..

#cat /etc/issue
Debian GNU/Linux 6.0 \n \l

Comprobamos el nombre con el que tenemos identificado a nuestra sistema:

#hostname
laptoptest

Comprobamos la hora del sistema:

#date
dom nov 20 18:31:09 CET 2011

Para mostrar la hora que tenemos definida en la BIOS.

#hwclock –show;

dom 20 nov 2011 18:14:39 CET  -0.055752 segundos

Podemos instalar el servicio ntp para una actualización automática de la hora. Ya iremos comentando como hacer estas cosas. De momento simplemente hacer una referencia al mismo.

Para saber las acciones que realiza un comando:

#whatis comando
ls (1)               – listan los contenidos de directorios

Si queremos ampliar esa información:

#man comando
LS(1)……..

NOMBRE
ls, dir, vdir – listan los contenidos de directorios

SINOPSIS
ls [opciones] [fichero…]
dir [fichero…]
vdir [fichero…]

Para comprobar la ruta en la que se encuentra el ejecutable:

#which comando
/bin/ls

#type comando
ls is /bin/ls

#whereis comando
ls: /bin/ls /usr/share/man/man1/ls.1.gz

Y si lo que nos interesa es comprobar el tiempo que tarda en ejecutarse.

#time comando
real    0m0.049s
user    0m0.000s
sys     0m0.004s

Si unicamente conocemos parte del comando podemos intentar dar con el a través de la siguiente instrucción.

#apropos comando
mkdir (1)            – crea directorios
mkdir (2)            – crea un directorio
mkdirat (2)          – create a directory relative to a directory file descriptor

Para comprobar los últimos comandos ejecutados:

#history
………
532  iostat
533  iotop
534  iotop
535  mount
……….

Para volver a ejecutar alguno de ellos:
#!532

Lo vamos a ir viendo a medida que vayamos profundizando en este articulo, pero podemos ir concatenando comandos. Ya iremos mostrando como hacer todo esto en detalle, pero podemos obtener por ejemplo cuales son los 10 comandos que mas ejecutamos:

#history | awk ‘{print $2}’ |awk ‘BEGIN{FS=»|»} {print $1}’ | sort -n | uniq -c | sort -r | head -10
#history | awk ‘{print $5}’ | sort | uniq -c | sort -rn | head -10

      9 halt
      8 netstat
      8 ifconfig
      8 apt-cache
      7 nbtscan
      7 lsof
      7 dmesg
     71 nslookup
      5 kill
      5 echo

Para comprobar las variables de entorno definidas

#env

#set

KDE_MULTIHEAD=false
SSH_AGENT_PID=2341
TERM=xterm
SHELL=/bin/bash
………………….

Para conocer el valor de una determinada variable:

#echo $SHELL
/bin/bash

En caso de querer definirla

#export CADENA=»Hola»

Comprobamos nuestras variables locales

#locale
LANG=es_ES.UTF-8
LANGUAGE=
LC_CTYPE=»es_ES.UTF-8″
LC_NUMERIC=»es_ES.UTF-8″
LC_TIME=»es_ES.UTF-8″
LC_COLLATE=»es_ES.UTF-8″

Ahora vamos a empezar a ver el Hardware instalado

#lshw
portatil
description: Portable Computer
product: Latitude E6500
vendor: Dell Inc.
serial: 4SQ4J
width: 32 bits
capabilities: smbios-2.4 dmi-2.4
configuration: boot=normal chassis=portable uuid=44454C4C-5300-1051-8048-B4C04F44344A
*-core
description: Motherboard
product: 0X564R
vendor: Dell Inc.
physical id: 0
serial: .4SQHD4J.C96195M82.
*-firmware
description: BIOS
vendor: Dell Inc.
physical id: 0
version: A13 (05/08/2009)
………………………………..

Listamos todos los dispositivos PCI

#lspci

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:01.0 PCI bridge: Intel Corporation Mobile 4 Series Chipset PCI Express Graphics Port (rev 07)
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)
……………….

Lo mismo para listar los dispositivos USB conectados.

#lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 002: ID 046d:c03d Logitech, Inc. M-BT96a Pilot Optical Mouse
…………………….

Ahora comprobamos el tiempo que la máquina lleva levantada:

#uptime
21:31:53 up 10:25,  4 users,  load average: 0.05, 0.06, 0.06

Para guardar un registro de toda esta información, utilizaremos las aplicaciones uptimed / uprecords que deberemos haber instalado previamente.

#uprecords

#               Uptime | System                                     Boot up
—————————-+—————————————————
1     0 days, 11:50:46 | Linux 2.6.32-5-686        Thu Oct  6 08:52:13 2011
2     0 days, 10:54:56 | Linux 2.6.32-5-686        Mon Oct 10 09:06:37 2011
3     0 days, 10:43:50 | Linux 2.6.32-5-686        Fri Oct  7 09:01:22 2011
…………………

Ahora vamos a ver un poquito sobre el estado de la memoria:

Para visualizar la memoria total con la que cuenta el equipo:

#grep MemTotal /proc/meminfo
MemTotal:        3623444 kB

Para ver el consumo actual de la misma:

#free
total       used       free     shared    buffers     cached
Mem:       3623444    3140284     483160          0     165928    1283772
-/+ buffers/cache:    1690584    1932860
Swap:      2654200       1908    2652292

Ahora volcamos algo de información de la CPU:

#cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz
cpu MHz         : 800.000
cache size      : 3072 KB
physical id     : 0
……..
processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
model           : 23
model name      : Intel(R) Core(TM)2 Duo CPU     P8600  @ 2.40GHz
stepping        : 10
cpu MHz         : 800.000
cache size      : 3072 KB
physical id     : 0

Comprobamos de cuantos procesadores físicos disponemos:

#grep ‘physical id’ /proc/cpuinfo | sort | uniq | wc -l
1

Consultamos el numero de procesadores virtuales:
#grep ^processor /proc/cpuinfo | wc -l
2

Comprobamos si el procesador es multicore:

#grep ‘cpu cores’ /proc/cpuinfo
cpu cores       : 2

Comprobamos si son de 64 bits (lm («long mode»))
#grep ^flags /proc/cpuinfo | grep lm | wc -l
2

Visualizamos Información relativa a la frecuencia del procesador:

#cpufreq-info

cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1
  CPUs which need to have their frequency coordinated by software: 0

………………………….

Vemos ahora los consumos de CPU que esta teniendo la máquina:

#mpstat
Linux 2.6.32-5-686 (pedlap)     10/10/11        _i686_  (2 CPU)

21:45:27     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
21:45:27     all    9,57    0,01    5,22    1,54    0,17    0,19    0,00    0,00   83,30

Ahora todo esto pero a través de simples comandos:

#vmstat
procs ———–memory———- —swap– —–io—- -system– —-cpu—-
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
1  0      0 132144 186408 2150184    0    0   373   188  500 4993 11  8 57 23

#dstat

You did not select any stats, using -cdngy by default.
—-total-cpu-usage—- -dsk/total- -net/total- —paging– —system–
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
11   8  60  21   0   0| 694k  363k|   0     0 |   0     0 |1025  9601
6  10  39  46   0   1| 212k 3560k|   0     0 |   0     0 |1210  2793
18  12  33  38   0   1| 268k    0 |   0     0 |   0     0 |1570  4497
11  14  40  34   0   0| 280k 1544k|   0     0 |   0     0 |1551  8017
11  12  41  35   0   0| 308k   16k|   0     0 |   0     0 |1422  4083
……………

#iostat
Linux 2.6.32-5-686 (pedlap)     20/11/11        _i686_  (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
10,94    0,02    7,67   14,78    0,00   66,60

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              42,81       951,06       580,62    3146180    1920722
dm-0            101,16       950,08       580,62    3142934    1920720
dm-1            101,08       949,66       580,62    3141546    1920720
dm-2              0,04         0,32         0,00       1048          0

Ahora vamos a empezar a conocer un poquito sobre los discos que tenemos instalados.

#df -Th
S.ficheros    Tipo    Size  Used Avail Use% Montado en
/dev/mapper/pedlap-root
ext3    227G  202G   14G  94% /
tmpfs        tmpfs    1,8G     0  1,8G   0% /lib/init/rw
udev         tmpfs    1,8G  256K  1,8G   1% /dev
tmpfs        tmpfs    1,8G  4,0K  1,8G   1% /dev/shm
/dev/sda1     ext2    228M   88M  129M  41% /boot

#cdfisk
cfdisk (util-linux-ng 2.17.2)

Unidad de disco: /dev/sda
Tamaño: 250059350016 bytes, 250.0 GB
Cabezas: 255   Sectores por pista: 63   Cilindros: 30401

Nombre               Indicadores         Tipo             Tipo de S.F.                [Etiqueta]             Tamaño(MB)
————————————————————————————————————————————-
sda1                 Inicio              Primaria         Linux ext2                                             254,99
sda2                                     Primaria         Linux                                               249801,76

#fdisk -l

Disco /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x4dc5fddf

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sda1   *           1          31      248976   83  Linux
/dev/sda2              32       30401   243947025   83  Linux
…………………..

#blkid
/dev/sda1: UUID=»2772c834-83fc-4551-885d-56d8c878673f» TYPE=»ext2″
/dev/sda2: UUID=»e0e02a3a-6664-48f9-bbc3-526673320b77″ TYPE=»crypto_LUKS»
/dev/mapper/sda2_crypt: UUID=»TSygQU-j56p-cPR3-WbCv-3Ooa-BfJ4-PrbVE7″ TYPE=»LVM2_member»
/dev/mapper/pedlap-root: UUID=»19452474-d2a2-436d-88ec-3b3694f1cdb3″ TYPE=»ext3″
/dev/mapper/pedlap-swap_1: TYPE=»swap»

Ahora comprobamos los dispositivos que tenemos montados:

#mount
/dev/mapper/pedlap-root on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
……………………….

Podemos montar una particion. Esto ya lo comentaremos mas en detalle.
#mount –t vfat /dev/sda1 /mnt

Para desmontar un dispositivos:
#umount

Para realizar copias bit a bit:
#dd

Para comprobar el estados de los discos:

#fsck /dev/sda1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
…………………….

Comprobamos los I/O:

#iotop
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init [2]
2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
5 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]

Veamos ahora los procesos que tenemos levantados:

#top
top – 19:41:56 up 10:35,  4 users,  load average: 0.01, 0.04, 0.06
Tasks: 221 total,   1 running, 220 sleeping,   0 stopped,   0 zombie
Cpu(s):  9.6%us,  5.2%sy,  0.0%ni, 83.3%id,  1.6%wa,  0.2%hi,  0.2%si,  0.0%st
Mem:   3623444k total,  3127972k used,   495472k free,   166260k buffers
Swap:  2654200k total,     1908k used,  2652292k free,  1285240k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2285 pedigree  20   0  364m  87m  31m S   12  2.5  37:53.72 kwin
3392 pedigree  20   0 94720  44m  24m S    8  1.3   2:26.80 kate
1792 root      20   0 23212 6964 2128 S    4  0.2   1:42.16 wicd
1876 root      20   0  245m 232m  13m S    4  6.6  36:54.02 Xorg
……..

En caso de querer guardar la salida a un archivo:

#top –b –n1 > top.out

Podemos hacer uso de una herramineta que nos muestra la información de forma mas sencilla y con mas opciones:

#htop

Podemos ver los procesos corriendo con otras herramientas

#pstree
init─┬─acpi_fakekeyd
├─acpid
├─akregator─┬─nspluginviewer
│           └─3*[{akregator}]
├─amarok───14*[{amarok}]
├─atd
├─avahi-daemon───avahi-daemon
………….

Para limitar el consumo de un determinado proceso

#cpulimit -e firefox -l 30

Por ejemplo para ver el número de veces que un determinado proceso esta corriendo en la máquina:

#ps –ef  | grep proceso |  wc –l

Si queremos ver los archivos utilizados por un determinado proceso:

#pmap PID

#pmap 2851
2851:   /usr/bin/firefox.real
08048000     52K r-x–  /opt/firefox/firefox
08055000      4K rw—  /opt/firefox/firefox
08056000      4K rw—    [ anon ]

Podemos utilizar el comando lsof que ya hemos visto anteriormente en el blog
#lsof

Para comprobar los procesos que tenemos lanzados en background:

#jobs

Si queremos comprobar el log de arranque de la máquina:

#dmesg

Compruebo con que usuario estoy conectado:

#whoami
pedimave

Un poquito mas de info por favor!!:

#id
uid=1000(pedimave) gid=1000(pedimave) grupos=1000(pedimave),20(dialout),24(cdrom),25(floppy)…

Ahora vamos a ver datos sobre quien esta conectado:

#who
pedigree pts/0        2011-11-20 17:13 (:0)
pedigree pts/1        2011-11-20 17:14 (:0)
pedigree pts/2        2011-11-20 17:17 (:0.0)

#users
pedimave pedimave pedimave

Para conocer el terminal en le que estamos:

#tty
/dev/pts/3

Algo mas de detalle sobre lo que están haciendo los usuario conectados:

#w
 18:55:18 up  1:45,  3 users,  load average: 0,16, 0,12, 0,07
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
pedigree pts/0    :0               17:13    1:41m  0.51s  0.51s /bin/bash
pedigree pts/1    :0               17:14    1:41m  0.00s  3.39s kdeinit4: kded4 [kdeinit]                      
pedigree pts/2    :0.0             17:17    0.00s  0.44s  0.19s /bin/bash

Todo esta info la podemos la podemos consultar instalando la aplicación whowatch:

#whowatch

Si queremos comprobar las ultimas conexiones realizadas a la máquina:

#lastb

pedigree pts/2        :0               Sun Nov 20 20:57   still logged in
pedigree pts/1        :0               Sun Nov 20 20:56   still logged in
pedigree pts/0        :0               Sun Nov 20 20:56   still logged in
pedigree tty1                          Sun Nov 20 20:55   still logged in
pedigree tty1                          Sun Nov 20 20:55 – 08:55  (00:00)
reboot   system boot  2.6.32-5-686     Sun Nov 20 20:53 – 09:20  (00:26)

O ver por ejemplo los últimos reinicios de la máquina:

#last reboot
reboot   system boot  2.6.32-5-686     Sun Nov 20 17:10 – 18:58  (01:47)    
reboot   system boot  2.6.32-5-686     Fri Nov 18 09:08 – 18:22  (09:14)    
reboot   system boot  2.6.32-5-686     Thu Nov 17 09:03 – 21:06  (12:03) 

Las últimas sesiones iniciadas por los usuarios:

#lastlog
Nombre           Puerto   De               Último
root             tty1                      mié may 11 17:53:38 +0200 2011
daemon                                     **Nunca ha entrado**
bin                                        **Nunca ha entrado*

Ahora algo de información sobre la bios:

#biosdecode
#dmidecode

# biosdecode 2.9
SYSID present.
Revision: 0
Structure Table Address: 0x000F6561
Number Of Structures: 1
SMBIOS 2.4 present.
Structure Table Length: 2827 bytes
Structure Table Address: 0x000F65A0
Number Of Structures: 57
Maximum Structure Size: 253 bytes
PCI Interrupt Routing 1.0 present.
Router ID: 00:1f.0
………………………………………..

Vamos a empezar a conocer como tenemos configurada la red:

#ifconfig -a
…….
eth0     Link encap:Ethernet  HWaddr 00:22:fb:XX:XX:XX
inet addr:10.207.X.17  Bcast:10.207.X.255  Mask:255.255.255.0
inet6 addr: fe80::222:fbff:fe9a:a76c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:232109 errors:0 dropped:0 overruns:0 frame:0
TX packets:269515 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:59650662 (56.8 MiB)  TX bytes:30668439 (29.2 MiB)
………

Unas pequeñas estadísticas de los consumos:

#ifconfig -s = #netstat -i
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0         0      0      0 0             0      0      0      0 BMU
lo        16436 0       273      0      0 0           273      0      0      0 LRU
wlan0      1500 0    232699      0      0 0        270172      0      0      0 BMRU

#ifstat
eth0               wlan0
KB/s in  KB/s out   KB/s in  KB/s out
0.00      0.00      0.06      0.08
0.00      0.00      0.00      0.00
0.00      0.00      0.00      0.00

#ifconfig eth0 up y ifconfig eth0 down para levantar y desactivar las interfaces

Para comprobar el estado de las interfaces podemos hacer uso de la siguientes aplicaciones:

#ethtool eth0

Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: Unknown!
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 2
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: pumbag
Wake-on: g
Current message level: 0x00000001 (1)
Link detected: no

Otra forma…

#ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 00:24:e8:a7:03:d3 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:22:fb:9a:a7:6c brd ff:ff:ff:ff:ff:ff
4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

Vamos ahora a ver las conexiones que tenemos establecidas:

#netstat -atun | grep ESTAB
#netstat -putan | grep aplicación

Para ver la tabla Arp:

#arp

Podemos lanzar un ping Arp:

#arping IP

Para ver nuestras interface inalambrica

#iwconfig
…………
wlan0     IEEE 802.11abgn  ESSID:»Ofisat»
Mode:Managed  Frequency:2.437 GHz  Access Point: 00:0B:85:97:3D:8D
Bit Rate=48 Mb/s   Tx-Power=15 dBm
Retry  long limit:7   RTS thr:off   Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=64/70  Signal level=-46 dBm
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

#iwlist wlan0 scanning

Ahora vamos a ver la tabla de rutas:

#route

Ya hemos visto en el blog comandos como : lft, traceroute, host y whois.

Lanzamos un ping para comprobar que una máquina esta levantada

#ping www.google.es
PING www.l.google.com (209.85.148.104) 56(84) bytes of data.
64 bytes from fra07s07-in-f104.1e100.net (209.85.148.104): icmp_req=1 ttl=52 time=43.6 ms

#fping www.google.es
www.google.es is alive

Ahora que ya conocemos sobre que sistema nos estamos moviendo, vamos a empezar a jugar un poco con los archivos y directorios. Ya hablaremos mas adelante sobre la estructura y composición de los mismos.

Debemos de tener cuidado con el uso de las mayúsculas/minúsculas :escribir  archivo no es lo mismo que Archivo.

Para generar un directorio:

#mkdir pruebas

Ahora entramos al directorio que acabamos de generar:

#cd pruebas

Generamos un archivo vacio:

#touch archivo

Para mover o renombrar archivos/directorios:

#mv /tmp/archivo /tmp/pruebas/

Listamos a ver si aparece el archivo:

#ls -ali archivo
4170020 -rw-r–r– 1 pedimave pedimave 0 Nov 19 20:44 archivo

Si queremos mostrar una salida ordenada:

#ls -ali | sort

Ya comentaremos también en detalle el funcionamiento de los permisos.

Podemos editar el contenido del mismo con un editor de consola como puede ser vi. Es otro de los puntos que iremos comentando.

#vi archivo
pulsamos la tecla i
escribimos el texto: pruebas
pulsamos ESC
y escribimos 😡

Vamos a conocer el estado del fichero generado:

#stat archivo
File: «archivo»
Size: 17              Blocks: 8          IO Block: 4096   fichero regular
Device: fe01h/65025d    Inode: 4170156     Links: 1
Access: (0644/-rw-r–r–)  Uid: ( 1000/pedimave)   Gid: ( 1000/pedimave)
Access: 2011-11-20 22:08:20.000000000 +0200
Modify: 2011-11-20 22:00:43.000000000 +0200
Change: 2011-11-20 22:08:13.000000000 +0200

Comprobamos el tipo de archivo que hemos generado:

#file archivo
archivo: ASCII text

Para numerar las lineas de un archivo:

#nl archivo1
1  pruebas

Vamos ahora a mostrar el contenido del mismo:

#cat archivo
pruebas

Si el archivo es muy grande y queremos que nos haga una paginación:

#cat | more o #more archivo

Si queremos que nos permita movernos entre las diferentes páginas:

#cat | less o #less archivo

Si únicamente queremos mostrar las n primeras líneas de un archivo:

#head -n1 archivo

Si lo que queremos es mostrar las últimas lineas de un archivo:

#tail -n 2  archivo / tailf
pruebas
pruebas

Copiamos el archivo con otro nombre.

#cp archivo archivo2 

Para ahora borrarlo:

#rm archivo

Borramos ahora un directorio vacio:

#rmdir directorio

Si queremos borrar de forma recursiva un directorio (CUIDADIN!!!)

#rm -rf /tmp/pruebas

Podemos modificar uno de los archivos y comprobar las diferencias:

Comprobamos las diferencias entre 2 archivos (diff o sdiff)

#sdiff archivo archivo2
pruebas                                                       <
pruebas1                                                        pruebas1

Otra forma de compararlos linea por linea:

#comm archivo archivo1
pruebas
pruebas
pruebas1

Podemos comparar los archivos byte a byte:

#cmp archivo archivo1

archivo archivo1 son distintos: byte 8, línea 1

Si queremos crear enlaces simbolicos entre ficheros:

#ln -s /var/log/messages errores
#ls -ali

total 12
4170025 drwxr-xr-x  2 pedimave pedimave 4096 nov 19 23:05 .
4169729 drwxrwxrwt 14 root     root     4096 nov 19 23:05 ..
5488708 lrwxrwxrwx  1 pedimave pedimave   19 nov 20 23:05 errores -> /var/log/messages
6971418 -rw-r–r–  1 pedimave pedimave   19 nov 20 23:00 pruebas

Podemos mostrar un archivo sin lineas duplicadas:

#uniq archivo
pruebas

O dividir un archivo en archivos mas pequeños:

#split -b 2m archivo archivo3

Para obtener el nombre del archivo:

#basename /bin/ls
ls

Para contar lineas, palabras….

#cat pruebas| wc -l
1
#cat pruebas| wc -w
3

Si queremos comprobar la integridad de un archivo:

#md5sum archivo
c077777b9fc5dc06fa27106be0fe82e8  archivo

#sha1sum archivo
3f4a8883b32c1844d04d0b157014c6e2ba38df21  archivo

Para comprobar el tamaño de las diferentes carpetas:

#du –h
#du –ch .

Si queremos recoger determinados caracteres de un fichero:

#cut -c1-5 pruebas
#cut -c1,5 pruebas

Podemos utilizar el comando sed para seguir jugando con los ficheros. Ya lo iremos viendo.Borrar lineas, modificar cadenas….

#sed ‘s/dato1/dato111111/’ pruebas
dato111111      dato2   dato3

Con los comandos podemos hacer uso de alias para no tener que teclear todas las opciones:

#alias sl=»ls –l»
#alias sl=»ls -F»
#alias=»ls -lrt»

Si ahora queremos eliminar un determinado alias:

#unalias sl

Si queremos ejecutar repetidamente un comando:

#watch -n 2 w

Ufffff!!!… para este domingo creo que es suficiente. Seguiremos esta semana con esta base del articulo, pero por hoy creo que ya toca apagar el equipo.

Si queremos apagarlo:

#halt o init 0

Para reiniciarlo:

#reboot o init 6

Tambien podemos hacer uso de shutdown

#shutdown -h (apagar)
#shutdown -r (reiniciar)

O hacer uso del comando:

#poweroff

Buenas noches señores y señoras.  Domingo en el que se celebran elecciones en España, y en el que el partido ganador nos promete dar solución a esta puñetera crisis, por lo que nos vamos a dormir con la sonrisa y la ilisuón de que mañana será un nuevo día. :).

Enviar a un amigo: Share this page via Email
Categories: Linux Tags:
  1. byhanzo
    sábado, 17 de diciembre de 2011 a las 17:43 | #1

    Joder, te sigo desde hace tiempo y no paro de ver currada tras currada. Donde otros ven «tochos» yo veo trabajo, y no precisamente en dosis pequeñas.

    Sigue así, felicidades por este fantástico blog que me da que no saldrá de los primeros puestos de mis marcadores en mucho tiempo… jeje

    Y recuerda, aunque algunos como yo no comentemos aún así te seguimos…

    Saludos!!!

  2. domingo, 18 de diciembre de 2011 a las 21:30 | #2

    Gracias por tomarte la molestia de leer estos «tochos». Mientras el cuerpo aguante y me quede algo de tiempo libre seguiré dando guerra contando cosillas.

  3. Antonio W
    miércoles, 13 de junio de 2012 a las 00:29 | #3

    Hola, puedes darme las pautas para instalar uprecords ?

  1. Sin trackbacks aún.

*