'Command Shell@'에 해당되는 글 13

  1. 2010.11.05 Oracle APEX 를 실행하는 프로그램 찾기
  2. 2010.08.27 Tomcat 표준출력을 파일로 남기기
  3. 2010.04.22 Windows에서 디스크 용량 보기 명령어
  4. 2010.03.04 윈도우 프로세스 - 커맨드 프로세스 구분하기
  5. 2010.02.20 shift
  6. 2010.02.20 pause
  7. 2009.12.13 prnmngr
  8. 2009.11.11 키 입력 스크립트
  9. 2009.08.23 레지스트리
  10. 2009.07.18 파일 이름 바꾸기
  11. 2009.06.29 윈도우즈 파일 실행 순서
  12. 2009.04.04 윈도우 서비스 시작/정지/상태보기
  13. 2009.04.01 ipchange.bat

Oracle APEX 를 실행하는 프로그램 찾기

간만에 개발서버에 접속하려는데 Oracle APEX 에 접속이 되지 않는다.
어떤 서비스를 실행시켜야 하는지 모르겠다.
포트가 8080이니깐 찾아보자.
> netstat -nao | findstr 8080
  TCP    127.0.0.1:8080         0.0.0.0:0              LISTENING       1388
(외부에서는 접속 못하게 되어 있네.)

PID가 1388인 프로세스를 찾자.
> tasklist | findstr 1388
TNSLSNR.EXE                 1388 RDP-Tcp#133             0      7,852 K

아마 오라클 서비스겠지.
>sc qc "OracleXETNSListener"
[SC] GetServiceConfig SUCCESS

SERVICE_NAME: OracleXETNSListener
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 0   IGNORE
        BINARY_PATH_NAME   : C:\oraclexe\app\oracle\product\10.2.0\server\BIN\tn
slsnr.exe
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : OracleXETNSListener
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem


Tomcat 표준출력을 파일로 남기기

고객사에 모듈 업그레이드를 했는데 에러가 난다.
로그를 확인해야 하는데 로그가 없다.
클래스 로딩되는 상황을 확인해야 하는데 표준출력이 어디로 가는건지...

콘솔에서 starup.bat 를 실행시키거나 startup.bat 를 더블클릭해서 Tomcat을 시작하는 경우 표준출력이 콘솔에 출력되어서 지나간 로그를 확인하기가 힘들다.
(Tomcat 버전에 관계없이 당연한 현상임)


Tomcat이 새창으로 구동되어서 표준출력을 파일로 리다이렉션을 시켜도 파일이 제대로 남지 않는다.
로그가 많아서 필요한 로그는 새창에서 지나가 버림.
startup.bat, catalina.bat 를 이것저것 수정해도 안됨.

로그를 남기려면 새창을 띄우면 안됨.
새창을 띄우는 부분을 찾아서 수정하면 될거 같다.


또는
rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% > c:/tomcat.log
goto end

이렇게 하면 표준출력이 파일로 떨어진다.
(서비스로 구동시키면 stdout.log, stderr.log 가 생길거야.)

- 회고
운영되는 서버를 왜 이렇게 구동시키지? 우....띠
예전에 이런 문제가 발생했을때 확실히 분석해서 방법을 알아뒀으면 오늘같은 고생은 안했을건데.

로그보고 에러 잡는 일이 남았다. 이제부터 진짜 일이지.

Windows에서 디스크 용량 보기 명령어

1. dir 명령을 사용하면 사용가능한 용량이 나온다.
> dir | findstr 남음
               2개 디렉터리   6,948,356,096 바이트 남음

2. 찾아보니 fsutil 이라는게 있다.
> fsutil volume diskfree E:
사용 가능한 공간(KB): 1119924224
전체 공간(KB): 20971528192
사용 가능한 빈 공간(KB): 1119924224

그래도 부족하다.

3. NTFAQ에 원하는 내용이 있다.
- df.vbs
Set oWMIService = GetObject("winmgmts:")
Set oLogicalDisks = oWMIService.InstancesOf("Win32_LogicalDisk")

'Wscript.Echo "Filesystem Size Used Available Use%"
Wscript.Echo "Filesystem    Size          Available"

For Each oLogicalDisk In oLogicalDisks
    Wscript.Echo oLogicalDisk.DeviceID & "            " & oLogicalDisk.Size & "   " & oLogicalDisk.Freespace
Next

Set oLogicalDisks = Nothing
Set oWMIService = Nothing

- df.bat
@echo off
CScript E:\bin\df.vbs //NoLogo

> df
Filesystem    Size          Available
C:            20971528192   1120002048
D:            20971528192   16167817216
E:            38072369152   6948356096
F:

[todo] \t 로 제대로 정렬되게 할 것

윈도우 프로세스 - 커맨드 프로세스 구분하기

커맨드 창에서 실행시킨 프로그램을 작업관리자에서 확인해보면 구분이 되지 않는다.


모두 cmd 로만 보여서 구분이 되지 않는다.
실행배치파일에 title 구문을 사용해서 구분을 하도록 하면 될거 같다.


tasklist 에서 창제목을 보여주지 않기 때문에 findstr 을 사용하지 않고 필터옵션을 사용한다.
([각주:1]필터옵션은 정확해야 하므로 tasklist -v | findstr server 명령을 사용하는 것이 편하다)
프로세스에서는 cmd 로 보이지만 응용 프로그램 탭에서는 title 로 수정한 창제목이 보인다.

- 참고
http://devotionnoath.tistory.com/496
  1. 2010-03-15 추가 [본문으로]

shift

@echo off
echo - %1
shift
echo - %1

> test.bat
-
-

> test.bat a
- a
-

> test.bat a b
- a
- b

pause

pause>nul

prnmngr

> cscript %SystemRoot%/system32/prnmngr.vbs -l

> cscript %SystemRoot%/system32/prnmngr.vbs -t -p "Canon iR2270/iR2870 UFR II" //기본 프린터 설정

키 입력 스크립트

배치파일에서 사용할 키 입력 스크립트
ipchange같이 메뉴에서 선택하는 경우에 사용함.

'Usage : enterKey.vbs KEY DELAY_MILLISECOND TRUE | FALSE

Set sh = WScript.CreateObject("WScript.Shell")
Set args = WScript.Arguments
cnt = args.Count

key = args.Item(0)
delay = 0
isEnter = True

If cnt > 1 Then delay = args.Item(1)
If cnt > 2 Then isEnter = args.Item(2)

WScript.Sleep delay
sh.SendKeys key
If isEnter Then sh.SendKeys vbCr

> enterKey.vbs test 'test를 입력한다.
> enterKey.vbs test 1000 '1초를 쉬고 test를 입력한다.
> enterKey.vbs test 1000 True '1초를 쉬고 test를 입력하고 엔터를 입력한다.

> enterKey.vbs "" 500 True '엔터만 입력?????

레지스트리

- reg 파일
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Update]
"UpdateMode"=dword:0
새로 만들 키이름은 쌍따옴표(" ")로 묶는다.
문자열값[종류:REG_SZ]은 키값에 쌍따옴표를 붙인다. (예: "키이름"="키값")
DWORD값[종류:DWORD]은 키값 앞에 dword: 를 붙인다. (예: "키이름"=dword:키값)
확장자는 .reg 로 만든다.

9x/Me 에서는 Windows Registry Editor Version 5.00 를 REGEDIT4 로 변경한다.

- 시작프로그램 레지스트리 위치
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

파일 이름 바꾸기

CD를 MP3로 변환하고 파일 이름을 바꿔야 한다.
가끔씩 간단한 배치파일을 만들어서 작업을 한다.

> dir /b > list.bat

Track01.mp3
Track02.mp3
...

파일을 수정한다.
에디터 플러그 매크로 등을 이용한다.
rename Track01.mp3 "Suite No.1 in C major BWV1066_1.mp3"
rename Track02.mp3 "Suite No.1 in C major BWV1066_2.mp3"
...

윈도우즈 파일 실행 순서

동일한 실행파일명이 존재하는 경우 실행되는 순서는
  1. exe
  2. bat
  3. cmd

윈도우 서비스 시작/정지/상태보기

- services.msc

- net start | stop SERVICE_NAME

- sc start | stop | query | delete SERVICE_NAME
> sc query mysql //services.msc를 실행시키지 않고도 콘솔에서 서비스의 실행상태 확인가능
SERVICE_NAME: mysql
        TYPE               : 10  WIN32_OWN_PROCESS
        STATE              : 1  STOPPED
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0


- 서비스가 있는지 확인

> sc query | findstr /i couch
SERVICE_NAME: Apache CouchDB01d0440336206df0
DISPLAY_NAME: Apache CouchDB


-

[SC] StartService FAILED 1053: //서비스등록시 binpath에 입력한 인자가 잘못 되었다.


ipchange.bat

@echo off
cls
:start
echo.
echo 1. DHCP 사용
echo 2. 10.20.30.40 사용
echo 0. EXIT
echo.

set interfaceName=로컬 영역 연결
set choice=
set /p choice=

if not '%choice%' == '' set choice=%choice:~0,1%

if '%choice%' == '1' goto menuDHCP
if '%choice%' == '2' goto menuStatic

goto end

:menuDHCP
netsh interface ip set address name="%interfaceName%" source=dhcp
netsh interface ip set dns name="%interfaceName%" source=dhcp

goto check

:menuStatic
rem netsh interface ip delete dns "%interfaceName%" all
rem netsh interface ip delete wins "%interfaceName%" all

netsh interface ip set address name="%interfaceName%" source=static addr=10.20.30.40 mask=255.0.0.0 gateway=10.20.30.1 gwmetric=1
netsh interface ip set dns name="%interfaceName%" source=static addr=221.139.13.130

goto check

:check
ipconfig /all
pause
exit

:end