태그 보관물: 리눅스

리눅스 명령어로 최근 파일만 남기고 지우기

서버를 관리하다 보면 주기적으로 로그를 남기거나 백업 등을 하게 되는데 시간이 지날수록 관련 파일이 쌓이게 된다. 보통 이럴때 find 명령으로 오래된 날짜의 파일을 찾아서 지우는 방법이 있다. 하지만 이 방법은 날짜를 기준으로 하다보니 예상치 못한 이유로 새로운 파일이 생성되지 않으면 결국에는 모든 파일이 지워진다. 우리는 언제나 일정한 개수의 최신 파일이 유지되기를 바란다.

그래서 원하는 개수만큼의 최근 파일만 남기는 간단한 리눅스 명령어 예제를 만들어봤다.

위 예제에 대한 설명은 아래와 같다.

3개의 파일을 1초 간격으로 만든다.

ls 명령으로 파일 목록을 시간 내림차순으로 출력한다.

tail 명령으로 파일 목록의 3번째 라인부터 출력한다.

출력되는 3번째부터 파일부터 rm 명령으로 삭제하면 최근 날짜의 파일 2개만 남는다.

이렇듯 단순히 명령을 조합하여 필요한 기능을 만들 수 있다는 것이 리눅스의 강점이다.

XenServer에서 리눅스 커널 업데이트 후 부팅 오류

XenServer 사용시 리눅스 커널 업데이트 후 재부팅을 하면 아래와 같은 오류가 발생하며 부팅이 안되는 경우가 있습니다.

Using <class ‘grub.GrubConf.Grub2ConfigFile’> to parse /boot/grub/grub.cfg – WARNING:root:Unknown directive load_video – WARNING:root:Unknown directive terminal_output – WARNING:root:Unknown directive else …

이럴경우 아래와 같이 해결할 수 있습니다.

XenServer에 SSH로 접속하셔서 아래의 명령을 입력합니다. <vmname>은 문제가 발생한 가상머신의 이름을 적으시면 됩니다.

 

그리고 아래와 같은 submenu 섹션을 지워줍니다.

내용을 저장하고 편집기를 닫고 오류가 발생했던 가상머신을 다시 실행합니다.

출처 – http://www.charleslabri.com/xenserver-6-1-ubuntu-paravirtualized-will-not-boot-after-kernel-upgrade/

3종 OS별 XULRunner 배포판을 만들면서

XUL로 개발한 프로그램을 리눅스, 맥, 윈도우 3종 OS별로 XULRunner를 포함시켜 배포판을 만들어봤습니다.

별것 아니지만 몰라서 고생했던 내용을 몇가지 적어보겠습니다.

 

터미널에서 xulrunner 실행시 ‘Mozilla XULRunner <Error> – <Error>’ 메시지가 출력되면 다른 버전의 xulrunner로 교체합니다.
6.0 버전이 안정된 버전이라고 합니다. 저는 6.0에서 정상적으로 실행했습니다.

XULRunner와 직접적인 연관은 없는 내용인데 *.app 폴더의 아이콘을 변경해도 바뀌지 않는다면 .DS_store 파일을 지워봅니다.

터미널에서 실행시 키입력을 터미널이 가로채는 등의 문제가 있었습니다. 근본적인 해결방법은 찾지 못해서 터미널을 이용하지 않고 직접 실행시켰습니다. 이 경우 터미널에서 실행하는 것 처럼 -jsconsole 옵션으로 자바스크립트 콘솔창을 띄우지 못합니다. 그래서 스크립트로 직접 띄웠습니다.

* 출처: http://aadima.com/xulrunner/xrdebug.html

 

윈도우

XULRunner 실행 후 오류가 나서 아무런 윈도우가 뜨지 않았어도 프로세스가 종료되지 않고 동작을 하고 있을 가능성이 높습니다. 다시 실행하기전에 프로세스가 완전하게 종료되었는지 확인해야 합니다.

 

리눅스

별다른 문제없이 쉽게 성공했습니다.

 

공통

XULRunner 버전별로 XUL 프로그램 파일 구조가 다를 수 있습니다.

chrome.manifest 파일의 위치가 다르면 chrome.manifest 내의 경로도 달라집니다.

chrome.manifest가 chrome 폴더랑 경로가 같다면
– content myapp chrome/content/

chrome.manifest가 chrome 폴더내에 있다면
– content myapp content/

 

XULRunner로 XUL 프로그램을 실행시 -jsconsole 옵션을 추가하면 디버깅 및 문제를 해결하는데 도움이 됩니다.

$ xulrunner application.ini -jsconsole

 

-jsconsole 옵션을 추가하고 xulrunner를 실행하면 프로그램의 코드를 수정하고 재시작 하여도 캐쉬로 인해 수정하기 이전의 코드로 동작하는 문제가 있습니다.
이때는 prefs.js 파일에 아래의 코드를 추가하여 캐쉬가 되지 않도록 하면 됩니다.

pref(“nglayout.debug.disable_xul_cache”, true);
pref(“nglayout.debug.disable_xul_fastload”, true);

 

XUL이 제공하는 콘솔창에 메시지를 출력하는 방법

* 참고: https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIConsoleService?redirectlocale=en-US&redirectslug=nsIConsoleService#Logging_a_simple_message

 

기타 참고 자료

  • https://developer.mozilla.org/en-US/docs/XULRunner/Deploying_XULRunner_1.8