Что произойдет, если файл будет переименован во время операции копирования с помощью cp в Linux?

Вот что у меня в итоге получилось:во многом благодаря RobotJohnny.

ns () {
 echo ""
 while sleep 1; do
  IFS=$'\n'
  for line in $(lsof -Pi |
   grep ESTABLISHED |
   grep -ve "localdomain:[0-9]*.EST" \
    -e "search.msn.com:[0-9]*.EST" \
    -e "spider.yandex.com:[0-9]*.EST" \
    -e "google.com:[0-9]*.EST"); do
   cmdpidusr=$(echo $line | awk -v OFS='\t' '{print $1, $2, $3}')
   node=$(echo $line | awk '{print $8}')
   ipadd=$(echo $line | awk '{print $9}' | cut -d ">" -f 2 | cut -d ":" -f 1)
   port=$(echo $line | awk '{print $9}' | cut -d ">" -f 1 | cut -d ":" -f 2 | cut -d "-" -f 1)
   geoip=$(geoiplookup $ipadd | sed "s/GeoIP.*: \S* //g")
   echo -e "$cmdpidusr\t$node\t$port\t$ipadd\t$geoip" | sed "s/\s*resolve hostname.*//g" | grep -v root
  done | column -t -s $'\t' | sed "s/  \s*/  /g"
  unset IFS
 done
}
1
27.02.2020, 04:08
1 ответ

Подстановочные знаки в командной строке ("/var/log/somelogs/*" )раскрываются сначала (до того, как cpначнет выполняться ). Если результирующий список файлов содержит имя файла, которого больше не существует (из-за того, что выполнялась ротация журналов, когда cpкопировал более ранние файлы ), cpбудет жаловаться, попытается использовать следующий файл и вернет не -нулевой статус выхода(bashпеременная$?). См. man cp.

См. расширение с подстановочными знаками;

echo cp /var/log/somelogs/*./temp
2
28.04.2021, 23:22

Теги

Похожие вопросы