별것 아니지만 자꾸 까먹어서 남김.


DB open from file

% sqlite3 db.sqlite3



MySQL 

SQlite3 

show databases;

.database 

show tables; 

.table 

desc $TABLE 

.schema $TABLE




반응형

'Linux' 카테고리의 다른 글

[UDP] 특성  (303) 2016.12.06
[Linux] Bonding 본딩 설정  (178) 2016.12.05
[GDB] 자주 쓰는 명령어  (6) 2016.11.17
ctags를 cpp에서 사용하려면  (6) 2015.11.19
리눅스에서 가장 많은 CPU를 사용하는 프로세스 찾는 명령  (6) 2015.08.06

보통 프로세스가 죽고나서 dump된 core 파일을 보다보니

그때마다 사용하는 명령어를 매번 검색해서 찾기가 불편하여

이곳에 모아서 보려함.



* GDB 명령어

2017.12.29


심볼 테이블에 대해 확인하기 위한 명령어 예시

구조체 안의 정보를 찾아서 확인한다고 봐도 될 것 같다.




(gdb) bt
(gdb) frame 9
#9  0x00002b459abc0e5f in test_GenCancelTrct (pStParser=0x7bb3590, pStTrct=0x2aab1a951e50) at test_Utility.c:834
834 test_Utility.c: 그런 파일이나 디렉토리가 없음.
    in test_Utility.c

(gdb) whatis pStTrct
type = stTrct_t *

(gdb) ptype pStTrct
 type = struct _stTrct_t { ... test_common_msg_t *pStRequest; ... } *

(gdb) ptype pStTrct->pStRequest type = struct { ... test_parsed_msg_t *test_parsed_msg; ... } *

(gdb) ptype pStTrct->pStRequest->test_parsed_msg type = struct { ... test_header_index_t test_header_index[100]; ... } *

(gdb) ptype pStTrct->pStRequest->test_parsed_msg->test_header_index type = struct { ... int test_added_current_sub_index; ... }

(gdb) ptype pStTrct->pStRequest->test_parsed_msg->test_header_index[84].test_current_sub_index type = int

(gdb) p pStTrct->pStRequest->test_parsed_msg->test_header_index[84].test_current_sub_index $1 = 10923


위에서 test_header_index의 배열이 최대 114개까지 사용할 수 있는데

이를 일일이 실행하기 너무 어려움, 개수를 세지도 못하겠음

이렇게 하면 i의 index가 하나씩 증가하면서 위에 보다는 조금 편해짐

하지만 114번 일일이 반복 해야하므로 불편하기는 마찬가지


(gdb) set $i=0 
(gdb) p pTrct->pStRequest->test_parsed_msg.test_header_index[$i++].test_curreut_sub_index


while문을 사용하니 완전 편리하다.

인덱스 정보까지 출력해주니 보기에도 좋다.



(gdb) set $i=0
(gdb) while($i < 115)
>printf "[%d] %d\n", $i, pTrct->pStRequest->test_parsed_msg.test_header_index[$i].test_current_sub_index
>set $i=$i+1
>end




* 참고한 페이지

https://ftp.gnu.org/old-gnu/Manuals/gdb/html_node/gdb_191.html

https://sourceware.org/gdb/onlinedocs/gdb/Symbols.html



2016.11.17


(gdb) info threads

(gdb) bt full

(gdb) info args

(gdb) info locals

(gdb) info variables

(gdb) thread apply all bt           <-- 프로세스 종료 직전 모든 쓰레드의 백 트레이스 정보


(gdb) x/256x 0x1234abcd         <-- x/개수x 주소



현재 버퍼의 index를 확인하고 그에 대한 버퍼의 내용 조회하는 명령



# cltr_memory_datashm_dump(data_shm, &_cltr_bkup.msg[cnt++], bkup_period)

# [전달하는 변수 값 확인]

(gdb) p cnt

 

$47 = 14

# [백업 버퍼의 정보를 cnt 값으로 조회]

(gdb) p *_stcltr_note.bnote@14




* 참고한 페이지


http://www.delorie.com/gnu/docs/gdb/gdb_25.html

http://yusufonlinux.blogspot.kr/2010/11/debugging-core-using-gdb.html

반응형

C언어는 ctags -R ./ 명령으로 해왔는데 C++은 안된다.

찾아보니 아래처럼 옵션이 좀 더 필요함.

ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

출처 : http://stackoverflow.com/questions/1932396/c-source-tagging


vim에서 tag된 항목이 많아서 선택하려면 :ts 나 :tselect

가장 편한건 g + Ctrl + ]

출처 : https://kldp.org/node/140376

반응형

CPU 사용량을 감시하다가 100%가까이 사용하게 되는경우

어떤 프로세스들이 사용했는지 남길때 사용하면 좋을 것 같습니다.


CPU 사용량이 많은 순서로 정렬

% ps -eo pcpu,pid,user,args --no-headers | sort -t. -nk1,2 -k4,4 -r | head -n 5

99.9 11615 nofv      python ./test.py

39.0 20413 vvccsb   gmi7tcsy

 8.7  5934 switch gmi7tcsy

 3.5 28891 nofv      gmsfrsc

 2.7 18960 vcppcs     gmcdrr

반응형

% cat input

/TEMP35FF/TEMP3600/TEMP3601/TEMP3602

/TEMP3603/TEMP3604/TEMP3605/TEMP3606

/TEMP3607/TEMP3608/TEMP3609/TEMP360A

/TEMP360B/TEMP360C/TEMP360D/TEMP360E

/TEMP360F/TEMP3610/TEMP3611/TEMP3612

/TEMP3613/TEMP3614/TEMP3615/TEMP3616

/TEMP3617/TEMP3618/TEMP3619/TEMP361A

/TEMP361B/TEMP361C/TEMP361D/TEMP361E

/TEMP361F/TEMP3620/TEMP3621/TEMP3622

/TEMP3623/TEMP3624/TEMP3625/TEMP3626

/TEMP3627/TEMP3628/TEMP3629/TEMP362A

/TEMP362B/TEMP362C/TEMP362D/TEMP362E

...


와 같은 내용이 파일에 있는데 개행문자를 제거하는 방법

sed로 하는 방법이 있긴 했으나, 그보다 더 간결한 방법이 있었습니다.


input 파일에서 \n을 없애고 그 결과를 output 파일에 저장 

% tr '\n' ' ' < input > output

반응형

라인단위로 문자열의 개수구하는 방법은 찾기가 쉬웠는데

1 라인에서 중복되는 문자열 개수 구하는 방법은 의외로 찾기가 어려웠습니다.


예를들어 1라인에 아래의 문자열이 있을 때, '/' 슬래쉬의 개수를 구하고 싶은 경우

파일명은 input이라고 하면

/TEST1/TEST2/TEST3/TEST4/TEST5/TEST6/TEST7/TEST8/TEST9/TEST10/TEST11/TEST12/TEST13/TEST14/TEST15/TEST16/TEST17/TEST18/TEST19/TEST20/TEST21/TEST22/TEST23/TEST24/TEST25/TEST26/TEST27/TEST28/TEST29/TEST30/TEST31/TEST32/TEST33/TEST34/TEST35/TEST36/TEST37/TEST38/TEST39/TEST40/TEST41/TEST42/TEST43/TEST44/TEST45/TEST46/TEST47/TEST48/TEST49/TEST50/TEST51/TEST52/TEST53/TEST54/TEST55/TEST56/TEST57/TEST58/TEST59/TEST60/TEST61/TEST62/TEST63/TEST64/TEST65/TEST66/TEST67/TEST68/TEST69/TEST70/TEST71/TEST72/TEST73/TEST74/TEST75/TEST76/TEST77/TEST78/TEST79/TEST80/TEST81/TEST82/TEST83/TEST84/TEST85/TEST86/TEST87/TEST88/TEST89/TEST90/TEST91/TEST92/TEST93/TEST94/TEST95/TEST96/TEST97


awk 와 gsub으로 슬래쉬 '/' 개수 구하는 명령

% awk '{print gsub(/\//,"")}' input

97

반응형

test 파일에서 좌측 1글자 삭제

% sed 's/.//' test


test 파일에서 좌측 3글자 삭제

% sed 's/...//' test


18시에 발생한 로그만 출력

% sed -n '/\[18:/ p' test

로그에서 시간의 형태 -> [18:59:56.054] ... 

'[18:' 과 일치하는 열만 출력함.





반응형

# userdel -r test

userdel: user teset is currently logged in


계정으로 로그인했던 터미널을 로그아웃 했는데도 계속 발생하는 경우

해당 계정의 프로세스가 기동중인 경우에도 동일한 에러가 발생한다.


# lsof -u test

명령어 결과에 test 계정의 프로세스가 현재 기동중인게 있는 경우


# pkill -u test

프로세스를 전부 종료시킴.

다시 userdel 명령을 수행하면 정상적으로 계정 삭제됨

반응형

+ Recent posts