Microsoft MVP성태의 닷넷 이야기
오류 유형: 926. dotnet tools를 sudo로 실행하는 경우 command not found [링크 복사], [링크+제목 복사],
조회: 8983
글쓴 사람
정성태 (seongtaejeong at gmail.com)
홈페이지
첨부 파일
 

dotnet tools를 sudo로 실행하는 경우 command not found

dotnet-dump를 설치하면,

$ dotnet tool install -g dotnet-dump
You can invoke the tool using the following command: dotnet-dump
Tool 'dotnet-dump' (version '8.0.547301') was successfully installed.

$ dotnet-dump ps
No supported .NET processes were found

(PATH에 등록이 되므로) ps 명령어까지는 잘 수행되지만, collect 명령어에서는 오류가 발생합니다.

// 30417 닷넷 프로세스가 있는 경우

$ dotnet-dump collect -p 30417

Writing full to /home/testusr/logs/core_20241002_153505
Unhandled exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.Net.Sockets.SocketException (13): Permission denied
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ConnectAsync(Socket socket)
   at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.ConnectAsync(EndPoint remoteEP)
   ...[생략]...

"Permission denied" 오류에 나오듯이 권한이 없기 때문인데요, 따라서 대개의 경우 sudo를 붙여야만 합니다.

$ sudo dotnet-dump ps
sudo: dotnet-dump: command not found

그런데, 보다시피 정작 sudo로 실행하면 저렇게 명령어를 찾을 수 없다고 나옵니다. 분명히 tools 디렉터리가 PATH에 등록돼 있지만,

$ sudo echo $PATH
/home/testusr/.local/bin:...[생략]...:/home/testusr/.dotnet/tools:/home/testusr/.local/bin:/home/testusr/istio/bin

dotnet-dump를 찾을 수 없는 것입니다. 왜냐하면, sudo 실행했을 때 적용되는 환경변수는 /etc/sudoers에 있는 secure_path를 따르기 때문입니다.

암튼, 저렇기 때문에 어쩔 수 없습니다, sudo로 할 때는 그냥 전체 경로를 적어주거나,

$ which dotnet-dump
/home/testusr/.dotnet/tools/dotnet-dump

secure_path 중에 적당한 경로를 골라, 가령 /usr/local/bin에 링크를 걸어주면 됩니다.

$ sudo ln -s /home/testusr/.dotnet/tools/dotnet-dump /usr/local/bin/dotnet-dump

$ ll /usr/local/bin
total 8
drwxr-xr-x  2 root root 4096 Oct  8 00:14 ./
drwxr-xr-x 10 root root 4096 Aug 20  2021 ../
lrwxrwxrwx  1 root root   37 Oct  8 00:14 dotnet-dump -> /home/testusr/.dotnet/tools/dotnet-dump*

$ which dotnet-dump
/usr/local/bin/dotnet-dump

$ sudo dotnet-dump ps
No supported .NET processes were found





[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 10/12/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
12125정성태1/24/202020574VS.NET IDE: 141. IDE0019 - Use pattern matching
12124정성태1/23/202022261VS.NET IDE: 140. IDE1006 - Naming rule violation: These words must begin with upper case characters: ...
12123정성태1/23/202023326웹: 39. Google Analytics - gtag 함수를 이용해 페이지 URL 수정 및 별도의 이벤트 생성 방법 [2]
12122정성태1/20/202019980.NET Framework: 879. C/C++의 UNREFERENCED_PARAMETER 매크로를 C#에서 우회하는 방법(IDE0060 - Remove unused parameter '...')파일 다운로드1
12121정성태1/20/202018777VS.NET IDE: 139. Visual Studio - Error List: "Could not find schema information for the ..."파일 다운로드1
12120정성태1/19/202023300.NET Framework: 878. C# DLL에서 Win32 C/C++처럼 dllexport 함수를 제공하는 방법 - 네 번째 이야기(IL 코드로 직접 구현)파일 다운로드1
12119정성태1/17/202023653디버깅 기술: 160. Windbg 확장 DLL 만들기 (3) - C#으로 만드는 방법
12118정성태1/17/202024598개발 환경 구성: 466. C# DLL에서 Win32 C/C++처럼 dllexport 함수를 제공하는 방법 - 세 번째 이야기 [1]
12117정성태1/15/202022817디버깅 기술: 159. C# - 디버깅 중인 프로세스를 강제로 다른 디버거에서 연결하는 방법파일 다운로드1
12116정성태1/15/202024194디버깅 기술: 158. Visual Studio로 디버깅 시 sos.dll 확장 명령어를 (비롯한 windbg의 다양한 기능을) 수행하는 방법
12115정성태1/14/202024358디버깅 기술: 157. C# - PEB.ProcessHeap을 이용해 디버깅 중인지 확인하는 방법파일 다운로드1
12114정성태1/13/202025117디버깅 기술: 156. C# - PDB 파일로부터 심벌(Symbol) 및 타입(Type) 정보 열거 [1]파일 다운로드3
12113정성태1/12/202025489오류 유형: 590. Visual C++ 빌드 오류 - fatal error LNK1104: cannot open file 'atls.lib' [1]
12112정성태1/12/202019434오류 유형: 589. PowerShell - 원격 Invoke-Command 실행 시 "WinRM cannot complete the operation" 오류 발생
12111정성태1/12/202023758디버깅 기술: 155. C# - KernelMemoryIO 드라이버를 이용해 실행 프로그램을 숨기는 방법(DKOM: Direct Kernel Object Modification) [16]파일 다운로드1
12110정성태1/11/202024829디버깅 기술: 154. Patch Guard로 인해 블루 스크린(BSOD)가 발생하는 사례 [5]파일 다운로드1
12109정성태1/10/202020029오류 유형: 588. Driver 프로젝트 빌드 오류 - Inf2Cat error -2: "Inf2Cat, signability test failed."
12108정성태1/10/202021239오류 유형: 587. Kernel Driver 시작 시 127(The specified procedure could not be found.) 오류 메시지 발생
12107정성태1/10/202023344.NET Framework: 877. C# - 프로세스의 모든 핸들을 열람 - 두 번째 이야기
12106정성태1/8/202022262VC++: 136. C++ - OSR Driver Loader와 같은 Legacy 커널 드라이버 설치 프로그램 제작 [1]
12105정성태1/8/202020731디버깅 기술: 153. C# - PEB를 조작해 로드된 DLL을 숨기는 방법
12104정성태1/7/202024092DDK: 9. 커널 메모리를 읽고 쓰는 NT Legacy driver와 C# 클라이언트 프로그램 [4]
12103정성태1/7/202027240DDK: 8. Visual Studio 2019 + WDK Legacy Driver 제작- Hello World 예제 [1]파일 다운로드2
12102정성태1/6/202021881디버깅 기술: 152. User 권한(Ring 3)의 프로그램에서 _ETHREAD 주소(및 커널 메모리를 읽을 수 있다면 _EPROCESS 주소) 구하는 방법
12101정성태1/5/202024018.NET Framework: 876. C# - PEB(Process Environment Block)를 통해 로드된 모듈 목록 열람
12100정성태1/3/202021176.NET Framework: 875. .NET 3.5 이하에서 IntPtr.Add 사용
... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...