Академический Документы
Профессиональный Документы
Культура Документы
#!/bin/bash
d=$(date '+%d.%m.%y_%H:%M:%S')
mkdir ~/test && echo "catalog test was created successfully" >> ~/report.tmp && touch
~/test/$d.tmp
ping -c 1 www.net_nikogo.ru || echo "ERROR" >> ~/report.tmp
2.Задайте еще один однократный запуск скрипта из пункта 1 через 2 минуты. Организуйте
слежение за файлом ~/report и выведите на консоль новые строки из этого файла, как только
они появятся.
#!/bin/bash
at now+2minutes -f ./script1.bash
tail -n 0 -f ~/report.tmp
3.Задайте запуск скрипта из пункта 1 каждые 5 минут каждого часа в день недели, в который вы
будете выполнять работу.
#!/bin/bash
echo "*/5 * * * 2 script1.bash" | crontab
#!/bin/bash
nice -n 6 ./script4dop.bash&
nice -n 0 ./script4dop.bash&
#!/bin/bash
x=0
while true;
do
let x=$x+1
done
#!/bin/bash
echo "+" > 5.in
./script5.bash& > 5.in
while true
do
read line
if [[ $line == "QUIT" ]]
then
exit
fi
if [[ $line != '*' ]]
then echo $line >> 5.in
else echo "M" >> 5.in
fi
done
Дополнительный файл:
#!/bin/bash
result=1
operate='+'
tail -n 0 -f 5.in | while true
do
read line
case $line in
'+')
operate='+'
echo "Adding numbers"
;;
M)
operate='*'
echo "Multiplying numbers"
;;
[0-9]*)
if [[ $operate == '+' ]]
then
let result=$result+$line
else
let result=$result\*$line
fi
echo "$operate$line = $result"
;;
*)
echo "Error!"
;;
esac
done
6.Процесс «Генератор» считывает строки с консоли, пока ему на вход не поступит строка
TERM. В этом случае он посылает системный сигнал SYGTERM процессу обработчику.
Процесс «Обработчик» (как и в примере, выводящий в бесконечном цикле натуральное число
каждую секунду) должен перехватить системный сигнал SYGTERM и завершить работу,
предварительно выведя сообщение о завершении работы по сигналу от другого процесса.
#!/bin/bash
./script6dop.bash&
while true
do
read line
case $line in
"term")
echo "SEND TERM"
kill -SIGTERM $(cat mypid)
exit
;;
esac
done
Дополнительный файл:
#!/bin/bash
echo $$ > mypid
echo "RUNNING"
i=0
exiting='0'
sigterm()
{
exiting='1'
}
trap 'sigterm' SIGTERM
while true
do
case $exiting in
0)
echo $i
let i=$i+1
;;
1)
echo "STOP"
exit
;;
esac
sleep 1
done
#!/bin/bash
./script7dop.bash&
while true
do
read line
case $line in
"term")
kill -SIGTERM $(cat mypid)
exit
;;
"+")
kill -USR1 $(cat mypid)
;;
"*")
kill -USR2 $(cat mypid)
;;
esac
done
Дополнительный файл:
#!/bin/bash
echo $$ > mypid
i=1
mode="+"
sigterm()
{
echo "STOP"
exit
}
user1()
{
mode="+"
}
user2()
{
mode="*"
}
trap 'sigterm' SIGTERM
trap 'user1' USR1
trap 'user2' USR2
while true
do
case $mode in
"+")
let i=$i+2
;;
"*")
let i=$i*2
;;
esac
echo $i
sleep 1
done