'IT'에 해당되는 글 152건

  1. 2020.11.21 python gtts 사용 법
  2. 2020.11.08 lsof 사용법
  3. 2019.12.16 python 마우스 실시간 위치 좌표로 표시 6
  4. 2017.10.27 java split() 문자 자르기 684
IT2020. 11. 21. 14:58
반응형

먼저 gtts 를 설치 한다.

pip install gtts

 

my.txt 파일을 하나 만들어 준다.

안녕하세요

간당하게 만들고

 

from gtts import gTTS
import os
 
to = open('my.txt', 'r')
mytext=to.read().replace('\n',' ')
langu='en'
meout=gTTS(text=mytext, lang=langu, slow=False)
meout.save("output.mp3")
to.close()
os.system("start output.mp3")

 

 

저장후 같은 폴더 에서

python text.py 

 

mp3 파일로 음성 파일하나가 만들어 질것이다.

이렇게 하면 구글 읽어 주는 음성 파일을 만들 수 있다.

 

반응형
Posted by Dream Come True
IT2020. 11. 8. 19:14
반응형

lsof 사용법

lsof 는 lisopen files 의 약자로 시스템에서 열린 파일 목록을 알려주고 사용하는 프로세스, 디바이스 정보, 파일의 종류등 상세한 정보를 출력해 준다.

리눅스와 유닉스는 추상화된 파일 시스템(VFS - Virtual File System)을 사용하므로 일반 파일, 디렉터리, 네트워크 소켓, 라이브러리, 심볼릭 링크 등도 모두 파일로 처리되며 lsof 에서 상세한 정보를 확인할 수 있다.

 

유닉스마다 고유의 lsof 와 비슷한 용도의 명령어가 있지만 명령어와 옵션이 제각각이고 출력 정보가 상이하여 OS 가 바뀌면 사용하기가 힘들다.

lsof 는 리눅스, AIX, Solaris, FreeBSD, Mac OS X 등 종류에 상관없이 일관된 옵션과 출력 형식을 갖는 장점이 있다.

 

 

File

모든 열린 파일 출력 

옵션 없이 lsof 를 실행하면 모든 열린 파일 정보를 출력한다.

$ lsof

 

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 3932 /sbin/init init 1 root mem REG 253,0 65928 784927 /lib64/libnss_files-2.12.so init 1 root DEL REG 253,0 784911 /lib64/libc-2.12.so init 1 root DEL REG 253,0 785325 /lib64/libgcc_s-4.4.7-20120601.so.1.#prelink#.YDRQV5 init 1 root DEL REG 253,0 784939 /lib64/librt-2.12.so init 1 root DEL REG 253,0 784935 /lib64/libpthread-2.12.so.#prelink#.0jHMuJ init 1 root DEL REG 253,0 785344 /lib64/libdbus-1.so.3.4.0.#prelink#.HCYJdq init 1 root mem REG 253,0 39896 785047 /lib64/libnih-dbus.so.1.0.0 init 1 root mem REG 253,0 101920 785049 /lib64/libnih.so.1.0.0 init 1 root DEL REG 253,0 784904 /lib64/ld-2.12.so init 1 root 0u CHR 1,3 0t0 4160 /dev/null init 1 root 1u CHR 1,3 0t0 4160 /dev/null init 1 root 2u CHR 1,3 0t0 4160 /dev/null init 1 root 3r FIFO 0,8 0t0 8845 pipe init 1 root 4w FIFO 0,8 0t0 8845 pipe init 1 root 5r DIR 0,10 0 1 inotify init 1 root 6r DIR 0,10 0 1 inotify init 1 root 7u unix 0xffff880037504680 0t0 8846 socket

 

 

 

컬럼별 의미는 다음과 같다.

  1. COMMAND : 실행한 명령어
  2. PID : process id
  3. USER : 실행한 사용자
  4. FD: File Descriptor, 파일의 종류. 
    1. cwd: current working directory
    2. rtd: root directory
    3. mem : memory-mapped file
    4. txt: program text (code and data);
  5. TYPE: 파일 종류
    1. DIR: 디렉터리
    2. CHR:  character special file
    3. REG: regular file
    4. unix: 유닉스 도메인 소켓 (MySQL 등이 사용하는 소켓으로 로컬 프로세스에서만 사용 가능하며 TCP/UDP 보다 속도가 매우 빠름)
  6. DEVICE : 장치 번호
  7. SIZE/OFF: 파일의 크기나 오프셋
  8. NODE: 노드 번호
  9. NAME:  파일명

 

특정 사용자의 열린 파일 출력 

-u 옵션으로 사용자를 지정할 수 있다.

 

lsof -u buster|more

 

COMMAND    PID   USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd   1096 buster  cwd       DIR              259,5      4096          2 /
systemd   1096 buster  rtd       DIR              259,5      4096          2 /
systemd   1096 buster  txt       REG              259,5   1640496    7351380 /usr/lib/systemd/systemd
systemd   1096 buster  mem       REG              259,5   1332096    7349471 /usr/lib/libm-2.32.so
systemd   1096 buster  mem       REG              259,5    153696    7346531 /usr/lib/libudev.so.1.6.18
systemd   1096 buster  mem       REG              259,5     42976    7346319 /usr/lib/libffi.so.7.1.0
systemd   1096 buster  mem       REG              259,5   1574704    7346533 /usr/lib/libunistring.so.2.1.0
systemd   1096 buster  mem       REG              259,5    153560    7346354 /usr/lib/libgpg-error.so.0.30.0
systemd   1096 buster  mem       REG              259,5     71648    7346382 /usr/lib/libjson-c.so.5.1.0
systemd   1096 buster  mem       REG              259,5     34424    7346252 /usr/lib/libargon2.so.1
systemd   1096 buster  mem       REG              259,5    585320    7346511 /usr/lib/libssl.so.1.1
systemd   1096 buster  mem       REG              259,5    399904    7346290 /usr/lib/libdevmapper.so.1.02

 

특정 파일을 사용하는 프로세스 보기

특정 파일을 사용하고 있는 프로세스의 자세한 정보를 볼 수 있다. 옵션 없이 파일의 경로를 지정하면 된다.

$ lsof /var/log/httpd/access_log

 

 

특정 디렉터리내 열린 파일 보기

특정 디렉터리 하위의 열린 파일을 표시하고 싶은 경우가 있다. +D 옵션 뒤에 디렉터리 경로를 명시하면 된다. 아래는 /tmp 디렉터리 밑에 열린 파일을 표시한다.

$ lsof +D /tmp

Port

특정 포트를 사용하는 프로세스 정보 보기

개인적으로 가장 많이 쓰는 명령어이다. -i 옵션뒤에 프로토콜과 포트를 명시해 주면 된다. 다음은 TCP 22번 포트(ssh)를 쓰는 프로세스의 정보를 출력한다.

$ lsof -i TCP:22 

 


특정 명령어가 사용하는 포트

apache httpd 같은 경우 fork 하여 여러 개의 프로세스가 뜨게 된다. -c 옵션과 httpd 를 주면 httpd 가 오픈한 파일 정보를 출력한다.

$ lsof -c httpd

 

 

포트 범위 지정

TCP 포트 22 번 에서 80번 까지 출력

$ lsof -i TCP:22-80

 

 

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME master 1349 root 12u IPv4 12888 0t0 TCP localhost:smtp (LISTEN) master 1349 root 13u IPv6 12890 0t0 TCP localhost:smtp (LISTEN) sshd 1550 root 3u IPv4 13931 0t0 TCP *:ssh (LISTEN) sshd 1550 root 4u IPv6 13933 0t0 TCP *:ssh (LISTEN) sshd 1895 root 3r IPv4 15005 0t0 TCP 192.168.152.131:ssh->192.168.152.1:55859 (ESTABLISHED) sshd 7316 root 3r IPv4 22126 0t0 TCP 192.168.152.131:ssh->192.168.152.1:57127 (ESTABLISHED) sshd 7320 lesstif 3u IPv4 22126 0t0 TCP 192.168.152.131:ssh->192.168.152.1:57127 (ESTABLISHED) httpd 7400 root 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7402 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7403 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7404 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7405 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7406 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7407 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7408 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) httpd 7409 apache 4u IPv6 22492 0t0 TCP *:http (LISTEN) sshd 7474 root 3r IPv4 22763 0t0 TCP 192.168.152.131:ssh->192.168.152.1:57197 (ESTABLISHED)

 

 

service name 대신 port 번호 표시

IANA 에 등록한 well known 포트는 /etc/services 에 지정되어 있으므로 서비스를 파악하기 용이하다. 하지만 자체 개발한 서비스가 /etc/services 에 등록된 포트를 사용할 경우에는 서비스 이름보다 포트 번호로 표시하는 게 낫다. -P 옵션을 사용하면 서비스 이름대신 포트 번호로 표시해 준다.

예로 java 로 서비스하고 있는 모든 listen 하는 포트를 표시하려면 아래 명령을 실행한다.

$ lsof -i TCP -P |grep java|grep LISTEN

 

 

 

IPv4 또는 IPv6 포트만 표시

-i 옵션 뒤에 4(IPv4), 또는 6(IPV6) 를 지정하여 특정 IP 의 버전만 확인할 수 있다./

$ lsof -i 4

 

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rpcbind 1068 rpc 6u IPv4 11858 0t0 UDP *:sunrpc rpcbind 1068 rpc 7u IPv4 11860 0t0 UDP *:819 rpcbind 1068 rpc 8u IPv4 11861 0t0 TCP *:sunrpc (LISTEN) rpc.statd 1086 rpcuser 5r IPv4 11949 0t0 UDP *:838 rpc.statd 1086 rpcuser 8u IPv4 11955 0t0 UDP *:47492 rpc.statd 1086 rpcuser 9u IPv4 11959 0t0 TCP *:38374 (LISTEN) cupsd 1159 root 7u IPv4 12195 0t0 TCP localhost:ipp (LISTEN)

TCP/UDP 포트 표시

-i 옵션은 모든 네트워크 포트를 표시한다. -i 뒤에 프로토콜을 명시하면 해당 프로토콜 관련 포트만 표시한다.

$ lsof -i

 

$ lsof -i TCP

 

$ lsof -i TCP

 

 

Filter

사용자 지정 옵션인 -u 에 ^를 추가하면 특정 사용자는 제외할 수 있다. 다음은 lesstif 와 root 사용자가 열은 파일은 제외하고 정보를 출력한다.

$ lsof -u^lesstif -u ^root

 

특정 프로세스가 오픈한 파일 표시

특정 프로세스가 오픈한 파일만 표시한다. -p(소문자) 옵션뒤에 PID 를  주면 된다.

$ lsof -p 123

 

 

특정 사용자가 오픈한 모든 프로세스 중지

-t 옵션은 자세한 정보를 출력하지 않고 pid 정보만 출력한다. 다음 명령은 lesstif 사용자로 구동한 프로세스의 id 를 리턴한다.

$ lsof -t -u lesstif

 

이를 응용하여 kill 명령어에 pid 만 전달할 수 있으므로 아래와 같이 사용하면 lesstif 사용자의 모든 프로세스를 중지하게 된다.

kill -KILL `lsof -t -u lesstif`

 

 

반응형
Posted by Dream Come True
IT/인터넷 마케팅2019. 12. 16. 13:38
반응형

아래소스를 사용하면 pyautogui 마우스 좌표를 쉽게 표시 할 수 있습니다.

Here is a short Python 3 : python3 버젼
#! python3
import pyautogui, sys
print('Press Ctrl-C to quit.')
try:
    while True:
        x, y = pyautogui.position()
        positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
        print(positionStr, end='')
        print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:
    print('\n')

 

 

 


Here is the Python 2 version: python2 버젼


#! python
import pyautogui, sys
print('Press Ctrl-C to quit.')
try:
    while True:
        x, y = pyautogui.position()
        positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)
        print positionStr,
        print '\b' * (len(positionStr) + 2),
        sys.stdout.flush()
except KeyboardInterrupt:
    print '\n'

 

 

결과는 다음과 같이 실시간으로 표시 된다.

>>> pyautogui.size()
(1920, 1080)
>>> pyautogui.position()
(187, 567)

 

반응형

'IT > 인터넷 마케팅' 카테고리의 다른 글

python 엑셀 자동화 [업무자동화]  (13) 2021.02.24
defold 한글 메뉴얼  (4) 2020.12.17
python 특정 디렉토리 파일 이동 프로그램  (7) 2012.01.10
python Function Description  (4) 2010.12.07
log 파일 생성 raw input  (6) 2010.12.07
Posted by Dream Come True
IT/java2017. 10. 27. 00:45
반응형

class Foo {

  public static void main(String[] args) {

    String s;

    String[] array;


    //////////////////////////////////////////////////

    // 탭 문자(Tab)로 구분된 문자열 분해


    // HTML에서는 탭문자 표현이 곤란하기에

    // 아래 예제에서 탭문자를 [TAB] 이렇게 표현했는데

    // 예제 실행시에는 진짜 탭문자로 바꾸어 주어야 합니다.


    s = "자장면[TAB]탕수육[TAB]짬뽕[TAB]칼국수";

    array = s.split("\t");

    dumpArray(array);



/* 출력 결과:


array[0] = 자장면

array[1] = 탕수육

array[2] = 짬뽕

array[3] = 칼국수


*/




    //////////////////////////////////////////////////

    // 마침표(.)로 구분된 문자열 분해

    s = "철수.영희.맹구.배영만";

    array = s.split("\\.");

    dumpArray(array);



/* 출력 결과:


array[0] = 철수

array[1] = 영희

array[2] = 맹구

array[3] = 배영만


*/



  }



  // 배열을 화면에, 요소별로 알기 쉽게 출력

  public static void dumpArray(String[] array) {

    for (int i = 0; i < array.length; i++)

      System.out.format("array[%d] = %s%n", i, array[i]);

  }




}

반응형

'IT > java' 카테고리의 다른 글

자바 자문 자답 DecimalFormat 에러 발생  (627) 2017.10.21
자바 랜덤 숫자 발생 정렬 후 반환  (353) 2017.10.18
Posted by Dream Come True