<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>psh_97.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Sat, 11 Feb 2023 08:59:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>psh_97.log</title>
            <url>https://velog.velcdn.com/images/psh_97/profile/5619920e-63c8-4302-9348-9ccdce899ca2/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. psh_97.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/psh_97" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Linux_원격접속과 파일전송]]></title>
            <link>https://velog.io/@psh_97/Linux%EC%9B%90%EA%B2%A9%EC%A0%91%EC%86%8D%EA%B3%BC-%ED%8C%8C%EC%9D%BC%EC%A0%84%EC%86%A1</link>
            <guid>https://velog.io/@psh_97/Linux%EC%9B%90%EA%B2%A9%EC%A0%91%EC%86%8D%EA%B3%BC-%ED%8C%8C%EC%9D%BC%EC%A0%84%EC%86%A1</guid>
            <pubDate>Sat, 11 Feb 2023 08:59:59 GMT</pubDate>
            <description><![CDATA[<p>파일전송</p>
<pre><code>scp CMD
sftp CMD</code></pre><p>원격접속</p>
<pre><code>ssh CMD
    # scp file1 server2:/tmp/file2         (나 -&gt; 상대)
    # scp server2:/tmp/file2 /test/file1   (상대쪽에서 -&gt; 나로 가져올때)
    # scp -r dir1 server2:/tmp              (디렉토리 복사)
sftp CMD</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_프로세스관리]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/Linux%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:59:06 GMT</pubDate>
            <description><![CDATA[<p>프로세스 정보</p>
<pre><code>/proc/PID/*        #여기에 남겨진다.
PID(Process Identification) : 프로세스가 시작할 때 할당받는 프로세스 식별번호
PPID(Parent Process Identification) : 부모 프로세스 식별번호 (서브 프로세스를 실행시킨 프로세스)</code></pre><p>프로세스 관리</p>
<pre><code>프로세스 관리1

    프로세스 실행
        fg[foreground]) # gedit
        bg[background]) # gedit &amp;

    프로세스 확인
        # ps -ef[모든리스트][full name] | grep sshd
            /* e : 모든 프로세스 리스트를 출력한다.
               f : 모든 정보를 출력한다. (full format) */

        # ps aux | grep sshd
            /* a : 다른 사용자의 프로세스 상태도 표시
               x : 화면에 보이지 않는 프로세스까지 모두 표시
               u : 프로세스를 사용한 사용자와 실행 시간까지 표시 */
    프로세스 종료
        # kill -1|-2|-9|-15 PID PID
        // -15 = 시그널 번호 생략 [정상 종료]
        // -9 = [강제 종료]
        // -2 = &lt;CTRL + C &gt;
        // -1 = [재시작] 설정 적용할때 많이 씀</code></pre><p>[참고] killall CMD, pkill CMD
[참고] kill vs killall/pkill   차이점은? PID,프로세서이름</p>
<pre><code>프로세스(잡, Job) 관리2
    잡(Job)? 실행중인 프로그램을 프로세스라고 하고, 프로세스를 하나의 잡(Job)이라고 한다.

    잡 실행
        fg[foreground]) # gedit
        bg[background]) # gedit &amp;

    잡 확인
        # jobs

        # fg %1 
        # bg %1
        &lt; CTRL + Z &gt; 일시정지

    잡 종료
        # kill %1</code></pre><p>프로세스 모니터링 [굉장히 중요한 부분, 명령어 출력 결과 해석]</p>
<pre><code>top CMD
    # top
    # top -u wasuser</code></pre><p>[참고] 모니터링 툴 </p>
<pre><code>*top/htop     : CPU/MEM
*iotop         : DISK I/O
*iftop        : Network I/O
*atop         : data gathering(데이터 수집) 
*gnome-system-monitor


lsof CMD
    # lsof
        # lsof /usr/sbin/sshd  //데몬의 이름
        # lsof /tmp
        # lsof /etc/passwd
    # lsof -c sshd
        # lsof /usr/sbin/sshd
        # lsof -c sshd
    # lsof -p PID
    # lsof -i
pmap CMD
    # pmap CMD

pstree CMD
    # pstree
    # pstree user01
    # pstree -alup PID
nice/renice CMD</code></pre><p>[실무예] 백업 스크립트/데이터수집 스크립트 실행할 때</p>
<pre><code>    # ./backup.sh &amp;     &lt;- x
    # nice ./backup.sh % (보통 -&gt; 낮음)</code></pre><p>[실무예] CPU 부하가 높은 프로세스가 존재하는 경우</p>
<pre><code>    # renice -n 10 PID  (보통 -&gt; 낮음)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_배시쉘의 특성]]></title>
            <link>https://velog.io/@psh_97/Linux%EB%B0%B0%EC%8B%9C%EC%89%98%EC%9D%98-%ED%8A%B9%EC%84%B1</link>
            <guid>https://velog.io/@psh_97/Linux%EB%B0%B0%EC%8B%9C%EC%89%98%EC%9D%98-%ED%8A%B9%EC%84%B1</guid>
            <pubDate>Sat, 11 Feb 2023 08:56:52 GMT</pubDate>
            <description><![CDATA[<p>리다이렉션(Redirection)</p>
<pre><code>fd
-------------------------
0 stdin(keyboard)
1 stdout(Screen)
2 stderr(Screen)
-------------------------

입력 리다이렉션(stdin) # wall &lt; /etc/MESS/work.txt
출력 리다이렉션(stdout) # ls -l &gt; lsfile.txt
에러 리다이렉션(stderr) # ls -l /test /nodir &gt; list.txt 2&gt;&amp;1    //에러2번도 1번으로 보내라</code></pre><p>[ 실무예 ] 스크립트 로그 파일 생성</p>
<pre><code># ./script.sh &gt; script.log 2&gt;&amp;1 </code></pre><p>[ 실무예 ] 출력 내용이 긴 명령 수행시 출력 화면 분석</p>
<pre><code># ./configure &gt; config.log 2&gt;&amp;1</code></pre><p>[ 실무예 ] 일반사용자가 명령 수행시 에러메시지를 지우는 경우</p>
<pre><code>$ find / -name core -type f 2&gt;/dev/null</code></pre><p>파이프(Pipe)</p>
<pre><code># CMD | more
# CMD | grep inetd
# CMD | CMD | ...</code></pre><p>[ 실무예 ] 모니터링 구문 + 데이터 수집(CMD | tee -a httpd.cnt)</p>
<pre><code>while true
do    
    ps -ef | grep httpd | wc -l | tee -a httpd.cnt
    sleep 2
done</code></pre><p>[ 실무예 ] 여러 터미널 화면을 공유하는 경우</p>
<pre><code># script -a /dev/null | tee /dev/pts/1 | tee /dev/pts/2</code></pre><p>배시쉘 기능(Shell Function)
    # set -o //전체 리스트 확인
    # set -o vi // 기능 ON
    # set +o vi // 기능 OFF</p>
<pre><code># set -o ignoreeof &lt;CTRL + D &gt; 방지 기능 ON
# set +o ignoreeof &lt;CTRL + D &gt; 방지 기능 OFF

&lt;TAB&gt;
    * 파일이름 자동 완성 기능
    * 디렉토리 안에 파일 목록 보기

&lt;↑&gt;
    * 이전에 수행된 명령어를 편집해서 사용하기
    * 이전에 수행된 명령어를 확장해서 사용하기
    * 확인 + 명령수행 + 확인

&lt; Copy &amp; Paste &gt;</code></pre><p>변수(Variable)</p>
<p>변수의 종류</p>
<blockquote>
<ul>
<li>지역변수(Local Variable) # VAR=5</li>
</ul>
</blockquote>
<ul>
<li>환경변수(Environment Variable) # export VAR=5</li>
<li>특수변수(Special Variable) $$(PID), $?(바로이전 명령어 return), $!(바로이전 background PID)
$0 , $1, $2, $#, $*</li>
</ul>
<p>변수 선언 방법</p>
<pre><code>    # export VAR=5
    # echo $VAR
    # unset VAR</code></pre><p>export 의미</p>
<pre><code>시스템/쉘 환경변수(set/env)
    PS1 변수: export PS1=&#39;[\u@\h \w]\$ &#39; ($HOME/.bashrc)
    PS2 변수
    PATH 변수 : 명령어를 검색할 디렉토리를 선언할 때 사용
        export PATH=$PATH:/root/scripts ($HOME/.bash_profile)
        HISTTIMEFORMAT 변수 : export HISTTIMEFORMAT=&quot;%F %T    &quot; (/etc/profile)
    HOME 변수
    PWD 변수
    LOGNAME 변수
    USER 변수
    UID 변수
    TERM 변수 : export TERM=vt100
    LANG 변수 : export LANG=ko_KR.UTF-8|en_US.UTF-8</code></pre><p>쉘 메타캐릭터(shell Metacharacter)</p>
<pre><code>&#39;&#39; &quot;&quot; `` \ ;</code></pre><p>명령어 히스토리(Command History)</p>
<pre><code>HISTSIZE=512
HISTFILE=$HOME/.bash_history
HISTFILESIZE=512</code></pre><p>엘리어스(Alias)</p>
<pre><code># alias cp=&#39;cp -i&#39;
# alias 
# unalias cp</code></pre><p>환경파일(Environment Files)</p>
<pre><code>/etc/profile 
#모든 사용자에게 적용됨

~/.bash_profile  ($HOME/.bash_profile)

~/.bashrc ($HOME/.bashrc)</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_압축과 아카이빙]]></title>
            <link>https://velog.io/@psh_97/Linux%EC%95%95%EC%B6%95%EA%B3%BC-%EC%95%84%EC%B9%B4%EC%9D%B4%EB%B9%99</link>
            <guid>https://velog.io/@psh_97/Linux%EC%95%95%EC%B6%95%EA%B3%BC-%EC%95%84%EC%B9%B4%EC%9D%B4%EB%B9%99</guid>
            <pubDate>Sat, 11 Feb 2023 08:54:53 GMT</pubDate>
            <description><![CDATA[<h2 id="압축compress">압축(Compress)</h2>
<p>gzip/ginzip CMD
        # gzip file1
        # gunzip -c file1.gz
        # gunzip file1.gz
bzip2/bunzip2 CMD
        # bzip2 file1
        # bunzip2 -c file1.bz2
        # bunzip2 file1.bz2
xz/unxz CMD
        # xz file1
        # unxz -c file1.xz
        # unxz file1.xz</p>
<h2 id="아카이빙archive">아카이빙(Archive)</h2>
<p>tar CMD
    # tar cvf file.tar file1 file2 file3
    # tar tvf file.tar
    # tar xvf file.tar</p>
<p>압축 + 아카이빙</p>
<pre><code>tar CMD</code></pre><p>(tar CMD + gzip CMD)
    # tar cvzf file.tar.gz file1 file2 file3
    # tar tvzf file.tar.gz
    # tar xvzf file.tar.gz</p>
<p>(tar CMD + bzip2.CMD)
    # tar cvjf file.tar.bz2 file1 file2 file3
    # tar tvjf file.tar.bz2
    # tar xvjf file.tar.bz2</p>
<p>(tar CMD + xz CMD)
    # tar cvJf file.tar.xz file1 file2 file3
    # tar tvJf file.tar.xz
    # tar xvJf file.tar.xz    </p>
<p>jar CMD
    # jar cvf file.jar file1 file2 file3
    # jar tvf file.jar
    # jar xvf file.jar</p>
<p>zip/unzip CMD
    # zip file.zip file1 file2
    # unzip -l file.zip
    # unzip file.zip</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_검색 관련 명령어]]></title>
            <link>https://velog.io/@psh_97/Linux%EA%B2%80%EC%83%89-%EA%B4%80%EB%A0%A8-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@psh_97/Linux%EA%B2%80%EC%83%89-%EA%B4%80%EB%A0%A8-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Sat, 11 Feb 2023 08:53:32 GMT</pubDate>
            <description><![CDATA[<p>grep CMD</p>
<pre><code>grep OPTIONS PATTERN file1
* OPTIONS: -i, -l, -v, -r, -n, --color, -A
* PATTERN: *  .  ^root root$ [abc] [a-c] [^a]//a 만 아니면 되는 한글자

CMD | grep root
# cat /etc/passwd | grep root 
# rpm -qa | grep httpd 
# ps -ef | grep rsyslogd  //프로세서 전체 리스트 
# systemctl list-unit-files | grep ssh 
# netstat -antup | grep :22 </code></pre><p>[ 실무예 ] 로그 파일 점검 스크립트
    # alias chklog=&#39;cat $1 | egrep -i --color &quot;(warn|error|fail|crit|alert|emerg)&quot;&#39;
    # vi /root/bin/chklog.sh</p>
<p>find CMD
    # find / -name core -type [f|d]    (# find / -name &quot;<em>oracle</em>&quot; -type f)
    # find / -user user01 -group class1 
    # find / -mtime [-7|7|+7] 
    # find / -perm [-755|755] 
    # find / -size [-300M|300M|+300M]
    # find / -name core -type f -exec rm -f {    } ;</p>
<p>[ 실무예 ] 오래된 로그 파일 삭제 ( find CMD + rm CMD + crontab CMD)
    # find /Log_Dir -name &quot;*.log&quot; -type f -mtime +30 -exec rm -f {} ;</p>
<p>[ 실무예 ] 갑자기 파일시스템 풀(full) 난 경우(-mtime)
    df CMD + du CMD + find CMD + lsof CMD
    # df -k
    # du -sk /var
    # cd /var ; du -sk * | sort -nr more</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_관리자가 알아두면 유용한 명령어]]></title>
            <link>https://velog.io/@psh_97/Linux%EA%B4%80%EB%A6%AC%EC%9E%90%EA%B0%80-%EC%95%8C%EC%95%84%EB%91%90%EB%A9%B4-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@psh_97/Linux%EA%B4%80%EB%A6%AC%EC%9E%90%EA%B0%80-%EC%95%8C%EC%95%84%EB%91%90%EB%A9%B4-%EC%9C%A0%EC%9A%A9%ED%95%9C-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Sat, 11 Feb 2023 08:52:42 GMT</pubDate>
            <description><![CDATA[<p>cmp/diff CMD</p>
<pre><code>[실무예] 설정 파일 비교
# diff httpd.conf httpd.conf.OLD

[실무예] 디렉토리 마이그레이션 종료 후 비교
# find /was1 | wc -l ; find /was2 | wc -l
# diff -r /was1 /was2</code></pre><p>sort CMD
    # CMD | sort -k 3
    # CMD | sort -k 3 -n
    # CMD | sort -k 3 -nr</p>
<pre><code>[ 실무예 ] 파일/파일시스템 사용량 점검
# df -k
# du -sk /var
# cd /var ; du -sk * | sort -nr | more</code></pre><p>file CMD
    # file *</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_사용자와 통신할 때 사용하는 명령어]]></title>
            <link>https://velog.io/@psh_97/Linux%EC%82%AC%EC%9A%A9%EC%9E%90%EC%99%80-%ED%86%B5%EC%8B%A0%ED%95%A0-%EB%95%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
            <guid>https://velog.io/@psh_97/Linux%EC%82%AC%EC%9A%A9%EC%9E%90%EC%99%80-%ED%86%B5%EC%8B%A0%ED%95%A0-%EB%95%8C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AA%85%EB%A0%B9%EC%96%B4</guid>
            <pubDate>Sat, 11 Feb 2023 08:52:16 GMT</pubDate>
            <description><![CDATA[<p>mail/mailx CMD // 메일전송
    # mailx -s &#39; [    OK    ] server1&#39; <a href="mailto:admin@example.com">admin@example.com</a> &lt; /root/report.txt
wall CMD
    # wall &lt; /etc/MESS/work.txt</p>
<pre><code>[참고] 긴급 작업 절차
# touch /etc/nologin
# wall &lt; /etc/MESS/work.txt
...
# fuser -cu /home
# fuser -ck /home
작업 진행
# rm -f /etc/nologin</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_VI / VIM 편집기]]></title>
            <link>https://velog.io/@psh_97/LinuxVI-VIM-%ED%8E%B8%EC%A7%91%EA%B8%B0</link>
            <guid>https://velog.io/@psh_97/LinuxVI-VIM-%ED%8E%B8%EC%A7%91%EA%B8%B0</guid>
            <pubDate>Sat, 11 Feb 2023 08:51:47 GMT</pubDate>
            <description><![CDATA[<p>VI 편집기 모드</p>
<ul>
<li>명령 모드 (Command/Edit Mode)<blockquote>
<pre><code>이동, 삭제, 실행취소/재실행, 복사, ...</code></pre></blockquote>
</li>
<li>입력 모드 (Insert / Input Mode)<blockquote>
<pre><code>i, a, o/O</code></pre></blockquote>
</li>
<li>최하위행 모드 (Last Line/Ex Mode)<blockquote>
<pre><code>저장&amp;나가기, 검색, 검색&amp;바꾸기, 복사/이동하기</code></pre></blockquote>
</li>
</ul>
<p>VI 편집기 환경파일</p>
<pre><code>* $HOME/.vimrc
    set nu
    set ai
    set ts=4 sw=4</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_파일 속성 관리]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EC%86%8D%EC%84%B1-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EC%86%8D%EC%84%B1-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:51:02 GMT</pubDate>
            <description><![CDATA[<p>chown CMD
    # chown -R fedora:fedora /home/fedora
chgrp CMD</p>
<p>chmod CMD</p>
<pre><code>퍼미션 변경
* 심볼릭 모드( Symbolic Mode ) # chmod u+x file1
* 옥탈 모드( Octal Mode ) # chmod 755 file1
파일 &amp; 디렉토리 퍼미션
* 파일( r / w / x )
* 디렉토리( r(ls -l CMD) / w(생성/삭제) / x(cd CMD) )

퍼미션 적용 순서
* UID check -&gt; GIDs check -&gt; other 
umask CMD(002 -&gt; 022 -&gt; 027) 실무에선 바꾸지 말아라
* (관리자) /etc/bashrc
* (사용자) $HOME/.bashrc</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_파일 종류]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EC%A2%85%EB%A5%98</link>
            <guid>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EC%A2%85%EB%A5%98</guid>
            <pubDate>Sat, 11 Feb 2023 08:50:33 GMT</pubDate>
            <description><![CDATA[<p>파일 종류</p>
<ul>
<li><p>일반 파일(Regular File)</p>
</li>
<li><p>디렉토리 파일(Directory File)</p>
</li>
<li><p>링크 파일(Link File)</p>
<ul>
<li>하드 링크 파일(Hard Link File)<h1 id="ln-file1-file2">ln file1 file2</h1>
</li>
<li>심볼릭 링크 파일(Symbolic Link File)<h1 id="ln--s-file1-file2">ln -s file1 file2</h1>
</li>
</ul>
</li>
<li><p>장치 파일(Device)</p>
<ul>
<li>블록 장치 파일(Block Device File)</li>
<li>캐릭터 장치 파일(Character Device File)</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_파일 및 디렉토리 관리]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC-%EB%B0%8F-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:50:02 GMT</pubDate>
            <description><![CDATA[<p>디렉토리 이동 관련 명령어</p>
<pre><code>[ 참고 ] 파일시스템 기본 구조
# man 7 hier

pwd CMD
    [ 참고 ] PS1 변수 ($HOME/.bashrc)
    # export  PS1=&#39;[\u@\h \w]\$ `  // W -&gt;w (워킹디렉토리)
cd CMD
    경로(Part)
    * 상대경로(Relative Path) # cd dir1  // 현재기준 시작 위아래
    * 절대경로(Absolute Path) # cd /dir1 // 최상위 기준으로 시작

    [ 참고 ] 자신의 홈디렉토리 이동
    # cd
    # cd ~
    # cd $HOME

    [ 참고 ] 지정된 사용자 홈디렉토리 이동
    # cd ~fedora

    [ 실무예 ] 이전 디렉토리로 이동하기
    # cd -

    [ 실무예 ] 옆에 있는 디렉토리로 이동하기
    # cd ../dir2</code></pre><p>디렉토리 관리 명령어
    ls CMD(확인)
        # ls -l dir1 (long ~ 길게 설명)
        # ls -ld dir1
        OPTIONS : -l(길게) , -d(디렉토리 속성), -R (체계적인), -a(all .까지), -i (inode번호), -h(인간적으로 2000k -&gt; 2M), -t(시간별로), -r(꺼꾸로)</p>
<pre><code>    [ 참고 ] alias
    (선언) # alias ls=&#39;ls -l | grep &quot;^-&quot;&#39;
    (확인) # alias
    (해제) # unalias ls

    [ 실무예 ] 실무에서 많이 사용되는 ls CMD
    # cd /Log_dir
    # ls -altr (가장밑에 있는게 가장 최근)

mkdir CMD(생성)

    # mkdir -p dir1/dir2 (한번에 생성) // p = parents 아빠 없으면 생성 있으면 그냥흘러감

rmdir CMD(삭제)
    # rm -rf dir1 &lt;&lt; 요거를 기억하자</code></pre><p>파일 관리 명령어
    touch CMD
        # touch -t 08301300 file1
    cp CMD
        # cp file1 file2
        # cp file1 dir1
        # cp -r dir1 dir2 ( dir2가 있는경우 없는경우)
        OPTIONS: -r (디렉토리 복사할때), -i(인간적으로 물어봄) ,-f(강제), -p(퍼미션 복사)</p>
<pre><code>    [ 실무예 ] 설정 파일을 백업하는 경우
    # cp -p httpd.conf httpd.conf.orig // 백업 -p 옵션 중요
    # cp -a /stc /stc.orig // ex. 폴더 (소스코드가 들어가있는경우) // a 옵션안에 p옵션이 들어가있음

    [ 실무예 ] 로그 파일 비우기
    # cp / dev/null file.log
    # cat / dev/null &gt; file.log
    # &gt; file.log //요거 기억

mv CMD
    # mv file1 file2
    # mv file1 dir1
    # mv dir1 dir2 (dir2 가 있거나 없거나)
    OPTIONS: -i(인터렉티브), -f(force)

    [ 참고 ] 와일드 캐릭터(Wild Character)
    * ? {} []
rm CMD
    # rm -rf dir1

    [ 실무예 ] rm 명령어로 지운 파일 복원하기
    ( TUI ) extundelete CMD
    ( GUI ) TestDisk 툴</code></pre><p>파일 내용 확인 명령어
    cat CMD
        # cat -n file1 // number
        # cat file1 file2 &gt; file3
    more CMD
        # CMD | more
        # ps -ef | more
        # cat /etc/services | more
        # netstat -an | more
        # systemctl list-unit-files // 요즘것들은 내장됨</p>
<pre><code>| (파이프 명령어) 
앞에 명령어 출력 결과를 뒤에 명령어 입력으로 인식

gedit ~/.bashrc // alias 생성
. ~/.bashrc // 적용

head CMD
    # alias pps=&#39;ps -ef | head -1 ; ps -ef | grep $1 &#39;
    # alias nstate=&#39;netstate -antup | head -2 ; netstate -antup | grep $1&#39;
tail CMD

    # top
    # tail -f /var/log/messages

    # tail -f /var/log/messages | egrep -i &#39;(warn|fail|error|crit|alert|emerg)&#39;
    # tail -f /var/log/messages /var/log/secure 

    [ 참고 ] telnet 서비스 기동하기
    # yum install telnet telnet-server //설치
    # systemctl start telnet.socket (# systemctl enable --now telnet.socket) // 현재시작
    # systemctl enable telnet.socket // 부팅시에도 적용
    # systemctl enable --now telnet.socket // 현재 + 부팅</code></pre><p>기타 관리용 명령어</p>
<pre><code>wc CMD
    [ 참고 ] 데이터 수집(Data Gathering)
    # ps -ef | tail -n +2 | wc -l
    # cat /etc/passwd | wc -l
    # rpm -qa | wc -l
    # df -k / | tail -l | awk &#39;{print %5}&#39;
    # cat /var/log/messages | grep &#39;Jan 19&#39; | grep &#39;Started Telnet Server&#39; | wc -l

su CMD
    # su oracle    // 현재상태 그대로 넘어가기
    # su - oracle // oracle에서 처음 로그인한것처럼 넘어가기 

sudo CMD(/etc/sudoers, /etc/sudoers.d/*)
    # sudo CMD
    # sudo -l (목록확인)
    # sudo -i (관리자로 스위칭)

id CMD //명령어정도만
groups CMD // 명령어정도만

last CMD(/var/log/wtmp) 내용을 출력하는것 (ex 로그인 로그아웃)
    # last -i
    # last -f /var/log/wtmp.20230128

lastlog(/var/log/lastlog)
    # 사용자가 서버에 마지막 로그인한 시간

lastb CMD(/var/log/btmp)
    # 서버에 접근할때 실패한 기록들 , 사용자의 로그인 실패 기록 

who CMD(/var/run/utmp)
    # 내 서버에 누가 들어와있나

w CMD // 모니터링 느낌
    [ 참고 ] 모니터링 구문
    while true
    do
        echo &quot;-----`date`-----&quot;
        CMD
        sleep 2
    done

[ 참고 ] watch CMD // 모니터링 느낌
exit CMD</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_기본 정보 확인]]></title>
            <link>https://velog.io/@psh_97/Linux%EA%B8%B0%EB%B3%B8-%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8</link>
            <guid>https://velog.io/@psh_97/Linux%EA%B8%B0%EB%B3%B8-%EC%A0%95%EB%B3%B4-%ED%99%95%EC%9D%B8</guid>
            <pubDate>Sat, 11 Feb 2023 08:48:38 GMT</pubDate>
            <description><![CDATA[<p>시스템 기본 정보 확인</p>
<p>uname CMD
        # uname -a
        # cat /etc/redhat-release (# ls /etc/<em>release</em>)</p>
<p>date CMD
        # date 08301300 (8월30일13시) =데모버전 계속쓰기
        # date +%m%d</p>
<p>[실무예] NTP 서버에 시간 동기화</p>
<pre><code>    # gedit , vi /etc/chrony.conf
    server time.bora.net iburst
    # systemctl stop chronyd
    # systemctl start chronyd</code></pre><p>cal CMD //달력 출력</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_환경 설정]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</link>
            <guid>https://velog.io/@psh_97/Linux%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95</guid>
            <pubDate>Sat, 11 Feb 2023 08:47:49 GMT</pubDate>
            <description><![CDATA[<p>리눅스의 선수지식</p>
<blockquote>
<ul>
<li>Runlevel == Target
 runlevel 3 == multi-user.target
 runlevel 5 == graphical.target</li>
</ul>
</blockquote>
<pre><code> # systemctl isolate multi-user.target|graphical.target
 # systemctl set-default multi-user.target|graphical.target</code></pre><ul>
<li>서비스 기동</li>
</ul>
<pre><code># systemctl enable|disable firewalld
# systemctl start|stop firewalld</code></pre><ul>
<li>제어 문자(Control Character)
 &lt;CTRL + C&gt;, &lt;CTRL + D&gt;</li>
</ul>
<blockquote>
<p>Runlevel 0 = Power Off
Runlevel 6 = reboot</p>
</blockquote>
<ul>
<li><p>도움말과 암호변경
  man CMD //manual</p>
<pre><code>  #man ls 가장 많이 사용됨
  #man -k calendar (키워드 검색)
  #man -f passwd (목록 볼때)
  #man -s 5 passwd (섹션 번호 지정)

  [ 참고 ] 명렁어 옵션 확인
  # ls --help // 간략하게
  # man ls // 자세하게

  passwd CMD //password
  # passwd fedora</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_백업과 복구]]></title>
            <link>https://velog.io/@psh_97/Linux%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC</link>
            <guid>https://velog.io/@psh_97/Linux%EB%B0%B1%EC%97%85%EA%B3%BC-%EB%B3%B5%EA%B5%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:44:54 GMT</pubDate>
            <description><![CDATA[<p>백업: </p>
<blockquote>
<p>원본이 손상되거나 잃어버릴 경우를 대비하여 원본 자료를 미리 복사하는 과정.
    풀백업: 선택된 폴더의 DATA를 모두 백업하는 방식
    증분백업: 선택된 폴더의 Full 백업 이후 변경/추가된 Data만 백업하는 방
    차등백업: 선택된 폴더의 Full 백업 이후 변경/추가된 Data를 모두 포함하여 백업하는 방식</p>
</blockquote>
<p>(1) 로컬 백업</p>
<pre><code>tar CMD
    [참고] 상대경로/절대경로(tar CMD 순수한 영역)
    # cd /home 
    # tar cvzf /backup/home.tar.gz .
    # tar tvzf /backup/home.tar.gz
    # cd /home 
    # tar xvzf /backup/home.tar.gz

* 전체 백업(Full Backup) + 차등 백업(Differential Backup)
    # cd /home 
    (전체백업)# tar -g /backup/backup.time -cvzf /backup/full.tar.gz .
    (증분백업)# tar -g /backup/backup.time -cvzf /backup/inc1.tar.gz .

    # cd /home 
    (전체복원)# tar -g /backup/backup.time -xvzf /backup/full.tar.gz
    (증분복원)# tar -g /backup/backup.time -xvzf /backup/inc1.tar.gz

* 디렉토리 마이그레이션(ex: /test1/* -&gt; /test2/*)
    # cd /test1
    # tar cvf - . | (cd /test2 ; tar xvf -)

* 운영체제 전체백업(tar --exclude CMD)
    # mkdir -p /RootBackup 
    # time tar cvzf /RootBackup/full.tar.gz \
    --exclude=/proc \
    --exclude=/dev/shm \
    --exclude=/tmp \
    --exclude=/media \
    --exclude=/sys \
    --exclude=/run \
    --exclude=/mnt \
    --exclude=/proc \
    --exclude=/RootBackup \
    --absolute-name /</code></pre><p>(2) 원격 백업</p>
<pre><code>rsync CMD
(ㄱ) rsync 명령어 수행
    (L  -&gt; L)
        # rsync -a --delete /test1/ /test2
    (L -&gt; R) 
        # rsync -az --delete -e ssh /test1/ IP:/test2
    (R -&gt; L) 
        # rsync -az --delete -e ssh IP:/test2/ /test1

    [참고] $HOME/.bashrc
        # vi ~/.bashrc
        alias RS=&#39;rsync -az --delete -e ssh&#39;
        alias LS=&#39;rsync -a --delete&#39;
        # . ~/.bashrc

(ㄴ) rsync 서버 구축
    (rsync Server)
        # yum install rsync-daemon rsysnc
        # vi /etc/rsyncd.conf
            -----------------------------------
            uid=nobody
            gid=nobody
            use chroot=yes
            max connections=5
            timeout=60

            [Backup]
            comment=Rsync Backup Server
            path=/backup1
            read only=no 
            -----------------------------------    
        # systemctl enable --now rsyncd.socket
    (rsync Client)
        # rsync -avz --delete -e ssh IP::Backup /mirror</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_Job Scheduling]]></title>
            <link>https://velog.io/@psh_97/LinuxJob-Scheduling</link>
            <guid>https://velog.io/@psh_97/LinuxJob-Scheduling</guid>
            <pubDate>Sat, 11 Feb 2023 08:43:51 GMT</pubDate>
            <description><![CDATA[<p>at CMD(atd.service)</p>
<pre><code>    # at 1300
    # at -l     (# atq)
    # at -r N    (# atrm N)</code></pre><p>crontab CMD(crond.service)</p>
<pre><code>    # crontab -e [-u user01]
    # crontab -l [-u user01]
    # crontab -r [-u user01]</code></pre><p>[실무예] 매월 첫번째 주 일요일날 /root/bin/backup.sh 스크립트 실행하고 싶다.</p>
<pre><code>    * crontab + script.sh
    # crontab -e
    0 3 * * 0 /root/bin/script.sh

    # vi /root/bin/script.sh
    ----------------------------------------------------
    #!/bin/bash
    DAY=`date +%d`

    if [ $DAY -le 7 ] ; then         /* -le : less equal */
    /root/bin/backup.sh
    fi
    ----------------------------------------------------</code></pre><p>[실무예] oracle, wasuser 사용만 crontab 명령어 사용하도록 설정하기</p>
<pre><code>* /etc/cron.allow, /etc/cron.deny

# cd /var/spool/cron ; ls
backupuser root opadm

# vi /etc/cron.allow
backupuser
oracle
wasuser</code></pre><p>[실무예] 관리자 스케줄링 선언하는 방법</p>
<pre><code>(관리자) crontab -e, /etc/crontab
(사용자) crontab -e
(Software) /etc/cron.{hourly,daily,weekly,monthly}/*</code></pre><p>[실무예] 관리자 스케줄링 설정</p>
<pre><code>(ㄱ) # crontab -e  =&gt; /var/spool/cron/$USER
(ㄴ) # vi /etc/crontab
(ㄷ) # vi /etc/cron.{hourly,daily,weekly,monthly}/*</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_사용자 그룹 관리]]></title>
            <link>https://velog.io/@psh_97/Linux%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B7%B8%EB%A3%B9-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/Linux%EC%82%AC%EC%9A%A9%EC%9E%90-%EA%B7%B8%EB%A3%B9-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:42:52 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>용어: 인증(Authentication), 인가(Authorization), 역할(role)</p>
</blockquote>
<p>(1) 사용자 관리</p>
<pre><code>사용자 정보 파일
    ● /etc/passwd     사용자의 기본적인 정보가 저장된 파일
    ● /etc/shadow    사용자의 암호가 저장된 파일

사용자 관리 명령
    ● useradd CMD    사용자 정보 추가 명령어(add)
        # useradd user01
        # useradd -M -d /oracle oracle (# chown -R oracle:oinstall /oracle)
        # passwd user01

    ● usermod CMD    사용자 정보 변경 명령어(modify)
        # usermod -s /bin/zsh user01
        # usermod -u 2000 user01

    ● userdel CMD    사용자 정보 삭제 명령어(delete)
        # userdel user01         /* /etc/passwd, /etc/shadow, /etc/group 정보 삭제 */
        # userdel -r user01        /* /etc/passwd, /etc/shadow, /etc/group  
                                    + Home Directory 삭제 + /var/spool/mail/$USER */</code></pre><p>(2) 그룹 관리</p>
<pre><code>그룹 정보 파일
    /etc/group
그룹 관리 명령
    groupadd CMD
        # groupadd class1
    groupmod CMD
        # groupmod -g 3000 class1 
    groupdel CMD
        # groupdel class1</code></pre><p>(3) 사용자 암호 관리(password age, password aging)</p>
<pre><code>chage CMD
    # chage -l user01
    # chage -M 90 -W 7 user01
    # chage -E 2023-12-25 user01</code></pre><p>[실무예] 사용자 계정에 대해 Expire date 설정</p>
<blockquote>
<p>(사용자 정보 추가) # useradd -e 2021-11-30 user03
(사용자 정보 변경) # chage -E 2021-11-30 user03 (usermod –e 2021-11-30 user03)</p>
</blockquote>
<p>[실무예] 정기적인 암호를 변경하도록 하기</p>
<blockquote>
<p>(전역) /etc/login.defs (PASS_MAX_DAYS, PASS_WARN_DAYS)
(개인) chage -M 90 -W 30 user01</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_부팅 과정]]></title>
            <link>https://velog.io/@psh_97/Linux%EB%B6%80%ED%8C%85-%EA%B3%BC%EC%A0%95</link>
            <guid>https://velog.io/@psh_97/Linux%EB%B6%80%ED%8C%85-%EA%B3%BC%EC%A0%95</guid>
            <pubDate>Sat, 11 Feb 2023 08:41:48 GMT</pubDate>
            <description><![CDATA[<p>   부팅 과정</p>
<pre><code>* F/W 단계
* 부트로드 단계
* 커널 단계
* init 단계</code></pre><p>(1) F/W 단계(EX: BIOS, UEFI)</p>
<pre><code>- POST(Power On Self Test) 자기 스스로 점검
- 부팅매체(Floppy -&gt; DISK -&gt; CD -&gt; NET)</code></pre><p>(2) 부트로드 단계(EX: LILO, GRUB(커널(운영체제의 심장)실행하는놈))</p>
<pre><code>- boot/grub2/grub.cfg(/etc/grub.d/*, /etc/defalut/grub)
- Kernel(/boot/vmlinuz-4.18.0-448.el8.x86_64)
- Initramfs(initramfs-4.18.0-448.el8.x86_64.img)</code></pre><p>(3) 커널 단계</p>
<pre><code>- kernel -&gt; systemd -&gt; 서비스 기동</code></pre><p>(4) systemd 단계</p>
<pre><code>multi-user.target:        runlevel 3
graphical.target:         runlevel 5

(시스템 제어)
# systemctl enable|disable sshd
# systemctl start|stop|restart|status sshd

# systemctl list-unit-files //설치된 모든 유닛 파일의 상태

(장애 처리)
# systemctl --failed
# systemctl list-jobs

(패키지 의존성)
# systemctl list-dependencies sshd                    //앞단
# systemctl list-dependencies sshd --reverse        //뒷단

(mask/unmask)
# systemctl mask|unmask sendmail</code></pre><p>(5) 장애처리 방법(EX: (WIN)안전모드 )</p>
<p>(ㄱ) rd.break
    # reboot
    GRUB menu  -&gt; 적당한 커널 -&gt; e -&gt; 커널라인(linux시작하는놈) 마지막에서<END><SPACE> -&gt;
    rd.break -&gt; &lt;CTRL + x &gt;</p>
<pre><code># mount –o remount,rw /sysroot
# chroot /sysroot
# passwd root
(SELINUX 켜져있는 경우) touch /.autorelabel
# exit ;exit</code></pre><p>(ㄴ) init=/bin/bash
    # reboot
    GRUB menu  -&gt; 적당한 커널 -&gt; e -&gt; 커널라인(linux시작하는놈) 마지막에서<END><SPACE> -&gt;
    init=/bin/bash -&gt; &lt;CTRL + x &gt;</p>
<pre><code># mount –o remount,rw /sysroot
# passwd root
(SELINUX 켜져있는 경우) touch /.autorelabel
# reboot</code></pre><p>(ㄷ) systemd.unit=emergency.target
    # reboot
    GRUB menu  -&gt; 적당한 커널 -&gt; e -&gt; 커널라인(linux시작하는놈) 마지막에서<END><SPACE> -&gt;
    systemd.unit=emergency.target -&gt; &lt;CTRL + x &gt;</p>
<pre><code># mount –o remount,rw /
    장애처리 
        (ex: vi /etc/fstab)
        (systemctl daemon-reload)
# exit</code></pre><p>(ㄹ) systemd.unit=rescue.target
    # reboot
    GRUB menu  -&gt; 적당한 커널 -&gt; e -&gt; 커널라인(linux시작하는놈) 마지막에서<END><SPACE> -&gt;
    systemd.unit=rescue.target -&gt; &lt;CTRL + x &gt;</p>
<pre><code>    장애처리
        (ex: vi /etc/fstab)
        (systemctl daemon-reload)
# exit</code></pre><p>[실습] (systemd Phase)    /etc/rc.local(/etc/rc.d/rc.local) 파일을 사용한 부팅시 실행 명령 등록</p>
<pre><code># vi /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local    [실행권한주기]</code></pre><p>[실습] (grub Phase)    GRUB2 암호 설정하기</p>
<pre><code># grub2-setpassword
=&gt; /boot/grub2/grub.cfg 파일이 만들어진다.</code></pre><p>[실습] (systemd Phase)새로운 서비스 등록</p>
<pre><code># vi /usr/lib/systemd/system/new.service
# systemctl daemon-reload 
# systemctl enable new.service
# systemctl start new.service
# systemctl status new.service</code></pre><p>[실습] (grub Phase)     GRUB가 깨진 경우
CD 부팅</p>
<pre><code># df -h
# chroot /mnt/sysroot
    # lsblk --fs -p                //어디있는지 찾아야돼
    # fdisk -l /dev/sda
# grub2-install /dev/sda   없다면(# grub2-mkconfig -o /boot/grub2/grub.cfg)
# exit ; exit
</code></pre><p>[실습] (systemd Phase)    etc/fstab 파일 잘못된 설정의 예
root 암호 입력</p>
<pre><code># mount -o remount,re /
# vi /etc/fstab
-&gt; 적당한 설정

# systemctl daemon-reload
# exit</code></pre><p>[실습] (Kernel Phase) Kernel Panic</p>
<pre><code># yum check-update | grep kernel
# yum update
# reboot
-&gt; 커널 패닉 발생

# yum remove kernel -버전
# yum update kernel
# reboot</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_Software 관리]]></title>
            <link>https://velog.io/@psh_97/LinuxSoftware-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/LinuxSoftware-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:39:34 GMT</pubDate>
            <description><![CDATA[<p>rpm CMD</p>
<pre><code>[참고] 인터넷 - rpm 파일
* rpmfind.net
* rpm.pbone.net

# rpm -qa | grep openssh

# rpm -ivh|Fvh|Uvh Package name
# rpm -qi(information) PKG //설치 되고나서 확인
# rpm -qi -p PKG.rmp // 설치 하기전 무슨 파일인지 확인하는거
# rpm -e PKG

# rpm -qf /usr/bin/php
# rpm -ql PKG //설치된 상태에서 목록
# rpm -ql -p PKG.rpm // 설치 전 어디에 설치될 것인지 확인</code></pre><p>yum/dnf CMD</p>
<pre><code>yum CMD
    ■ 패키지 확인
        # yum list              (# yum list all)
        # yum list &quot;*bash*&quot;    (# yum list | grep bash)
        # yum list installed 
        # yum list available 
        # yum provides &#39;*/httpd.conf&#39; //이 파일이 어느 패키지에서 왔냐

        # yum list all (# yum list)
        # yum list installed [패키지이름] //설치된것만
        # yum list available [패키지이름] //설치안된것만

    ■ 패키지 설치 &amp; 업데이트(업그레이드)

        # yum [-y] update          
        # yum [-y] update php             [참고] rpm -Fvh
        # yum [-y] install [--downloadonly] php    [참고] rpm -Uvh
        # yum [-y] download PKG         //다운로드만 한다
        # yum [-y] localinstall PKG.rpm

        [참고]
        # yum check-update 2&gt;&amp;1 | tee rpm.log
        # yum update
        # yum search php

    ■ 패키지 삭제
        # yum (erase|remove) PKG


yum history

    # yum history
    # yum history info 43  // 정보
    # yum history undo 43  // undo = 실행 취소  == 이전 상태
    # yum history redo 43 // redo 다시 실행
    # yum history rollback 41 // 이거 시작 전으로 돌아가라

yum repository 관리
    (Server)

    (Client) /etc/yum.repos.d/*.repo
    # yum repolist 
    # yum repolist all 
    # yum repolist enabled   (# yum repolist)
    # yum repolist disabled 

    # yum-config-manager --enable &lt;Repo ID&gt;  --enable &lt;Repo ID&gt;
    # yum config-manager --disable &lt;Repo ID&gt; --disable &lt;Repo ID&gt;

    [참고] /etc/yum.repos.d/*.repo 만들기
    (ㄱ) 자동으로 생성하기 (yum-config-manager)
            # yum-config-manager --add-repo file:///mnt/cdrom/BaseOS
            # yum-config-manager --add-repo file:///mnt/cdrom/AppStream
    (ㄴ) 수동으로 생성하기
            # vi /etc/yum.repos.d/CD.repo
            ------------------------------------
            [MyCDBaseOS]
            name=CentOs Stream 8 - BaseOS
            baseurl=file:///mnt/cdrom/BaseOS
            enabled=1

            [MyCDAppStream]
            name=CentOs Stream 8 - AppStream
            baseurl=file:///mnt/cdrom/AppStream
            enabled=1
            ------------------------------------

yum Group [CMD]
    # yum group --help
    # yum group install &lt;group&gt; 
    # yum group update &lt;group&gt; 

    # yum group list 
    # yum group list hidden | egrep -i &#39;security&#39;
    # yum group info &lt;group&gt; 

    # yum group remove &lt;group&gt; </code></pre><p>Source Code</p>
<pre><code># cd /test ; rm -rf *    [안들어가졌는데 파일 다 지우면 큰일난다.]
# cd /test &amp;&amp; rm -rf *   [이동 되었을때만 파일을 지운다.]</code></pre><p>httpd 소스 컴파일 및 실행하기</p>
<pre><code># cd /test &amp;&amp; wget ~~~~~~~tar.gz
# tar xvzf httpd.tar.gz -C /usr/local/src
# cd /usr/local/src &amp;&amp; configure --prefix=/usr/local/src &amp;&amp; make &amp;&amp; make install
# /usr/local/apache2/bin/apachectl1 start</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_SWAP 관리]]></title>
            <link>https://velog.io/@psh_97/LinuxSWAP-%EA%B4%80%EB%A6%AC</link>
            <guid>https://velog.io/@psh_97/LinuxSWAP-%EA%B4%80%EB%A6%AC</guid>
            <pubDate>Sat, 11 Feb 2023 08:38:21 GMT</pubDate>
            <description><![CDATA[<p>SWAP? 가상메모리 </p>
<blockquote>
<p>[메모리가 넘쳤을때 그것을 담기위한 공간]</p>
</blockquote>
<p>SWAP 이슈</p>
<blockquote>
<ul>
<li>언제 스왑을 추가하는가? 메모리공간 80%이상 그리고 증가하고있을때</li>
</ul>
</blockquote>
<ul>
<li>스왑 용량은?
  (초기) 가이드에 나와있는만큼 잡아줘라
  (운영) 소프트웨어가 필요한 만큼 줘야지</li>
<li>스왑을 추가하면 성능이 좋아지는가? 그건 아니지</li>
</ul>
<p>SWAP 관리</p>
<pre><code>SWAP File 형태로 추가/삭제하기

    # mkdir -p /swap
    # dd if=/dev/zero of=/swap/swapfile bs=1M count=10240
    # mkswap /swap/swapfile
    # swapon /swap/swapfile
    # vi /etc/fstab

    # swapoff /swap/swapfile
    # vi /etc/fstab
    # rm -f /swap/swapfile


Partiton 형태로 추가/삭제하기

    # fdisk /dev/sdb ( Partiton ID : 82 )
    # mkswap /dev/sdb1
    # swapon /dev/sdb1
    # vi /etc/fstab

    # swapoff /dev/sdb1
    # vi /etc/fstab

* SWAP LV 형태로 추가/삭제하기   

    # fdisk /dev/sdb ( Partiton ID : 8e )
    # pvcreate /dev/sdb1
    # vgextend cs /dev/sdb1
    # lvcreate cs -L 500M -n swap2
    # mkswap /dev/cs/swap2
    # swapon /dev/cs/swap2
    # vi /etc/fstab

    # swapoff /dev/cs/swap2
    # vi /etc/fstab
    # lvremove /dev/cs/swap2
    # vgreduce cs /dev/sdb1
    # pvremove /dev/sdb1</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Linux_파일시스템 점검과 모니터링]]></title>
            <link>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%A0%90%EA%B2%80%EA%B3%BC-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81</link>
            <guid>https://velog.io/@psh_97/Linux%ED%8C%8C%EC%9D%BC%EC%8B%9C%EC%8A%A4%ED%85%9C-%EC%A0%90%EA%B2%80%EA%B3%BC-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81</guid>
            <pubDate>Sat, 11 Feb 2023 08:33:22 GMT</pubDate>
            <description><![CDATA[<p>파일시스템 점검
    fsck CMD
        # fsck /dev/sdb1
        # fsck -y /dev/sdb1</p>
<pre><code>    # fsck /dev/sdb1
    # fsck.ext4 /dev/sdb1
    # fsck -t ext4 /dev/sdb1

    (ext4)    # fsck.ext4 /dev/sdb1
    (xfs)    # xfs_repaire /dev/sdb1

    [실무예] &quot;fsck -y /dev/sdb1&quot; 사용하는 경우의 로그 생성
        # fsck -y /dev/sdb1 2&gt;&amp;1 | tee -a fsck.log

    [실무예] 슈퍼블록 복구
    (자동) # fsck -y /dev/sdb1
    (수동) # dumpe2fs /dev/sdb1 | grep -i superbolck
          # fsck -b 32768 or something /dev/sdb1

    [실무예] Bad block 발생한 경우
        # badblocks -v /dev/sdb1    (확인)
        # fsck -c -p -f -v            (고치기)
        (-c = marking bad block marking 해놓고 이놈 안쓰겠다)</code></pre><p>파일시스템 모니터링
    df/du/find CMD + lsof CMD
        # df -k
        # du -sk /var
        # cd /var ; du -sk * | sort -nr | more
        # find /var -type f -size +1G
        # lsof /var/log/server/server_0131.log</p>
]]></description>
        </item>
    </channel>
</rss>