NAS NFS(Network File System)을 사용하다 Stale File Handle 에러가 발생하는 경우가 발생.

NFS 연결되어 있는 디스크 연결이 끊어져 버린 경우의 상태라면

위와 같은 에러를 접할 때가 있습니다.

 

 $ ls
ls: cannot access nas: Stale file handle
total 0

 

아래와 같은 명령어를 통해 마운트 된 모든 파일 시스템의 상태를 확인해 봅니다.

NFS 의 연결 상태가 비정상적이라는 것을 확인

 $ cat /proc/mounts // proc/mounts 파일

 

 

언마운트를 하고 다시 마운트를 하려고 해도 동일한 메시지가 출력됩니다.

 $ mount -t nfs 10.10.10.10:/nas /nas

mount.nfs: Stale NFS file handle

 

이런 경우 간단한 해결방법은 NFS 마운트 포인트를 끊고

다시 연결해 주면 되는데 umount 하려고 해도 제대로 연결이 끊어지지 않습니다.

 

이럴때 umount '-f' 옵션을 사용하면 말끔히 해결됩니다.

아래와 같이 -f 로 언마운트를 하고 다시 마운트를 해 주면 됩니다.

 

$ umount -f /nas

 

 


 

증상 : 원격데스크톱 연결 인증 오류발생. CredSSP 암호화 오라클 수정 때문일 수 있습니다.

윈도우 10 원격데스크톱 연결시 위와 같은 메시지가 팝업되면서 접속되지 않는 현상이 발생하였습니다.

 

 

원인 : CredSSP 보안 취약점 패치로 인한 문제

 

대충 확인해보니 원격 데스크톱 연결시 CredSSP (Credential Security Support Provider) 프로토콜을 사용하는데

CredSSP 프로토콜 원격코드 실행 취약점 문제로 인해 패치를 진행하였고 그로 인해 접속이 되지 않는 문제였는데요.

자세한 내용은 아래 링크를 확인하시면 됩니다.

 

https://support.microsoft.com/ko-kr/help/4093492/credssp-updates-for-cve-2018-0886-march-13-2018

 

해당 증상을 해결하기 위한 방법은 간단하게 대상 PC 보안 업데이트를 진행하면 되겠지만

당장 서비스를 중지할 수 없는 상황일 때 아래 해결방안을 참조하세요.

 

 

해결 : 아래와 같이 설정 (패치가 적용되지 않은 클라이언트를 수락하는 설정)

 

원격 컴퓨터에 연결하고자 하는 클라이언트 PC에서 로컬 그룹정책 편집기를 실행합니다.

 

gpedit.msc 으로 컴퓨터 구성 > 관리 템플릿 > 시스템 > 자격 증명 위임 >Oracle 수정 암호화를 더블클릭 합니다.

 



오라클 수정암호화를 사용으로 선택하고 아래 탭 보호수준을 취약으로 변경후 저장합니다.

 

 

2. cmd > Gpupdate /force를 명령어를 입력하고 문제가 해결되는지 확인합니다.

 

만일 안될 경우.. 레지스트리 편집기를 열어서

 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters] "AllowEncryptionOracle"=dword:00000002

AllowEncryptionOracle 값 1 -> 2로 변경한 후 되는지 확인해보세요.

 


   java 설치 및 환경변수 설정

 

 jdk 다운로드 하


OS : Ubuntu 14.04 LTS

JAVA : jdk-8u131

TOMCAT : tomcat 8.0.45


먼저, jdk-8u131-linux-x64.tar.gz를 다운 받아 진행한다.


- sudo tar -zxvf jdk-8u131-linux-x64.tar.gz

/opt/java에 압축을 풀어준다.


- sudo nano /etc/environment

nano 편집기로 PATH 밑에 아래 JAVA_HOME을 추가해준다.

-> JAVA_HOME="/opt/java/jdk1.8.0_131" 추가
-> PATH에 $JAVA_HOME 추가


- source /etc/environment

bash 명령어로 수정한 내용을 갱신한다.


- echo $JAVA_HOME

echo $변수명은 변수명에 해당하는 환경변수 값을 보여준다. (/opt/java/jdk1.8.0_131가 표출)


- sudo vi /etc/profile

profile을 편집기로 열어서 최하단에 export PATH를 삽입한다.

-> export PATH=$PATH:$JAVA_HOME/bin


- source /etc/profile

profile도 갱신해준다.


- java -version

정상적으로 적용되었는지 확인하기 위해 java 혹은 java -version 입력.

아래 문구가 출력되면 정상적으로 적용된 것.

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)




   캣 설치 및 실행


▶ tomcat 다운로드 하기


- sudo tar -zxvf apache-tomcat-8.0.45.tar.gz

압축을 풀어준다.


- cd /opt/tomcat/apache-tomcat-8.0.45/bin

톰캣 디렉토리로 이동한다.


- ./startup.sh

톰캣을 실행한다. (Tomcat started. 문구가 출력된다면 정상적으로 실행된 것)



tomcat startup permission denied 메세지가 출력된다면?

- sudo chown -R 유저명:유저명 apache-tomcat-8.0.45 톰캣 계정을 따로만들어서 톰캣 디렉토리 소유권을 준다 - ls -al ls -al 명령어로 아래와 같이 소유권이 잘 변경되었는지 확인해준다. drwxr-xr-x 3 root root 4096 Jul 10 10:30 . drwxr-xr-x 4 root root 4096 Jul 10 01:49 .. drwxr-xr-x 9 유저명 유저명 4096 Jul 10 09:41 apache-tomcat-8.0.45


- netstat -ntl

이제 다시 실행해보고 톰캣이 정상 실행 되면, 8080 포트가 아래와 같이 열려있는지 확인한다.


Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::8009                 :::*                    LISTEN     
tcp6       0      0 :::8080                 :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN





증상 )


SSD에 윈도우를 재설치하려니 위와 같은 메세지가 팝업되었습니다. 


"이 하드 디스크 공간에 Windows를 설치할 수 없습니다. Windows를 NTFS로 포맷된 파티션에 설치해야 합니다."

"이 하드 디스크 공간에 Windows를 설치할 수 없습니다. 파티션의 유형을 인식할 수 없습니다."

"이 디스크에 Windows를 설치할 수 없습니다. 선택한 디스크가 GPT 파티션 스타일입니다."


혹시나 윈도우를 설치하면서 위와 같은 메세지창이 팝업된다면 아래와 같이 조치하길 바랍니다.






해결 )


1. Shift + F10 / Enter; // cmd 콘솔창을 띄운다.

2. Diskpart / Enter; 

3. List disk / Enter; // 디스크 목록을 표시한다.

4. Select disk (윈도우를 설치할 디스크의 숫자) / Enter; // 해당 디스크 개체를 선택한다.

5. Clean // 위에서 Select한 디스크의 구성 정보 또는 모든 정보를 삭제한다.

6. Exit

7. 새로 고침 후 재설치


주의) Clean 명령어는 해당 디스크의 모든 데이터를 영구 삭제하고 디스크 형식까지 초기화 합니다. 

       설치전 소중한 데이터는 꼭 백업하시길 바랍니다!!






위와 같이 정상적으로 설치되는 것을 확인할 수 있습니다.



깨알 tip )


Clean 명령어만 입력하면 disk 형식이 초기화되어 윈도우 설치가 진행되지만 원하는 파티션 스타일로 변환하여 설치할 수도 있습니다.

그 방법은 아래와 같으니 참고바랍니다.

  • UEFI 모드: DiskPart를 사용하여 드라이브를 정리하고 GPT 파티션 스타일로 변환합니다.

    diskpart
    list disk
    select disk <disk number>
    clean
    convert gpt
    exit
    
  • 레거시 BIOS 호환 모드: DiskPart를 사용하여 드라이브를 정리하고 기본 파티션 스타일(MBR)을 사용합니다.

    diskpart
    list disk
    select disk <disk number>
    clean
    exit
    

이때 명령 프롬프트 창을 닫은 다음 Windows 설치 프로그램 설치를 계속할 수 있습니다.













버전 : CentOS 7


1. top 명령어로 리눅스 시스템 프로세스 실시간으로 확인


명령어 : $ top

 - 프로세스의 자원사용 현황을 실시간으로 확인(3초마다 refresh)


결과화면 : 

top - 05:37:07 up  3:25,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7959276 total,  7011384 free,   540156 used,   407736 buff/cache
KiB Swap: 16777212 total, 16777212 free,        0 used.  7101344 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              
    1 root      20   0  193628   6724   3960 S   0.0  0.1   0:04.39 systemd              
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd             
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/0          
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H         
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 migration/0          
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh               
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.78 rcu_sched            
   10 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/0           
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/1           
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/1          
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.13 ksoftirqd/1          
   16 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/2           
   17 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 migration/2          
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/2          
   20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H         
   21 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/3           
   22 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/3          
   23 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/3          
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H

부가설명 : 

키보드의 스페이스바를 누르면 즉시 refresh 가능

키보드의 방향키로 프로세스 목록 확인 가능

q나 Ctrl+C를 눌러서 프로세스 감시창을 닫을수 있습니다.


Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie

tasks : 실행된 전체 프로세스의 수

running : 실행중인 프로세스의 수

sleeping : 유휴상태의 프로세스 수

stopped : 종료된 프로세스의 수

zombie : 좀비 프로세스의 수


%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu(s)(프로세스가 사용하는 CPU 사용률)

us : 사용자의 CPU 사용률

sy : 시스템의 CPU 사용률

ni : nice에 의한 CPU 사용률

id : 사용 되지않는 CPU 사용률

wa : 입출력 대기에 쓰인 시간

hi : 인터럽트(hard interrupt) 처리에 쓰인 시간

si : 인터럽트(soft interrupt) 처리에 쓰인 시간

st : 가상화 환경(하이퍼바이저)에서의 Steal Time


KiB Mem :  7959276 total,  7011384 free,   540156 used,   407736 buff/cache

KiB Mem(메모리 현황 확인)

total : 할당된 전체 메모리

free : 사용하지않는 여유 메모리

used : 사용중인 메모리

buff : 버퍼 메모리


KiB Swap: 16777212 total, 16777212 free,        0 used.  7101344 avail Mem

Swap 메모리 현황(스왑 메모리 - 주 메모리가 부족할때, 하드디스크와 같은 공간을 메모리로 사용하기 위한 가상 메모리를 칭합니다.)

total : 전체 스왑 메모리

free : 사용하지 않는 여유 스왑 메모리

used : 사용중인 스왑 메모리


PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

PID : 해당 프로세스의 ID

USER : 해당 프로세스를 실행시킨 사용자

PR : 해당 프로세스의 우선순위

NI : 해당 프로세스의 Nice Value

VIRT : 해당 프로세스가 사용한 가상 메모리

RES : 해당 프로세스의 사용한 물리 메모리

SHR : 해당 프로세스의 공유 메모리

S : 해당 프로세스의 상태

%CPU : 해당 프로세스의 CPU 사용률

%MEM : 해당 프로세스의 메모리 사용률

TIME+ : CPU 사용시간 값(100분의 1초 단위로 반영)

COMMAND : 프로세스 실행 명령



명령어 : $ top | grep "이름"

- 원하는 프로세스만 확인



2. ps 명령어로 리눅스 시스템 프로세스 실행상태 출력


명령어 : $ ps [옵션]

$ ps ax (간단하게 모든 실행 프로세스를 출력)

$ ps axu (간단하게 모든 실행 프로세스를 출력)

$ ps -e | grep "이름"(해당 이름으로 검색한 결과를 -e 옵션을 주고 모두 출력)

! 리눅스는 옵션 조합이 자유롭기에 얼마든지 원하는 형태로 출력할 수 있습니다.



3. kill 명령어로 해당 프로세스 죽이기 


명령어 : $ kill [옵션]

$ kill -9 pid(해당 프로세스를 -9옵션을 주어 강제종료)

$ kill -15 pid(해당 프로세스를 -15옵션을 주어 작업종료, -9 옵션보다 안정적임)