Открытые системы / Храмцов / Документ Microsoft Office Word
.doc-
Запрограммируйте скрипт, удаляющий файлы, созданные в текущем каталоге в течении последних 15 минут и имеющих только права чтения для группы владельца файла.
#!/bin/sh
find . -type f -perm 040 -cmin -15 -print0 | xargs -0 /bin/rm –f
-
Запрограммируйте скрипт, удаляющий все процессы с заданным именем и с заданным аргументом, запущенные определенным пользователем.
#!/bin/sh
if [ $# -lt 0 ]
then
echo "Too few arguments"
exit 0
fi
#Zapominaem imya processa
proc=$2
#Zapominaem argument
arg=$3
#zapominaem imya polzovatelya
user=$1
for n in `ps --user $user -C $proc -o pid`
do
if [ $n != "PID" ]
then
kill -s 9 $n;
fi
done
-
Реализуйте ротацию файла лога с глубиной ротации до 5 файлов при достижении размера в 100 байт.
#!/bin/sh
a=`ls -la|grep 'r'|sort -g -k2`
i=0;
ii=0;
index=0;
for n in $a
do
let i=$i+1;
if [ $i == 2 ]
then
arr[$index]=$n
fi
if [ $i > 2 ]
then
let ii=$ii+1
fi
if [ $ii == 5 ]
then
arr1[$index]=$n
let index=$index+1;
fi
if [ $i == 9 ]
then
i=0
ii=0
fi
done
i=0;
while [ $i -lt $index ]
do
echo ${arr[i]}":"${arr1[i]}
let i=$i+1;
done
-
Распечатайте номера строк файлов, в который встречается определенное наперед заданное слово, и подсчитайте количество таких строк.
#!/bin/sh
if [ $# -lt 0 ]
then
echo "Too few arguments"
exit 0
fi
#grep -n $1 *
grep -n $1 * |awk 'BEGIN{FS=":"};{print $1":"$2;};END{ FS="\n"; print ""}'
items=`grep -n $1 * |awk 'BEGIN{FS=":[:digit]"};{print $2};END{ FS="\n"; print ""}'| wc -l`
let items=$items-1;
echo $items;
-
Распечатайте номера строк файлов, в который встречается заданное слово в середине строки
#!/bin/sh
if [ $# -lt 0 ]
then
echo "Too few arguments"
exit 0
fi
#grep -n ".$1" *
grep -n ".$1." * |awk 'BEGIN{FS=":"};{print $1":"$2;};END{ FS="\n"; print ""}'
items=`grep -n ".$1." * |awk 'BEGIN{FS=":[:digit]"};{print $2};END{ FS="\n"; print ""}'| wc -l`
let items=$items-1;
echo $items;
-
Распечатайте даты создания всей файлов размером более 10 байт, но менее 100 байт в текущем каталоге, выше стоящем каталоге и ниже стоящем каталоге с глубиной 2.
#!/bin/sh
a=`find -P .. -maxdepth 2 -type f -size +10c -size -100c -exec ls -la {} \;`
#echo $a;
i=0;
ii=0;
index=0;
for n in $a
do
let i=$i+1;
if [ $i == 6 ]
then
arr[$index]=$n
fi
if [ $i == 7 ]
then
arr1[$index]=$n
fi
if [ $i == 8 ]
then
arr2[$index]=$n
fi
if [ $i == 9 ]
then
arr3[$index]=$n
i=0
let index=$index+1
fi
done
i=0;
while [ $i -lt $index ]
do
echo ${arr[i]}" "${arr1[i]}" "${arr2[i]}" "${arr3[i]}
let i=$i+1;
done
b=`find -P . -mindepth 2 -maxdepth 3 -type f -size +10c -size -100c -exec ls -la {} \;`
#echo $b
i=0;
ii=0;
index=0;
for n in $b
do
let i=$i+1;
if [ $i == 6 ]
then
arr[$index]=$n
fi
if [ $i == 7 ]
then
arr1[$index]=$n
fi
if [ $i == 8 ]
then
arr2[$index]=$n
fi
if [ $i == 9 ]
then
arr3[$index]=$n
i=0
let index=$index+1
fi
done
i=0;
while [ $i -lt $index ]
do
echo ${arr[i]}" "${arr1[i]}" "${arr2[i]}" "${arr3[i]}
let i=$i+1;
done
-
Распечатайте список имен глобальных переменных окружения (без значений), которые содержат строку "ell".
#!/bin/bash
set|grep -E 'ELL|ell'|cut -d"=" -f1
-
Распечатайте имя команды и идентификатор процесса с максимальным приоритетом ( PRI и/или NICE). В случае равенства приоритетов выбрать последний элемент списка.
#!/bin/sh
a=`ps -do pri,pid`
index=0
i=0;
for n in $a
do
let i=$i+1;
if [ $i == 1 ]
then
arr[$index]=$n
fi
if [ $i == 2 ]
then
arr1[$index]=$n
let index=$index+1
i=0
fi
done
i=1
max=${arr[$i]}
while (( $i < $index ))
do
temp=${arr[i]}
if [ "$temp" -ge "$max" ]
then
max_pr=${arr1[i]}
max=${arr[i]}
fi
let i=$i+1
done
a=`ps --pid=$max_pr -o pid,cmd`
i=0
for n in $a
do
let i=$i+1
if [ $i == 3 ]
then
first=$n;
fi
if [ $i == 4 ]
then
sec=$n;
fi
done
echo $first" "$sec