сборка .net core не может одновременно выполняться в Linux

#c# #.net #linux

#c# #.net #linux

Вопрос:

Я написал приложение dotnet core для запуска в Linux. опубликован один исполняемый файл с включенным автономным.

 dotnet publish -c Release -r linux-x64 -o ${dst_path} -v n /p:PublishTrimmed=true /p:PublishSingleFile=true
  

Но, как ни странно, он может запускать только один экземпляр.
Потому что, когда она запущена, она удалит разрешение на выполнение файла.

 $ ./Test
10/21/2020 11:50:27 AM [Info] Server started at ws://0.0.0.0:12500 (actual port 12500)
$ ls -l Test  <---------Test is running, ls -l is executed in another terminal
-rw-rw-rw- 1 root root 53081298 1021 11:50 Test
  

И разрешение на выполнение добавляется обратно после завершения процесса запуска.

 $ ls -l Test  <------------Test is not running.
-rwxrwxrwx 1 root root 53081298 1021 11:50 Test
  

Поэтому я не могу запустить более одного процесса.

Я действительно смущен этой проблемой. Кто-нибудь может помочь?

Комментарии:

1. Эта проблема не та же самая, но кажется несколько похожей: github.com/dotnet/core/issues/4644 . Это исправлено в .net core 3.1.4. Какую версию вы используете?

Ответ №1:

Извините за беспокойство, я нашел основную причину.

На всякий случай, если другие могут столкнуться с такой же глупой ситуацией, оставьте сообщение здесь.

Моя проблема вызвана VirutalBox. Потому что я поместил свой опубликованный тест сборки в общий каталог моего хоста между общей виртуальной машиной.

После перемещения моего файла Test в домашний каталог виртуальной машины он работает хорошо.

И спасибо за вашу помощь @jdoer1997