2008년 4월 29일 화요일

[사는 이야기] 뭐가 더 중요하지

4월의 시작에 이 책을 읽기 시작했다.
시간이 중요하다는 생각은 오래전 부터 하고 있었지만. 책의 말미에 가서 실천은 그 무엇보다 중요하다는 결론을 접하곤 나서 나는 과연 내 꿈을 향해 실천하고 있는가란 생각을 하게 된다. 내 말속에 허세는 없었는지 내 모든 행동에 거만과 겉으로 표현되는 모습만을 바라보며 산것은 아닌가란 생각을 하게 된다.

직장생활이 여유로와 지면서 많은 일들을 벌려 놓았다.
졸업생모임, 외부 프로젝트, 사이버대학교 수강, 영어회화 공부 , 등등등... 하루를 여러개도 쪼개도 하루하루가 피곤하고 왠지 찌들어 산다는 생각을 문뜩 문뜩 하고 있다.미래의 내 모습을 어찌 만들어 가려고 하는건지 하는 왠지 모를 막연한 미래주의를 표방하며 말이다.

내 시간 관리와 내 모든 노력들이 궁극적인 무엇을 위해 하고 있는 것인지도 말이다.
요즘들어 내 사람에게 이것 저것 요구하는 것도 많이 진것도 어쩌면 내 자신의 미래 조차도 보지 못하고 있기 때문은 아닌지 걱정이 되기도 한다. 왠지 내 스스로가 막연한 목표점만 찍어 놓고 있는것은 아닌지

뭔가 현실화 되고 내가 만든 목표를 위해 현실적인 무엇인가를 해야 할것 같은 압박이 자꾸 나를 누르고 있네.. 이제 마음 굳게 먹고 건강관리를 해야 겠다.. 다시 피게 된 담배가 왜이리도 안끊어 지는지... 한모금을 피고나면 바로 후회하거늘.. 

아직도 마음만 금연이구나..
실천을 해보자. 
실천을 노력해보자..

2008년 4월 9일 수요일

[리눅스] 리눅스를 예약 작업 만들기 - crontab

1. 개요 
 cron(크론)은 원하는 시간에 명령(프로그램)을 시키기 위한 데몬이다.
-  새벽 3시에 서버에 특정 작업을 해줘야하는데 그 때 깨어있을 수 있는가?
- 또는 30분간격으로 HDD의 사용량을 운영자에게 알리도록 해야한다면?
- 매월 초에 자료를 백업 받고 싶다면?
바로 이럴 때 cron은 최고의 해결책을 제시한다.
cron은 항상 지정한 시간이 되었는지 확인을 하여 해당 명령어을 실행하는 것이다.
2. cron 설정
1) crontab 파일 위치 및 조회

리눅스의 제품 종류에 따라 다를 수 있으나 대부분 비슷하다. 
# cd /var/spool/cron/ID 

파일을 직접 수정하지는 않고 명령으로 확인 및 설정 할 수가 있다. 

설정 내용을 조회해 보자. (-l 옵션) 
# crontab -l
no crontab for truefeel

설정한 적이 없어 아직 비어있다.
2) crontab 파일 형식
------    --------  ---------------------------------------------------
필  드      의  미       범  위
------    --------  ---------------------------------------------------
첫번째        분        0-59
두번째        시        0-23
세번째        일        0-31
네번째        월        1-12
다섯번째  요일        0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯번째  명령어     실행할 명령을 한줄로 쓴다.
------    --------  ---------------------------------------------------

- 한 줄당 하나의 명령 (두줄로 나눠서 표시할 수 없음)
- # 으로 시작하는 줄은 실행하지 않는다.
설정을 해보자. (-e 옵션)
crontab -e 을 하면 vi 에디터가 나온다.(환경변수 EDITOR에 따라 다른 에디터를 사용할 수 있다.)

# crontab -e
  30 4,12 * * *  /usr/bin/rsync -avxH --delete /home/oracle/src /temp/src > /dev/null 2>&1

   /home/oracle/src 디렉토리를 /temp/src 로 백업해둠 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일 

  40 1    * * 0  /root/bin/perm_set.sh   > /dev/null 2>&1
  파일/디렉토리 퍼미션 설정, 40분, 새벽 1시, 매주 일요일

 위는 매일 4:30분과 12:30분에 rsync 명령을, 매주 일요일 1:40분에 perm_set.sh를 실행함을 의미한다.
 vi 에디터를 통해 설정을 하므로 중요한 몇 가지 에디터 사용법은 익혀야 한다.
----  -----------------------------------------------------------------------------
키                                                                  의미
----  -----------------------------------------------------------------------------
i          현재 칸에 글을 넣는다.
o         다음줄에 글을 넣는다.
dd       한줄을 삭제한다.
:wq     저장하고 빠져나온다.
ESC    설정중에 명령어 모드(위의 i, o, dd 등을 사용할 수 있는 상태)로 빠져 나온다.
----  -----------------------------------------------------------------------------

3) 설정 예

  시간 설정에서 몇가지 의미있는 것들을 알아보자.

  - '*'표시는 해당 필드의 모든 시간을 의미한다.
  - 3,5,7 와 같이 콤마(,)로 구분하여 여러 시간대를 지정할 수 있다.
  - 2-10와 같이 하이픈(-)으로 시간 범위도 지정할 수 있다.
  - 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다.
    (2~10까지 3간격으로. 즉, 3,6,9를 의미함)

 원하는 시간                                   형  식
 매주 토요일 새벽 2:20                      20  2     *  *  6  명령어
 매일 오후 4,5,6시                            0  4-6   *  *  *  명령어
 매일 2시간간격으로 5분대에              5  */2 *  *  * 명령어
 매월 1일 새벽 1:15                          15  1   1  *  *  명령어
 1,7월 1일 새벽 0:30                         30  0   1  1,7  *  명령어


 * crontab -e 으로 설정 후 빠져나오면 바로 적용됩니다.
 * 특정 사용자는 사용할 수 없도록 설정하고 싶은 경우 
 #  /etc/cron.allow : 허용할 사용자 ID 목록
 # /etc/cron.deny  : 거부할 사용자 ID 목록
  cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
  cron.deny  파일이 있으면 이 파일에 들어있는 ID는 사용 불가
 * /dev/null  2>&1   이 의미하는 것은 

  지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
  뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.

2008년 4월 8일 화요일

[리눅스] 기초적인 명령어 및 사용방법

1.1 prompt의 의미

[root @~]#_ 부분을 prompt라고 한다.

기본 구조.

[계정 @호스트 이름 /현 작업 디렉토리]# 커서

현재의 작업 디렉토리는 로그인한 사용자의 홈 디렉토리를 표시한다.
로그인할 때 root라고 입력하고 패스워드를 입력하셨다면 /root 디렉토리, 즉 루트 계정의 홈 디렉토리에 커서가 위치해 있을 것이고, 설치시에 설정한 사용자 계정으로 로그인하였다면 로그인한 사용자 계정의 홈 디렉토리에 위치하게 된다.
root 계정의 홈 디렉토리를 제외한 일반 사용자 계정은 /home 디렉토리 아래 위치한다.
1.2 ls 
파일 시스템 상의 파일들의 목록을 보여준다.

형식
#ls [ -옵션 ][ 파일명(들) ]
-a : dot(.)로 시작되는 이름을 가진 파일명도 전부 보여준다.
-l : 각 파일들에 대한 소유자, 권한, 갱신일 등의 자세한 정보를 출력한다.
-s : 파일이 얼마나 많은 디스크 블록을 차지하고 있는가를 보여준다.
-i : 파일의 inode 번호를 보여준다.
-F : 파일의 특성을 쉽게 알 수 있는 문자를 나타낸다.
+는 실행 가능한 파일을, /는 디렉토리 이름을 의미하고, @는 심볼릭 링크를 나타내고, =는 소켓(socket)을 나타낸다.
-R : 현 디렉토리의 내용은 물론이고 sub 디렉토리의 내용까지 전부 보여준다.
-d : 각 디렉토리에 존재하는 하위 디렉토리만을 보여준다.

Tip :   명령어 # ls -al   과 같은 명령은   # ll 이다.
1.3 cd 
change directory의 의미
현재 작업하는 디렉토리를 변경한다.

형식 
#cd [ 디렉토리 ]
cd 명령과 디렉토리 이름 사이에 반드시 공백이 있어야 한다. 디렉토리 이름을 주지 않고 수행하면 사용자의 홈 디렉토리로 이동한다. 자신이 이동하고자 하는 디렉토리는 자신에게 실행 권한(execution permission)이 있어야 한다.

사용 예
[root @edu00 linux]#cd /home  
[root @edu00 /home]#pwd  
/home
[root @edu00 /home]#cd ~
[root @edu00 /home]#cd ..
1.4 pwd
present working directory의 의미

현재 작업하는 디렉토리를 보여준다.

사용 예
[root @edu00 linux]#pwd 
/home/linux
1.5 cat
이것은 파일의 내용을 화면에 출력하는 데 사용되기도 하며 파일을 다른 곳에 순차적인 스트림으로 보내기 위해 사용된다. 즉 크기가 작은 파일을 생성할 수 있다.

형식 
#cat [ 파일명 ]

옵션
-n : 빈줄을 포함하여 모든 라인앞에 행번호를 추가하여 화면에 출력한다.
사용 예
[root @edu00 linux]#cat 파일명 
[root @edu00 linux]#cat > foo
I am a linuxer.
^D

[root @edu00 linux]#cat foo
1.6 finger
시스템 상의 사용자들에 대한 정보를 보여준다.

형식
#finger [ -옵션] [ 사용자 ]
-s : 사용자의 로그온 이름, 실제이름, 터미널 이름, 로그온 시간 등등을 보인다.
-I :  -s 옵션 정보에 몇 가지를 추가하여, 여러 줄에 걸쳐서 보여준다.
인수로 아무 것도 주어지지 않으면, finger는 현재 시스템에 로그인 되어 있는 사용자들을 보여준다.
옵션이 주어지지 않으면, 기본적으로 -l 옵션을 사용한 것으로 간주된다.

사용 예
[root @edu00 linux]#finger 
Login Name  Tty Idle Login Time Office Office Phone
Edu00 rose     2      1 Oct 20 11:31
root  root  1  Oct 20 11:28
1.7 mkdir
make directory의 의미
디렉토리를 새로 만든다.

형식
# mkdir directory

옵션
-p : 디렉토리의 경로명까지 생성
-m : 퍼미션 모드를 설정하면서 디렉토리 생성

사용 예 
[root @edu00 linux]#mkdir blade      //현재 디렉토리의 하위 디렉토리 작성
[root @edu00 linux]#cd blade  
[root @edu00 linux]#mkdir ?p /home/edu01/edu02/edu03

1.8 rm
remove의 의미
파일을 지우는 명령이다.

형식
# rm [ -옵션 ] 파일명

옵션
-f : 보통 지울 수 있는 권한이 없으면 안되지만, 이 옵션을 사용하면 강제로 파일을 지울 수 있다.
-i : 파일을 지울 것인가 다시 물어본다. 지우기를 원한다면 y를 누른다. 
-r : 서브 디렉토리의 파일도 모두 재귀적으로 지운다.
-v : 파일을 지우기 전에 파일의 이름을 나타내준다.

사용 예 
[root @edu00 linux]#rm blade.Z  
[root @edu00 linux]#rm report.txt tempfile object.mainroutine hello.java 
[root @edu00 linux]#rm -r blade   
: blade와 하위 디렉토리 파일 모두를 제거 
[root @edu00 /]#rm ?rf * ( 이 명령을 사용할 경우 항상 현재 작업 디렉토리를 확인)
1.9  rmdir 
remove directory의 의미
원하는 디렉토리를 제거한다. 단 디렉토리가 비어있을 경우에만 삭제가 가능하다.

형식
# rmdir 디렉토리 

옵션
-p : 경로명에 따라 디렉토리를 삭제한다. 단 하위 디렉토리가 비어있을 경우에만 삭제가 가능하다.
3.10  who
현재의 시스템에 접속한 사용자의 이름이나 로그온 정보를 보여준다. 

형식
#who [ -옵션 ] [로그온 정보파일 ]

옵션
-u : 현재 시스템에 누가 로그온되어 있는지 보여준다. 
-T : 사용자의 터미널이 메시지를 보낼 수 있는지를 알려준다. +기호는 메시지를 쓸 수 있고, -는 그렇지 않음을 보여준다. 

1.11 more
한 화면씩 출력을 보여주는 유틸리티, 한 번에 전체적으로 볼 수 없는 파일은 이것을 사용하여 스크롤을 제어할 수 있다.

형식
#more [ 파일이름 ]
1.12 clear
clear 명령은 도스의 cls와 마찬가지로 화면을 지우는 동작을 한다.
사용 예
[root @edu00 linux]#clear
1.13  cp 
파일을 현재의 위치나 다른 디렉토리로 복사(copy)한다.

형식 
#cp [ -옵션 ] 파일명1 파일명2
#cp [ -옵션 ] 파일명 디렉토리

옵션
-a : 가능한 한 원 파일의 구조와 속성을 그대로 복사한다.
-b : 복사할 때 덮어쓰게 되는 파일은 백업을 만든다.
-f : 복사 위치에 존재하는 파일을 제거하고 복사한다.
-i : 복사 시 같은 이름의 파일이 존재한다면 덮어쓸 것인가 확인한다.
-P : 원본 파일의 소유자, 그룹, 권한, 시간 기록을 그대로 복사한다.
-r : 파일과 하위 디렉토리에 포함된 파일 모두를 재귀적으로 복사한다.
만일 파일명2가 이미 존재하는 파일의 이름이라면 기존에 있던 파일은 사라지고 새로운 복사본 파일로 바뀐다. 이것이 원하지 않는 결과라면 -i 옵션을 주어서 확인 작업을 거칠 수 있다.
-i 옵션은 파일명2가 이미 존재하는 이름이라면 그대로 복사할 것인지 아닌지를 선택할 수 있게 물어온다.

사용 예
[root @edu00 linux]# cp -i blade.Z temp.Z
[root @edu00 linux]# cp -r * /somewhere
: 당연히 -r 옵션은 파일명2가 디렉토리 이름일 때만 사용이 가능하다.
1.14  mv
move의 의미
파일의 위치를 이동하거나 파일의 이름을 바꾸어준다.
형식
#mv [ -옵션 ] 파일명1 파일명2
#mv [ -옵션 ] 파일명(들) 디렉토리명
옵션
-f : 같은 이름의 파일이 존재하고 쓰기 권한이 금지되어 있더라도 물어보지 않고 덮어
쓰기를 해버린다. 이런 경우 이 옵션을 사용하지 않으면 사용자에게 다시 확인을 
할 것이다.
-i : 파일을 덮어쓰기 전에 사용자에게 확인한다. 기존에 있던 파일을 원치 않게 잃어버리는 수가 있기 때문에 확실하지 않다면 -i 옵션을 사용하는 것을 권한다.
사용 예
[root @edu00 linux]#mv sisap.hong victor.dongki readme.txt  ../friend  
[root @edu00 linux]#mv blade.Z ../kimtaihan.Z  
[root @edu00 linux]#mv /home/blade  /home/friend  
[root @edu00 linux]#mv sisap.doc LeeKiHong.doc 
1.15  date
시스템은 현재의 날짜와 시간을 유지하고 있다. 
date 명령을 사용하면 그러한 시간을 확인할 수 있다. 또한 날짜와 시간 정보를 변경할 수 있다. 물론 시스템의 날짜와 시간은 슈퍼 유저만이 변경할 수 있다.

형식 
#date 
#date 월 일 시 분 년도

사용 예
[root @edu00 linux]#date  
Tue Apr 25 17:45:09 KST 2000
[root @edu00 linux]#date 101116302001
현재의 날짜를 2001년 10월 11일 오후 4시 30분으로 시간을 변경

1.16 du and df

1.16.1 du
disk usage의 의미
형식
#du [-옵션] [디렉토리]

옵션
-a : 디렉토리가 아닌 모든 파일에 대한 정보를 화면에 출력한다.
-k : kilobyte 단위로 표시
-m : megabyte 단위로 표시
-h : human readable이란 의미에 따라 사람들이 읽을 수 있는 용량의 단위표시를 하면서 화면에 출력이 된다.
-s : 사용량의 총 합계를 출력한다.

사용 예
#du -sh /home
/home디렉토리의 총사용량을 단위표시를 해서 화면에 출력해 지정된 디렉토리의 사용량을 확인한다.

1.16.2 df
difk free의 의미
디스크의 여유 공간을 검사하여 보고한다.

형식
#df [ -옵션 ] 파일시스템
-i : 블록 사용 대신 inode 사용 정보를 보고한다.
-k : 블록의 크기를 1K바이트로 계산한다. 이것은 바이트 크기를 사용하는 대신 블록 단위로 보고한다는 점을 유의해야 한다. 기본적으로 512바이트 크기로 한 블록을 다룬다.
-T : 각 파티션의 파일시스템의 유형도 화면에 출력한다.
사용 예
#df
#df -mt
1.17  env
현재의 환경에 영향을 주지 않고 원하는 환경을 만들어 명령을 실행한다. 또는 현재의 환경을 보고한다.

형식
# env [ - ][-i ][ -u 이름 ][ 이름=값 ][명령]

옵션
-i : 현재의 환경을 무시하고 빈 환경 상태로 시작한다.
-u 이름 : 현재의 환경에 그 이름의 변수가 있다면 제거한다. “이름=값”형식으로 특
정 환경 변수를 지정해서 명령을 실행한다. 이러한 값을 필요한 대로 여러 개 나열하
면 되고, 현재의 환경은 변경하지 않으므로 명령의 수행이 끝나면 환경의 상태는 이
전과 다름없게 된다.

사용 예
[root @edu00 linux]#env HOME=/usr/victor tsh
: 디렉토리 변수를 지정하여 셸을 실행한다.
[root @edu00 linux]#env  
:  현재 설정되어 있는 환경 변수들을 보여준다.
1.18  find
원하는 특정 파일을 디렉토리를 탐색하여 찾는다. find는 매우 강력한 도구로 특정 디렉토리들을 순회하면서 지정된 조건에 만족하는 파일을 찾는다. 파일의 조건은 이름이나 크기, 날짜 등 다양하게 지정할 수 있다.

형식
#find [ 디렉토리 ] 탐색 조건

옵션
-name 파일명 : 찾고자 하는 파일의 이름을 정한다. 와일드 카드도 가능하다.
-user 사용자 : 파일 사용자의 ID에 따라서 검색한다. 로그인 이름이나 번호 모두가 가
능하다.
사용 예
[root @edu00 linux]#find  /bin  -name ro*

3.19  chmod
파일의 모드를 바꾼다. 파일의 모드는 권한(permission) 을 제어한다.

형식
#chmod [ -옵션 ] 모드 파일명(들)

옵션
-f : 파일의 권한이 바뀔 수 없어도 에러 메시지를 출력하지 않는다.
-v : 변경된 권한에 대해서 자세히 기술한다.
-R : 디렉토리와 파일들의 권한을 재귀적으로 모두 바꾼다.

사용 예
[root @edu00 linux]#chmod 666 broadboard  
: 파일을 모두가 읽고 쓸 수 있도록 한다.
[root @edu00 linux]#chmod 746 broad
: 파일 권한을 -rwxr--rw-로 변경한다.
[root @edu00 linux]#chmod o+x,g-w broadboard
1.20 file
파일이 어떠한 형태의 파일인지 알아낸다.

형식
#file 파일명
파일이 텍스트 문서인지 실행할 수 있는 파일인지 아니면 데이터 파일인지등을 인식한다. 에디터를 사용해서 보거나 수정될 수 있는 파일인가 알아 보는 데에 많이 사용된다.
1.21  ln
두 개의 파일 사이에 링크를 만들어, 하나의 파일을 두 개 이상의 이름으로 접근이 가능하도록 한다.

형식
#ln [ -s ] 파일명1 파일명2
#ln 파일명들 디렉토리

옵션
-s : 하드 링크 대신 심볼릭 링크를 만든다.

사용 예
[root @edu00 linux]#ln project theplan  
: 두 개의 이름은 같은 문서를 의미한다.
1.21 man
사용하고자 하는 유닉스 유틸리티에 대한 매뉴얼(manual)을 검색해서 보여준다.
셸을 사용할 때 어떤 명령의 사용법이 기억 나지 않는 경우가 있다. 
혹은 매번 사용하던 명령이라도 특수한 옵션이 필요할 때 그 기호나 사용법을 정확히 확인해야 하는 경우가 많이 있다. 이러한 경우에 사용하면 매우 유용하다.

형식
#man  단어

옵션
-k : 인수로 주어진 단어를 키워드로 사용하여, 해당 키워드가 발견되는 모든  매뉴얼
의 내용을 검색하여 보여준다.

사용 예
[root @edu00 linux]#man telnet
[root @edu00 linux]# man -k 키워드

1.22 history
현재까지 실행했던 모든 명령어의 리스트를 볼 수 있다.
즉, 명령행에서 입력해 사용해왔던 명령어들을 다시 사용고자 할 때 이 명령어를 이용하는 것이다.

사용 예
#!!
마지막으로 실행했던 명령어를 다시 실행한다.
#!n
번호에 주어진 명령어가 실행이 된다.
#!단어
가장 최근에 그 단어로 시작하는 명령어를 다시 실행한다.
#!?단어?
가장 최근에 실행했던 명령어들 중 단어를 포함하는 명령문을 다시 실행한다.
1.23 passwd
리눅스 시스템은 다중 사용자와 다중 작업을 지원하는 개인용 서버 시스템이다. 
즉, 이 시스템을 사용하는 여러 계정이 있고 각 계정마다 자기에게 허가된 작업을 할 수 있다는 의미이며 자기에게 허가된 작업을 하기 위해서는 시스템에 로그인을 해야 하는데 로그인 과정에서 반드시 필요한 것이 각 계정과 각 계정에 대한 패스워드이다.

패스워드를 설정할 수 있고 패스워드를 변경할 수도 있다

형식
#passwd [-옵션] (계정명)

옵션
-p : 계정에 대한 패스워드를 삭제하여 로그인시 패스워드 인증을 거치지 않는다.

사용 예
[root @edu00 linux]#passwd
[root @edu00 linux]#passwd 계정명
1.24 cal
달력을 출력하는 명령어이다.

형식
#cal [-옵션][월/년도]

옵션
-m : 특정 월을 지정하여 출력한다.
-y : 특정 년도를 지정하여 출력한다.
사용 예
[root @edu00 linux]#
1.25 engdic
영한 사전 및 한영 사전의 기능을 제공한다.

형식
#engdic
1.26 ps
process의 의미
프로세스를 관리하는명령어로 프로세스의 상태를 표시한다.

형식
#ps [-옵션]

옵션
-a
-u
-x

사용 예
[root @edu00 linux]#ps -aux
[root @edu00 linux]#ps -aux | grep httpd
1.27 su
substitute user의 의미
실제로 로그인하지 않고 로그인의 기능을 대체하는 명령어이다.
일반적으로 시스템에 root계정으로 로그인 한 후 작업을 하면 시스템 전체에 막대한 영향을 미칠 수 있다. 그래서 설치시에 설정한 일반 사용자 계정으로 로그인한 후 작업을 하다가 시스템 관리자로서 설정을 해야 하는 일이 있다면 su라는 명령어를 이용해시스템 관리자로 작업을 할 수 있다. 또한 일반 사용자계정으로 전환해서 작업을 할 수도 있다..

형식 
#su [-옵션]

옵션
-, -l, --login:

사용 예
[root @edu00 linux]#su - 계정명
[linux @edu00 linux]$su ?
1.28 nl
line number의 의미
파일을 출력할 때 파일의 각 라인앞에 라인 번호를 붙여서 화면에 출력한다.

사용 예
[root @edu00 linux]#nl /etc/passwd

2008년 4월 2일 수요일

[MyStory] 일기 - 시간이 간다.


04.01
언젠가 부터 글을 쓰는것도 내가 느끼는 감정을 남기는 것도 부질 없는 짓이란 생각이 들었다.
시간을 흘러 가고 있었다. 내가 무슨 생을 하든지 내가 무슨 마음을 갖든지 ...
나에게 그는 말했다. " 시간이 지나고 나면 지금 우리가 한 모든 말들 행동들.. 어떻게 생각할까 " 문득 그와의 10년이란 시간을 뒤돌아 보게 되었다. 내가 했던 말들은 내가 들었던 말들은 우리의 삶에서 내 삶에서 어떤 것이었을까. 어떤 그런 생각의 끝이 아닌 시간을 함께 했다. 아니 함께 했다기 보다는 함께 같은 공간에 있었다.

인생이란 부질없이 그냥 그렇게 가 버리는 것이란것을 생각을 하고 느끼고 있었지만... 너무나 아쉽고 슬픔을 이루 말할 수 없는 순간도 있으리라... 짐작을 하고 있던 문자 하나를 받고 나서 나는 한동안 참았던 눈물을 흘렸다. 내가 흐르는 눈물이 내가 흐느끼는 소리가 바보 같아 샤워실에서 샤워기를 틀고 앉아서 내가 할 수 있는 최소한의 마음을 전했다. 이제는 그에게 또다른 숙제와 또다른 모습으로 살아가야 할 숙제가 남아있겠지마는 걱정이 되기도 하고 내가 무슨 말을 건네야 할 지를 모르겠다.

한번도 전화통화 버튼을 누르는것이 두렵지 않았다. 근데 두렵다. 내가 하는 말들 내가 느끼는 감정들이 두렵다. 무슨 이유였을까. 무슨 이유일까... 내게 다가온 시간의 문제였을까. 내가 얻어온 시간들이 잘못된것 이었을까?

하루 시간의 연속성 안에 살고 있는 무한 경쟁시대에 살지만 내 가슴은 아무래도 유한 했나 보다. 내겐 마감 시간이 있었나 보다. 왠지 농구 경기가 끝나 버린것 같은 마지막 버져비터라도 날렸어야 했나? 가슴속이 답답하고 마음이 무겁다. 지난주 부터 무엇을 먹어도 소화도 되지 않고 입맛도 없다. 그냥 꾸역 꾸역 집어 넣는 것이 지나온 내 시간들 속에서 생각들을 그리 집어 넣은 것은 아니었는지 생각이 든다.

하늘아.. 너도 날 보고 있다면 나에게 답을 좀 던져 줄래?

언제 부터 였던가 생각해보니 아르바이트 겸 외부 컨설팅을 의뢰 받고 맥북 프로를 처음 써봤을 때 부터 였던 것 같다. 지금은 거의 대부분의 작업을 맥으로 작업을 하다 보니 윈도우에서만 실행되는 일부 프로그램들 때문과 회사 내부 ERP프로그램이 윈도우 ...