Как ни странно, в моем случае это было вызвано конфигурационным файлом CUPS(/etc/cups/client.conf
).
Этот файл ссылался на удаленный сервер cups, который не всегда был доступен. Сервер находился в моей рабочей сети, таким образом, когда на работе ярлыки и все работало без нареканий, а дома или в другом месте ничего не работало.
Я подозреваю, что gnome пытался получить доступ к серверу и блокировал другие пользовательские функции, а затем по тайм-ауту запроса выполняются все пользовательские вызовы в очереди. Тем не менее, у меня нет доказательств этого (ничего странного в журнале или что-то в этом роде. смог найти)
Удаление этого файла решило мою проблему.
Да, в оболочке bash
вы можете использовать замену процесса:
minimap -ax map-ont /path/to/fasta.file <( cat *.fastq ) >output.sam
<(... )
— это подстановка процесса. Он будет заменен именем пути именованного канала (что-то вроде /dev/fd/XXX
), который будет производить вывод команды внутри при чтении из него. Вывод команды в процессе подстановки не сохраняется на диске.
Пока инструменту minimap
не нужно прыгать назад и вперед по данным fastq, а просто считывать их последовательно, это, вероятно, будет работать.
Делая это без замены процессов (это также будет работать с sh
или любой оболочкой POSIX):
mkfifo fastq_data
cat *.fastq >fastq_data &
minimap -ax map-ont /path/to/fasta.file fastq_data >output.sam
rm fastq_data
Это почти то же самое, что и первая команда. Он создает именованный канал и объединяет с ним данные fastq (, cat
работает как фоновое задание, пока весь его вывод не будет прочитан minimap
, а затем завершается ). Затем вызывается инструмент minimap
с именованным каналом для данных fastq. Когда это будет сделано, именованный канал будет удален.
Чтение из канала fastq_data
означает чтение напрямую из команды cat
, а не из какого-то временного файла. Опять же, результат cat
никогда не сохраняется на диске.
Если инструменту minimap
по какой-то причине требуется файл fastq с определенным суффиксом имени файла, это может быть лучшим вариантом. Просто назовите свой именованный канал как data.fastq
или аналогичный.