Как в сценарии можно определить, записывается ли файл в настоящий момент другим процессом?

Удостоверьтесь, что вы отключили липкие или медленные клавиши в меню «Доступность», и он должен работать! Пожалуйста, сообщите нам, если это решит вашу проблему!

17
задан 21 November 2010 в 08:57

9 ответов

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit, например, чтобы открыть файл gedit.

Вот сценарий для ожидания:

#!/bin/bash

while :
do
    if ! [[ `lsof -c python3.2 | grep test.py` ]]
    then
        break
    fi
    sleep 0.5
done
echo "done"

Это выполняется, пока процесс «pyhton3.2» получил Файл «test.py» открыт. Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не слишком сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного совета. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt. Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)
19
ответ дан 26 May 2018 в 00:19
  • 1
    Оберните это в цикл до конца, и у вас есть сделка. – Nick Pascucci 21 November 2010 в 09:36
  • 2
    Сделал это. :-) Надеюсь, это не страшный стиль - не потрудились прочитать лучшие практики. Все равно работает. – Stefano Palazzo♦ 21 November 2010 в 10:25
  • 3
    Спасибо Стефано ... да, это работает ... так что это хороший и правильный ответ. Одна из сторонницей, она подчеркнула, что то, что происходит в софите, - это не , как я думал. Кажется, создается временный файл, и файл final (возможно, вероятно) переименован после завершения ... Поэтому я сейчас смотрю на это ... в этом случае я могу просто нужно дождаться его * existance ... ... и спасибо за ссылку на unoconv .. Я посмотрю на это .. (в целом, я конвертирую .pdf в несколько. .jpegs по одному на страницу) – Peter.O 21 November 2010 в 10:56
  • 4
    @ fred.bear, чтобы ждать, пока файл не существует, замените if-statement на это: if [ -f test.odf ]. (скрипт bash может быть настолько загадочным иногда ...) – Stefano Palazzo♦ 21 November 2010 в 19:19
  • 5
    попробуйте lsof -- /path/to/file вместо этого, чтобы избежать grep – RubyTuesdayDONO 24 December 2013 в 10:34

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit, например, чтобы открыть файл gedit.

Вот сценарий для ожидания:

#!/bin/bash while : do if ! [[ `lsof -c python3.2 | grep test.py` ]] then break fi sleep 0.5 done echo "done"

Это выполняется, пока процесс «pyhton3.2» получил Файл «test.py» открыт. Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не слишком сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного совета. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt. Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)
20
ответ дан 25 July 2018 в 22:51

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit, например, чтобы открыть файл gedit.

Вот сценарий для ожидания:

#!/bin/bash while : do if ! [[ `lsof -c python3.2 | grep test.py` ]] then break fi sleep 0.5 done echo "done"

Это выполняется, пока процесс «pyhton3.2» получил Файл «test.py» открыт. Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не слишком сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного совета. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt. Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)
20
ответ дан 31 July 2018 в 10:39

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit, например, чтобы открыть файл gedit.

Вот сценарий для ожидания:

#!/bin/bash while : do if ! [[ `lsof -c python3.2 | grep test.py` ]] then break fi sleep 0.5 done echo "done"

Это выполняется, пока процесс «pyhton3.2» получил Файл «test.py» открыт. Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не слишком сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного совета. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt. Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)
20
ответ дан 2 August 2018 в 04:15

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit , чтобы посмотреть, какой файл gedit был открыт.

Вот сценарий для ожидания:

  #! / Bin / bash while: do if!  [[`lsof -c python3.2 |  grep test.py`]] then break fi sleep 0.5 done echo "done"  

Это выполняется, пока процесс «pyhton3.2» получил файл «test.py». Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного наконечник. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)

20
ответ дан 4 August 2018 в 20:20

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit , чтобы посмотреть, какой файл gedit был открыт.

Вот сценарий для ожидания:

  #! / Bin / bash while: do if!  [[`lsof -c python3.2 |  grep test.py`]] then break fi sleep 0.5 done echo "done"  

Это выполняется, пока процесс «pyhton3.2» получил файл «test.py». Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного наконечник. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)

20
ответ дан 6 August 2018 в 04:20

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit , чтобы посмотреть, какой файл gedit был открыт.

Вот сценарий для ожидания:

  #! / Bin / bash while: do if!  [[`lsof -c python3.2 |  grep test.py`]] then break fi sleep 0.5 done echo "done"  

Это выполняется, пока процесс «pyhton3.2» получил файл «test.py». Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного наконечник. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)

20
ответ дан 7 August 2018 в 22:25

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit , чтобы посмотреть, какой файл gedit был открыт.

Вот сценарий для ожидания:

  #! / Bin / bash while: do if!  [[`lsof -c python3.2 |  grep test.py`]] then break fi sleep 0.5 done echo "done"  

Это выполняется, пока процесс «pyhton3.2» получил файл «test.py». Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного наконечник. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)

20
ответ дан 10 August 2018 в 10:34

Вы можете использовать lsof | grep /absolute/path/to/file.txt, чтобы увидеть, открыт ли файл. Если файл открыт, эта команда вернет статус 0, в противном случае он вернет 256 (1).

Имейте в виду, что эта команда займет секунду, так как обычно есть много файлов, открытых в в любой момент.

Вы также можете использовать lsof -c gedit , чтобы посмотреть, какой файл gedit был открыт.

Вот сценарий для ожидания:

  #! / Bin / bash while: do if!  [[`lsof -c python3.2 |  grep test.py`]] then break fi sleep 0.5 done echo "done"  

Это выполняется, пока процесс «pyhton3.2» получил файл «test.py». Как только файл закрыт, он переходит к «эхо-завершению» и завершает работу.

Я поставил там «sleep 0.5», чтобы цикл не сильно зависал CPU. В противном случае он будет использовать 100% -ный процессор.

Бонус. Кажется, есть простой способ заключить odt в pdf:

Благодаря scls19fr на форуме OOo для этого прекрасного наконечник. Вы можете конвертировать файлы OpenOffice Writer в PDF из командной строки, используя unoconv -f pdf input.odt Чтобы получить unoconv, просто запустите sudo apt-get install unoconv на терминале. (rhyhale of rhyshale.wordpress.com)

20
ответ дан 13 August 2018 в 17:04
  • 1
    Оберните это в цикл до конца, и у вас есть сделка. – Nick Pascucci 21 November 2010 в 09:36
  • 2
    Сделал это. :-) Надеюсь, это не страшный стиль - не потрудились прочитать лучшие практики. Все равно работает. – Stefano Palazzo♦ 21 November 2010 в 10:25
  • 3
    Спасибо Стефано ... да, это работает ... так что это хороший и правильный ответ. Одна из сторонницей, она подчеркнула, что то, что происходит в софите, - это не , как я думал. Кажется, создается временный файл, и файл final (возможно, вероятно) переименован после завершения ... Поэтому я сейчас смотрю на это ... в этом случае я могу просто нужно дождаться своего * existance ... ... и спасибо за ссылку на unoconv .. Я посмотрю на это .. (в целом, я конвертирую .pdf в несколько. .jpegs по одному на страницу) – Peter.O 21 November 2010 в 10:56
  • 4
    @ fred.bear, чтобы ждать, пока файл не существует, замените if-statement следующим: , если [-f test.odf] . (скрипт bash может быть настолько загадочным иногда ...) – Stefano Palazzo♦ 21 November 2010 в 19:19
  • 5
    попробуйте lsof - / path / to / file вместо этого, чтобы избежать grep 'ing – RubyTuesdayDONO 24 December 2013 в 10:34

Другие вопросы по тегам:

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