* Comandos de shell NIX útiles para desarrolladores web

Entonces, ¿por qué * NIX y por qué necesitas ir a la consola??

Según las estadísticas de W3Techs, Unix es utilizado por el 68% de todos los sitios web cuyo sistema operativo conocen. Esto significa que si usted es desarrollador web, lo más probable es que su código se ejecute en un servidor Linux. Y al menos necesita saber cómo configurar y depurar su código en sistemas Unix y Linux. Averigüemos qué necesita saber para sentirse cómodo en la línea de comandos..

Los basicos

El comando básico * NIX consta de tres componentes:

  • mando o programa para ejecutar
  • opciones para alterar o especificar el comportamiento del comando
  • argumentos o datos de entrada que se necesitan para ejecutar el comando   

Por ejemplo, si necesita obtener una lista de archivos en el directorio / var / www, necesitas ejecutar el comando ls con el argumento / var / www. Para agregar el tamaño de los archivos a la salida, debe agregar el -s opción, y el comando final se verá así:

ls -s / var / www

Redirecciones y conductos de E / S

Muchos * comandos de NIX usan entrada y salida de texto con las que puede operar, y la gran característica de esto es que puede enviar los resultados de salida del comando a un archivo usando redirección, o incluso pasar la salida de un comando a la entrada de otro comando utilizando las tuberías. Por ejemplo, podemos enviar el comando del ejemplo anterior a un archivo:

ls -s / var / www> /var/www/files.txt

Este comando creará o borrará el archivo. /var/www/files.txt y generar una lista de archivos en el / var / www directorio. Aquí hay una lista de redirecciones y tuberías de E / S estándar:

  • > Redirigir la salida de un comando a un archivo en el disco. El archivo será borrado y sobrescrito..
  • >> El mismo redireccionamiento, pero anexando el archivo de salida..
  • < Obtener entrada al comando desde un archivo.
  • | Pase la salida de un comando a la entrada de otro comando.
  • tee Ambos redirigen la salida a un archivo y lo pasan al siguiente comando en la canalización.

Los comandos principales

Para obtener páginas de manual para un comando, ejecute hombre. Las páginas del manual siguen un diseño común y pueden incluir nombre, sinopsis, descripción y ejemplos de uso. Esto mostrará la documentación para el chmod mando:

hombre chmod

Para ejecutar algunos comandos, como guardar configuraciones o reiniciar procesos, debe ejecutarlos como superusuario. Para ello, es necesario anteponer sudo a su orden:

user @ server: / var / www $ chmod 777 log chmod: cambio de permisos de 'log': operación no permitida user @ server: / var / www $ sudo chmod 777 log sudo chmod 777 log

Si necesita ejecutar varios comandos como superusuario, puede usar su, o cambiar el comando de usuario.

Usuario @ servidor: / var / www $ su Contraseña: root @ servidor: / var / www #

Nota: Para guardar la capa de seguridad y evitar la ejecución accidental de comandos objetables, no utilice sudo y su sin ningún propósito.

En el mundo real

Navegación básica

Hay tres comandos principales para navegar en el árbol de archivos:

  • pwd para imprimir el nombre del directorio de trabajo actual
  • discos compactos para cambiar el directorio
  • ls para listar los contenidos del directorio

Este es un ejemplo del uso de estos comandos con la salida de terminal:

usuario @ servidor: ~ $ pwd / home / usuario usuario @ servidor: ~ $ cd / var / www usuario @ servidor: / var / www $ ls -alF total 16 drwxr-xr-x 5 root root 4096 Ene 22 09:45 ./ drwxr-xr-x 14 root root 4096 Jan 22 09: 38… / drwxr-xr-x 2 root root 4096 Ene 22 09:45 html / drwxr-xr-x 3 root root 4096 Ene 22 09:45 log / drwxrwxrwx 1 usuario usuario 442 24 de marzo 12:22 pruebas /

Buscando archivos

Ahí está el encontrar comando para buscar archivos en una jerarquía de directorios. Este comando es muy poderoso y puede buscar archivos y directorios por nombre, permisos de acceso, fecha y tamaño.

Encuentre todos los directorios con el nombre de "logs" en el / var / www directorio usando el -tipo opción:

buscar / var / www -type d -name logs

Para buscar archivos PHP en el directorio actual, agregue el -nombre opción:

encontrar . -tipo f -nombre "* .php"

Encuentra archivos con permisos definidos usando el -permanente opción:

encontrar . -tipo f -perm 0777 -print

Encuentra todos los archivos que son mayores de 500 MB:

encontrar / -size + 500M

Por supuesto, puede combinar todas esas opciones en un solo comando, y esto es solo lo básico de encontrar comando, que es una herramienta muy poderosa para buscar archivos. Usa las páginas del manual para obtener más información..

Manipulación de archivos y carpetas

Hay cinco comandos principales para manipular archivos y carpetas en el sistema * NIX:

  • toque se usa para cambiar las marcas de tiempo en los archivos y directorios existentes, pero también es la forma más fácil de crear un nuevo archivo
  • mkdir hacer directorios
  • cp para copiar archivos y directorios
  • mv para mover o renombrar archivos y directorios
  • rm para borrar archivos y carpetas

El siguiente ejemplo creará un archivo. index.html, Copia este archivo al nuevo directorio en / var / www, y eliminar el archivo fuente.

root @ localserver: ~ # touch index.html root @ localserver: ~ # mkdir / var / www / newdir root @ localserver: ~ # cp index.html / var / www / newdir / root @ localserver: ~ # rm index.html

Otro gran comando es en, que está diseñado para hacer enlaces entre archivos. El comando en a menudo se utiliza para crear un enlace simbólico para habilitar un host virtual:

sudo ln -s /etc/apache2/sites-available/newvirtualhost.com.conf / etc / apache / sites-enabled / newvirtualhost.com.conf

Cambiar permisos de acceso

Para cambiar el propietario y grupo del archivo, use Chown. No olvide otorgarle la propiedad al usuario de apache cuando esté creando un nuevo host virtual de su aplicación web:

sudo chown -R www-data: www-data /var/www/newvirtualhost.com

A veces, los directorios de caché o registro de su aplicación deben poder escribirse para todos los usuarios, por lo que debe cambiar los modos de acceso a 777 chmod mando. Añade el -R Opción para agregar permiso a todos los archivos y carpetas anidados.

sudo chmod -R 777 / var / www / private / cache

Si solo quieres hacer un archivo ejecutable, usa chmod con el +X opción.

sudo chmod + x /var/www/private/backup.sh

Lectura de archivos

Para ver los archivos en la consola, puede utilizar el gato mando. Con gato, puede concatenar el contenido de los archivos utilizando parámetros adicionales, y también puede usar la máscara en los nombres de archivo.

cat /etc/apache2/apache2.conf cat /etc/apache2/apache2.conf /etc/apache2/ports.conf cat / etc / apache2 / mods-enabled / *

Pero el gato El comando lo confundirá muy rápido, ya que muestra la salida en formato sin formato sin ningún tipo de paginación, por lo que es un inconveniente utilizarla con la salida del registro. Para obtener un filtro para paginar a través de texto una pantalla a la vez, debe usar el Más o Menos comandos, que son mucho de una grandeza.

menos /etc/apache2/apache2.conf cat / etc / apache2 / mods-enabled / * | Menos

Otro comando útil es cola, que se crea para dar salida a la última parte de los archivos. Este comando es perfecto para mirar a través de historiales de registro. De forma predeterminada, este comando de cola imprime las últimas 10 líneas, y puede cambiar este número usando -norte parámetro.

tail /var/log/apache2/error.log tail -n 25 /var/log/apache2/error.log

Pero si tiene, por ejemplo, un montón de archivos de registro, necesita algo más poderoso para realizar una búsqueda adecuada. Algo como grep-un programa que lee desde la entrada estándar, prueba cada línea contra un patrón y escribe en la salida estándar las líneas que coinciden con este patrón. Usándolo en combinación con gato Y tuberías, obtendrás lo que quieras..

Si desea filtrar líneas de texto de salida, puede utilizar el grep mando:

grep notice /var/log/apache2/error.log cat /var/log/apache2/*.log | grep "apagando"

Como puedes ver, grep Es bueno para usar en tuberías. En este ejemplo, el último comando generará todas las líneas que contengan la cadena de "cierre" de los archivos de registro.

Edición de archivos

Si desea editar archivos de texto en modo consola, puede usar uno de los tres editores de texto más populares:

  • GNU nano, Un editor de texto predeterminado pequeño y amigable, que es una opción perfecta para tareas básicas
  • Empuje, un editor de texto para programadores mejorado, que es el más poderoso, pero complejo para principiantes
  • mcedit, un editor con ventanas con todas las funciones de Midnight Commander, que es fácil de usar pero no se instala de forma predeterminada en los sistemas * NIX

Compáralos y haz tu elección:

nano /var/log/apache2/error.log vim /var/log/apache2/error.log mcedit /var/log/apache2/error.log

Archivando

A veces necesitas hacer una copia de seguridad o comprimir algunos datos en tu servidor.

Las utilidades de archivo más comunes son alquitrán y cremallera. Tenga en cuenta que el cremallera El comando puede no estar instalado en su servidor por defecto.

Puedes crear un archivo con los siguientes comandos:

tar -zcvf archive-name.tar.gz directorio-o-nombre-archivo tar -jcvf archive-name.tbz2 directorio-o-nombre-archivo zip archive-name.zip directorio-o-archivo-nombre

Si solo desea ver una lista de archivos en el archivo, puede usar la -l opción para ambos alquitrán y abrir la cremallera:

tar -ztvf archive-name.tar.gz tar -jtvf archive-name.tbz2 unzip -l archive-name.zip

O extraer algunos archivos de origen:

tar -zxvf nombre-archivo.tar.gz tar -jxvf nombre-archivo.tbz2 zip nombre- archivo.zip

Tareas de programación

Si desea programar sus scripts para que se ejecuten periódicamente, necesita usar la utilidad Cron, que está controlada por una tabla cron, un archivo de configuración que especifica los comandos de shell para que se ejecuten periódicamente en un programa determinado. Y el comando para mantener las tablas cron es Crontab.

Llamando a crontab con opción -l mostrará tu tabla cron.

También el -tu Se proporciona una opción para especificar el nombre del usuario cuyo crontab se está utilizando. Si va a ejecutar tareas de su aplicación web, es mejor editar crontab para el usuario www-data.

usuario @ servidor: ~ $ sudo crontab -lu www-data # mh dom mon dow comando * / 5 * * * * php5 / var / www / yii do / tareas >> /var/www/tasks.log 00 15 * * 1-5 /var/www/backuper.sh

En esta salida, puede ver un ejemplo de una tabla cron. Como puede ver, cada línea está programada por minuto, hora, día del mes, mes y día de la semana. Cada campo puede ser un asterisco, lo que significa cada valor del campo. También puedes usar conjuntos y rangos usando comas y guiones. Al seguir un rango con una barra, se especifican omisiones del valor del número a través del rango. En este ejemplo, el primer comando se ejecutará cada cinco minutos, y el segundo comando se ejecutará de lunes a viernes a las 15:00.

Para editar esta lista, ejecute crontab con el -mi clave en lugar de -l. La lista de cron se abrirá en su editor predeterminado. Utilizar el -r Opción para borrar la lista de cron.

Supervisión del rendimiento

Mando parte superior muestra información resumida del sistema y proporciona una vista dinámica en tiempo real de los procesos del sistema en ejecución. prensa Shift-M para ordenar los procesos por uso de memoria, o Shift-P ordenar por uso de CPU.

arriba - 21:33:02 hasta 308 días, 21:24, 1 usuario, carga promedio: 0.00, 0.01, 0.05 Tareas: 87 en total, 1 corriendo, 86 durmiendo, 0 parado, 0 zombie% Cpu (s): 0.3 us , 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem: 501800 en total, 471348 usados, 30452 libres, 49672 buffers KiB Swap: 4194300 en total, 56192 usados, 4138108 gratis. 149488 cacheado Mem PID USUARIO PR NI VIRT RES SHR S% CPU TIM + COMANDO 16269 www-data 20 0 348592 38884 12044 S 0.0 7.7 0: 02.42 php5 26533 www-data 20 0 409516 38488 24312 S 0.0 7.7 1: 00.04 php5- fpm 1076 mysql 20 0 887824 32748 1616 S 0.0 6.5 276: 46.59 mysqld 862 syslog 20 0 256612 31428 368 S 0.0 6.3 32: 45.88 rsyslogd 18901 root 20 0 105632 4316 3248 S 0.0 0.9 0: 00.04 sshd 25393 www-data 20 0 87666 4312 1564 S 0.0 0.9 4: 46.92 nginx 27846 memcache 20 0 328464 3828 252 S 0.0 0.8 1: 04.30 memcached 

Para visualizar la cantidad de memoria libre y usada en el sistema, use la gratis mando. Añade el -h Opción para mostrar los campos de salida en formato legible por humanos.

usuario @ servidor: ~ $ libre -h total utilizado buffers compartidos libres en caché Mem: 490M 453M 36M 23M 46M 140M - / + buffers / cache: 265M 224M Swap: 4.0G 54M 3.9G

Otro comando útil es df, que es un comando para informar el uso de espacio en disco del sistema de archivos. Puedes llamarlo con el -una Opción para mostrar todos los sistemas de archivos de su servidor. Además, no olvides añadir el -h Opción para formato legible por humanos.

usuario @ servidor: ~ $ df -ah Tamaño del sistema de archivos utilizado% de uso Montado en / dev / vda1 20G 6.3G 13G 34% / udev 235M 4.0K 235M 1% / dev tmpfs 50M 344K 49M 1% / ejecución

Historial de línea de comandos

Puedes usar el !! comando para repetir el comando anterior, o usar sudo !! Si olvidó ejecutar un comando con sudo.

usuario @ servidor: / var / www $ chmod 777 registro chmod: cambio de permisos de 'registro': operación no permitida usuario @ servidor: / var / www $ sudo !! sudo chmod 777 log

Si olvidó la sintaxis de los comandos o se siente perezoso al escribir una consulta de comandos grande, puede usar historia para mostrar su historial de comandos. Es bueno combinar este comando con cadenas de comandos de filtro como grep, cola y otros para encontrar exactamente lo que quieres..

historia | historia de la cola | historia de grep crontab | egrep -i 'ssh | ftp'

Conclusión

Usar la consola no es ciencia espacial. Los sistemas Unix y Linux son fáciles de entender y usar debido a su diseño simple y buena documentación. Espero que este artículo te haga sentir muy cómodo con la línea de comandos y te lleve al siguiente nivel de administración de tus aplicaciones web con la línea de comandos..

Si tiene alguna pregunta o desea compartir sus comandos de consola favoritos, no dude en dejar un comentario debajo del artículo..

Otras lecturas

  • Directorio de Comandos Linux
  • Guía de Bash para principiantes
  • Usando la terminal
  • ¿Cómo puedo aprender rápidamente los comandos terminales??
  • La línea de comandos es tu mejor amigo