Ayuda a escribir un pequeño programa en Linux (ubuntu)
Hola~
El que dijiste que no tengo tiempo para arreglarte
Te doy este escrito en SHELL
¿Cómo hacerlo de forma remota? ¿Matar el proceso zombie?
El llamado "proceso zombie" se refiere a un proceso que está dormido y es inútil. Los procesos zombies a menudo ocurren cuando se realiza computación paralela. Como no puedo ver el "proceso zombie" usando top, escribí el siguiente archivo de shell llamado "rkill":
#!/bin/tcsh
echo "Ingrese el número de inicio del nodo: "
set N1="$<"
echo " Ingrese el número final del nodo: "
set N2="$<" p >
echo "Ingrese el NOMBRE del programa"
set pname="$<"
echo "************** **********************************************" p>
while($N1 <= $N2)
set h='t'$N1
set ppid=`rsh $h ps -ef grep $pname | | awk '{ print $2}' `
echo "rsh $h matar $ppid"
rsh $h matar $ppid
@ N1++
fin
echo "************************************ ****** *******************"
¿Cómo eliminar enlaces vacíos en un archivo de índice?
En el directorio /doc/Art_and_Photos Solo hay un número limitado de archivos en /photo/NASA-Astronomy_Picture_of_the_Day, pero hay más de dos mil archivos vinculados al archivo archivepix.html. Nuestro objetivo es eliminar los enlaces de archivos inexistentes.
#!/bin/tcsh -f
# Encuentra archivos disponibles en el directorio actual. find no admite expresiones regulares\{\}
set tmp=`find -type f -max Depth 1 -name "ap[0-9][0-9][0-9][0. -9][0-9][0-9].html" `
# Convertir el resultado de la búsqueda ./ap000303.html a ap000303.html
set ff1=`echo $tmp | sed -e 's/\.\/\(ap[0-9]\{6\}\.html\)/\1/g' `
# En el archivo archivepix Busque líneas que contengan ap000303.html similar en html e impórtelas al archivo temporal ftmp
grep 'ap[0-9]\{6\}\.html' archivepix.html >ftmp p>
# Convierta cada línea en ftmp al formato de ap000303.html, de modo que las cadenas en ff1 y ff2 tengan la misma forma.
set ff2 = ` sed -e 's/.*\(ap[0-9]\{6\}\.html\).*/\1/g' ftmp`
rm ftmp -f
# Comparar el contenido de las variables ff1 y ff2. Si una cadena solo existe en ff2, inclúyala en el archivo archivepix.html
#. Las líneas de esta cadena se eliminan.
foreach f2 ($ff2)
echo $f2
establecer bandera=0
foreach f1 ($ff1)
if ($f2 == $f1) entonces
establecer flag=1
endif
end
if( $flag == 0) entonces
sed -e '/'$f2'/d' archivepix.html >ftmp # Lo más importante de esta oración es que '$f2' se puede usar para tareas regulares. expresiones.
mv ftmp archivepix.html -f
endif
end
¿Cómo vincular todos los archivos de un directorio a una página web?
Simplemente exporte la salida del siguiente programa a un archivo y luego cópielo en la ubicación correspondiente en la página web. Lo más importante aquí es ver cómo se generan las comillas dobles (\").
#!/bin/tcsh -f
set dd = "/doc/Art_and_Photos/Flash /flash/ AGui"
set ffff = `buscar $dd -type f `
set n=0
foreach f ($ffff)
@ n++
echo $f
echo '< a href='\"$f\"'<'$n','>> AGui.html
end
¿Cómo cambiar los nombres de un montón de archivos?
En las notas del profesor Wu, se introdujo el ingenioso truco de Zhang Linbo, pero era para bash y se proporciona en forma de línea de comando, así que lo reescribí en formato tcsh y lo coloqué en un archivo de script, que es más conveniente de usar
#!/bin/. tcsh -f. # -f significa ejecutar el archivo directamente sin ejecutar .cshrc para la inicialización primero
rm tmp_file -f # Asegúrese de que el archivo no exista
para cada pliegue (* .jpg.* )
set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" ` # El mejor part
echo "mv $fold $fnew -f " >>tmp_file
end
chmod a+x tmp_file
./ tmp_file
rm tmp_file -f
En este archivo de script, la clave es la "esencia".
Su significado es: primero pase el nombre del archivo ($fold) a modificar a través de la tubería (|) al editor de secuencias (sed). El editor de secuencias procesa el nombre del archivo. El significado específico de cada elemento es:
.set fnew = ` echo $fold | sed -e "s/\.jpg\.\(.*\)/-\1.jpg/g" `
sed -e comando+ El La opción indica que se permite la edición multipunto
s/re/string/ Utilice una cadena para reemplazar la expresión regular re
/\.jpg\.\(.*\)/ “\.” Representa un punto real, "\.jpg\." representa ".jpg" en el nombre del archivo y "*" ' coincide con 0
Es completamente diferente del carácter comodín del shell, que representa 0 o más caracteres "cualquiera".
El contenido representado por ".*" se establece como "Etiqueta 1" y se puede citar con "\1" cuando sea necesario. Vale la pena señalar:
".*" no debe reemplazarse por "*", porque "*" representará cualquier número de "\.".
/-\1.jpg/ "\1" representa el contenido de la "Etiqueta 1"
g representa un reemplazo completo dentro de la línea
Hay Otro recordatorio aquí es que `echo...` no está entre comillas simples, sino el apóstrofo marcado "~ `" en la esquina superior izquierda del teclado.
Cómo. resolver el problema de la superposición cuando las fuentes se amplían en páginas web ¿Problema?
Opción 1: Adecuado para directorios de una sola capa
#!/bin/tcsh -f
set dir=`ls .`
foreach d ($dir)
if( -d $d) then # Determinar si es un directorio
cd $d
echo "cd $d"
foreach f (*.htm *.html)
sed -e '/[0-9 ]pt/d' $f > ftmp # Eliminar todos los archivos que contengan 9pt, 12pt y otras líneas de palabras clave
mv ftmp $f -f
end
cd ..
endif
end
Opción 2: Adecuado para directorios multicapa
#!/bin/tcsh -f
set SearchPath = "/doc/Reading/ everything/Martial Arts/Liang Yusheng"
set files=`find $SearchPath -type f -name "*.htm*" `
foreach f ($archivos)
echo $f
sed -e '/[0-9]pt/d' $f > ftmp
mv ftmp $f -f
fin