#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 10月 21 11:50 Test
И разрешение на выполнение добавляется обратно после завершения процесса запуска.
$ ls -l Test <------------Test is not running.
-rwxrwxrwx 1 root root 53081298 10月 21 11:50 Test
Поэтому я не могу запустить более одного процесса.
Я действительно смущен этой проблемой. Кто-нибудь может помочь?
Комментарии:
1. Эта проблема не та же самая, но кажется несколько похожей: github.com/dotnet/core/issues/4644 . Это исправлено в .net core 3.1.4. Какую версию вы используете?
Ответ №1:
Извините за беспокойство, я нашел основную причину.
На всякий случай, если другие могут столкнуться с такой же глупой ситуацией, оставьте сообщение здесь.
Моя проблема вызвана VirutalBox. Потому что я поместил свой опубликованный тест сборки в общий каталог моего хоста между общей виртуальной машиной.
После перемещения моего файла Test в домашний каталог виртуальной машины он работает хорошо.
И спасибо за вашу помощь @jdoer1997