개발/Server

[SERVER / Linux / 명령어] touch

터틀넥 2022. 9. 27. 23:06
에러 회고(?)

 

오늘 유지보수한 jsp 파일을 운영서버에 배포했는데, 503 오류가 발생했다

 

an error occurred while processing the request.

  : 요청을 처리하는 동안 오류가 발생했습니다.... 살려줘 이 인간아...

 

분명히 로컬에서는 돌아간 소스였는데 말이지... 하고 코드를 수정하고 다시 배포하고 또 저 오류가 뜨고.. 그래서 코드 다시 수정하고.. 이 짓을 한 100번은 한 것 같다.

 

그래서 '설마 jsp 캐싱 문제인가...?' 싶어서 리눅스에서 touch 명령어로 jsp파일을 건드려줬더니 귀신같이 동작했다.

 

뭐... 잘되긴 해서 다행이긴 하다만... 항상 별거 아닌 오류로 문제를 해결하게 되니, 내 얕은 지식에 대한 좌절감도 느끼지만 

 

한편으로는 겸손함을 배우게 되는 것 같다...😂

 

여튼 오늘 사용하게 된, Linux 명령어touch 에 대해 알아보자.

 

 

 

1.  개념

touch 명령어는 직관적인 이름처럼 건드려서(touch) 파일을 생성하거나, 지정된 파일의 날짜 시간을 변경하는 명령어이다. 아무런 옵션 없이 사용할 경우 서버 시간으로 파일이 수정된다.

 

파일이 존재하지 않을 경우, 크기가 0인 파일을 생성하고 한번에 여러 이름의 파일을 생성할 수 있다.

 

 

2. 사용 방법

 

#touch [옵션] [파일이름]

 

1) -m

  - 파일 생성, 생성하고자 하는 파일을 서버시간으로 세팅하여 생성

 

👀 사용 예시

  (서버 시간이 9월 27일 23시 22분이라고 가정)

$ touch -m apple
$ ls -l
-rwxrwxrwx user user 0 Sep 27 23:22 apple

 

2) -t

  - 사용자가 지정한 시간으로 접근 시간, 수정 시간을 수정되고 변경 시간은 현재 시간으로 수정됨.

  - 시각은 YYYYMMDDhhmm.SS(년월일시간분.초) 형태로 입력

 

👀 사용 예시

$ touch -t 202009221045.30 a

 

 

3.  touch의 효용성(?)

 

오늘 알아본 -m, -t 말고도 여러 옵션이 있다.

 

touch 명령어의 주된 사용 목적은 앞서 설명 했듯 파일의 수정 시간 업데이트다.

 

touch 명령어를 사용하여 jsp 파일의 수정 시간을 바꾸어주면, WAS는 해당 파일이 바뀐 것을 새로운 파일인 것으로 인지하고, java로 변환 후 class로 컴파일하여 적용을 한다.

 

오늘 내가 touch를 활용한 경우도 실제로 파일을 수정하진 않았지만, touch를 활용해 서버를 속인(?) 것이다.

(이 부분은 나중에 따로 기고하도록 하겠습니다...)

 

여튼 touch 명령어 유용하게 잘 사용했다! 

 

다음엔 이거 안쓰고 그냥 애초에 반영 잘 됐으면,,,😂