<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>준수의 블로그 - COMe aNd see(C) ME !!</title>
    <link>https://comncme.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 06:14:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Jimin Daddy</managingEditor>
    <item>
      <title>연산자</title>
      <link>https://comncme.tistory.com/entry/%EC%97%B0%EC%82%B0%EC%9E%90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 수치 연산자&lt;br /&gt;&amp;nbsp; - &quot;+&quot;, &quot;-&quot;, &quot;*&quot;, &quot;/&quot;, &quot;%&quot; 의 덧셈, 뺄셈, 곱셈, 나눗셈 의 사칙 연산과 나머지 연산이 있다.&lt;br /&gt;&amp;nbsp; - 오른쪽에서 값을 계산하여 왼쪽의 변수로 그 값을 대입.&lt;br /&gt;&amp;nbsp; ex) intvar = 2 + 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar = 3 - 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar = 5 * 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar = 50 / 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar = 14 % 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 나머지 값이 4가 대입됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = &quot;안녕하세요 !&quot; + &quot;자바스크립트&quot;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 안녕하세요! 자바스크립트 값이 됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 증감 연산자 / 단항 연산자&lt;br /&gt;&amp;nbsp; - 증감 연산자 : 변수의 값을 하나씩 증가 시키거나 감소 시키는 기능을 수행.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 변수의 앞뒤 중 어디에 붙느냐에 따라 의미가 달라짐.&lt;br /&gt;&amp;nbsp; ex) intvar = 10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // intvar 에 10을 대입&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar++;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // intvar에 1이 증가되어 11이 된다. intvar = intvar + 1 과 같음.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ++intvar; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // intvar에 1이 증가되어 12가 된다. intvar = intvar + 1 과 같음.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; num = intvar++;&amp;nbsp;&amp;nbsp; // 우선 num에는 12가 대입되고, intvar는 13이 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; num = ++intvar;&amp;nbsp;&amp;nbsp; // num에는 14가 대입 되고, intvar도 14가 된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intvar--;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // intvar에 1이 감소되어 13이 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --intvar;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // intvar에 1이 감소되어 12가 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nu = intvar--;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 우선 nu 에는 12가 대입되고, intvar는 11이 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nu = --intvar;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // nu에도 10이 대입 되고, intvar도 10의 값을 갖는다.&lt;br /&gt;&amp;nbsp; - 단항 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 변수 앞에 부호를 붙이는 것을 의미.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) -num&amp;nbsp;&amp;nbsp;&amp;nbsp; // 여기서 &quot;-&quot;가 단항 연산자이며, -1 * num 가 같은 의미.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 비교 연산자&lt;br /&gt;&amp;nbsp; 두 개의 값을 비교하여 그 결과를 리턴하는 연산자.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 45.814%; height: 247px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;비교 연산자&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A &amp;lt; B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A가 B 보다 작다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A &amp;gt; B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A가 B 보다 크다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A &amp;lt;= B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A가 B 보다 작거나 같다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A &amp;gt;= B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A가 B 보다 크거나 같다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A == B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A와 B는 같다&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 27.4112%; text-align: center;&quot;&gt;A != B&lt;/td&gt;
&lt;td style=&quot;width: 72.5888%; text-align: center;&quot;&gt;A는 B와 같지 않다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 조건 연산자&lt;br /&gt;&amp;nbsp; 참인지 거짓인지를 판단하여 결과를 리턴하는 연산자.&lt;br /&gt;&amp;nbsp; 조건 연산자에는 두 가지 조건을 동시에 만족해야만 참인 AND, 두 가지 조건 중 하나만 만족해도 참인 OR,&lt;br /&gt;&amp;nbsp; 주어진 하나의 조건이 참인지 거짓인지에 따라 적절한 값을 취하는 ? 연산자 등 3가지가 있다.&lt;br /&gt;&amp;nbsp; - AND 조건 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND 연산자 (&amp;amp;&amp;amp;)는 주어진 두 개의 조건이 모두 참인 경우에만 참이고, 그 외는 거짓인 연산자.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 42.7907%; height: 175px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A &amp;amp;&amp;amp; B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - OR 조건 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; OR 조건 연산자 (||)는 주어진 두 개의 조건이 모두 거짓인 경우에만 거짓이고, 그 외는 모두 참인 연산자.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 46.1628%; height: 167px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A || B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - ? 조건 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 주어진 조건의 참/거짓에 따라 선택되는 값이 달라지도록 만들 때 사용.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ? 앞에 나와 있는 조건이 참인 경우 &quot;:&quot; 기호 앞에 있는 값이 선택되고, 거짓일 경우 &quot;:&quot; 뒤의 값이 선택됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) intvar = 10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; num = (intvar &amp;gt; 5) ? 15 : 20;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 참이 므로 15의 값을 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 대입 연산자&lt;br /&gt;&amp;nbsp; 오른쪽에 있는 값을 왼쪽에 있는 변수에 대입하는 연산자.&lt;br /&gt;&amp;nbsp; 복합 대입 연산자는 대입 연산자(=)에 수치 연산자를 붙인 것.&lt;br /&gt;&amp;nbsp; 수치 연산과 대입이 동시에 이루어지게 된다.&lt;br /&gt;&amp;nbsp; ex) num = 5;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; num += 10;&amp;nbsp;&amp;nbsp;&amp;nbsp; // num = num + 10 과 같아서 num 값은 15가 나옴.&lt;br /&gt;&amp;nbsp; +=, -=, *=, /=, %= 가 있음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 비트 연산자&lt;br /&gt;&amp;nbsp; 주어진 두 수의 비트 간에 AND, OR, XOR 연산을 수행하거나, 주어진 수의 비트 값을&lt;br /&gt;&amp;nbsp; 좌우측으로 수평 이동시키는 연산을 수행.&lt;br /&gt;&amp;nbsp; - AND(&amp;amp;), OR(|), XOR(^) 비트 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 아래 표에서 1은 true, 0은 false로 보면 된다. XOR 연산자 표임. (AND, OR 는 위의 표 참조)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XOR 연산자는 두 조건이 같은 경우에는 0, 다른 경우에는 1인 연산이다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 56.3953%; height: 162px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;A ^ B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 AND, OR, XOR 비트 연산자의 표임.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 72.3256%; height: 102px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 40%; text-align: center;&quot; colspan=&quot;2&quot;&gt;AND(&amp;amp;) / OR(|) / XOR(^)&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;A &amp;amp; B&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;A | B&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;A ^ B&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;1010&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot; rowspan=&quot;2&quot;&gt;1010&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot; rowspan=&quot;2&quot;&gt;1110&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot; rowspan=&quot;2&quot;&gt;0100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;1110&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 시프트 비트 연산자&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 비트의 배열을 좌우로 일정한 횟수만큼 평행 이동시키는 연산임.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 좌측 시프트 연산자 (&amp;lt;&amp;lt;)를 이용한 연산 &quot;8 &amp;lt;&amp;lt; 2&quot;는 8의 비트들(1000)을 좌측으로 2칸 수평 이동 시키게 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) 10 &amp;lt;&amp;lt; 2 의 경우&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10은 2진수로 1010 임.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 33.3721%; height: 20px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 25%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10 &amp;lt;&amp;lt; 2 는 왼쪽으로 2 만큼 이동하라는 것이므로&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 37.093%; height: 32px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에&amp;nbsp; 처럼 101000 이 되어 이를 10 진수로 환산하면 40이 된다.&lt;br /&gt;ex) 10 &amp;gt;&amp;gt; 2 의 경우&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 23.0233%; height: 29px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10 &amp;gt;&amp;gt; 2는 오른쪽으로 2만큼 이동하라는 뜻으로&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 33.6047%; height: 24px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%;&quot;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 처럼 범위를 벗어나면 값이 없어지므로 10진수로 환산하면 2가 된다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* boolean NOT 연산자&lt;br /&gt;&amp;nbsp; boolean 값을 반전시켜주는 연산자로 &quot;!&quot; 로 표기.&lt;br /&gt;&amp;nbsp; true에 &quot;!&quot; 연산자가 붙으면 false가 되고, false에 &quot;!&quot; 가 붙으면 true가 된다.&lt;br /&gt;&amp;nbsp; ex) boolean bool = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool = !bool;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool 값이 false에서 &quot;!&quot;를 만나서 true 가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 연산자의 우선 순위&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 45.3487%; height: 350px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;우선순위&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;연산자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;.&amp;nbsp; [ ]&amp;nbsp; ( )&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;++&amp;nbsp; --&amp;nbsp; !&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;*&amp;nbsp; /&amp;nbsp; %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;+&amp;nbsp; -&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&amp;lt;&amp;lt;&amp;nbsp; &amp;gt;&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&amp;lt;&amp;nbsp; &amp;gt;&amp;nbsp; &amp;lt;=&amp;nbsp; &amp;gt;=&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;==&amp;nbsp; !=&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&amp;amp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;^&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 45.2325%; height: 177px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;|&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&amp;amp;&amp;amp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;||&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;?&amp;nbsp; :&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;=&amp;nbsp; +=&amp;nbsp; -=&amp;nbsp; *=&amp;nbsp; /=&amp;nbsp; %=&amp;nbsp; &amp;amp;=&amp;nbsp; ^=&amp;nbsp; |=&amp;nbsp; &amp;gt;&amp;gt;=&amp;nbsp; &amp;lt;&amp;lt;=&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>컴퓨터 세상/JavaScript</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/77</guid>
      <comments>https://comncme.tistory.com/entry/%EC%97%B0%EC%82%B0%EC%9E%90#entry77comment</comments>
      <pubDate>Fri, 29 Mar 2024 06:55:52 +0900</pubDate>
    </item>
    <item>
      <title>변수</title>
      <link>https://comncme.tistory.com/entry/%EB%B3%80%EC%88%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 변수는 특정 자료형의 값을 가지고 있는 저장 장소를 가리키는 것으로 어떠한 문자나 숫자, 부호를 가지고 만들어도 상관없음.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 단, 반드시 알파벳 문자나 &quot;_&quot; (under bar) 로 시작해야 한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp; 또한 자바 스크립트에서 사용하고 있는 키워드는 사용 안됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp; ex) break, byte, case, int, false, return, new, for, in, if, function 등 다수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 변수 선언하기&lt;br /&gt;&amp;nbsp; 변수는 그 즉시 사용하면 바로 변수의 선언이 이루어지게 된다.&lt;br /&gt;&amp;nbsp; 변수의 타입을 엄격하게 관리하지 않으므로 변수에 값을 할당하기만 하면 입력된 값에 해당하는 타입의 변수가 선언됨.&lt;br /&gt;&amp;nbsp; ex) intvar = 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 정수가 할당되었으므로 자동으로 정수형으로 선언됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str = &quot;문자열&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 문자가 할당되었으므로 자동으로 문자열로 선언됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* var로 변수 선언&lt;br /&gt;&amp;nbsp; 변수의 사용 범위를 좀 더 명확히 하고 체계적으로 하려면 var를 이용하여 변수를 선언하는 것이 좋다.&lt;br /&gt;&amp;nbsp; var로 변수를 선언하게 되면 자신이 속해 있는 영역 내에서만 효력이 발생되므로 좋다.&lt;br /&gt;&amp;nbsp; ex) var intvar, str&lt;br /&gt;&amp;nbsp; ex) function first_func() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;first_func에서 i 값:&quot; + i + &quot;&amp;lt;P&amp;gt;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; second_func()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;first_func 에서 i 값 :&quot; + i + &quot;&amp;lt;P&amp;gt;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function second_func {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;second_func에서 i 값 : &quot; + i + &quot;&amp;lt;P&amp;gt;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; 이상 예제 끝.&lt;br /&gt;&amp;nbsp; 위의 예제를 보면 var 로 변수를 선언하게 되면 second_func 함수 내에서만 i 에 2의 값을 할당하게 되고,&lt;br /&gt;&amp;nbsp; first_func 의 i 값에는 영향을 주지 않고, second_func 이후의 2번째 출력시 그대로 1의 값이 나오게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 변수의 자료형 변환&lt;br /&gt;&amp;nbsp; 자바스크립트에서는 변수에 할당하는 값의 종류에 따라 그때 그때 자료형을 바꿀 수 있다.&lt;br /&gt;&amp;nbsp; ex) var test = 2&amp;nbsp;&amp;nbsp;&amp;nbsp; // test 변수의 값으로 정수형 2를 할당한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; test = &quot;문자열 변수로 변환&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; // test 변수의 값으로 문자열을 할당한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; test = &quot;문자&quot; + 23&amp;nbsp;&amp;nbsp;&amp;nbsp; // 정수형 + 문자열의 경우 문자열로 변환된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 따라서 23이 문자열로 변환되어 값은 &quot;문자 23&quot; 의 값이 할당.&lt;/p&gt;</description>
      <category>컴퓨터 세상/JavaScript</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/76</guid>
      <comments>https://comncme.tistory.com/entry/%EB%B3%80%EC%88%98#entry76comment</comments>
      <pubDate>Thu, 28 Mar 2024 10:03:08 +0900</pubDate>
    </item>
    <item>
      <title>주석문, 자료형</title>
      <link>https://comncme.tistory.com/entry/%EC%A3%BC%EC%84%9D%EB%AC%B8-%EC%9E%90%EB%A3%8C%ED%98%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 주석문&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 줄 단위의 여러 문장을 주석 처리할 때는 &quot;/*&quot; 와 */&quot; 를 사용 하며, 그 사이에 들어가는 문장은 주석 처리 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 한 줄에서 문장을 주석 처리할 때는 &quot;//&quot;를 사용하며, 그 이후의 문장은 주석 처리된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 자료형&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 정수형&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 정수는 10진수, 16진수, 8진수의 3가지 형태로 표현.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16진수의 경우 10일 경우 A, 11은 B..... 15는 F를 사용하게 된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;10진수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;8진수&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;16진수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;04&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0x4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;012&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0xA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;024&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0x14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;036&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;0x1E&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; - 부동소수점&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10.23, -2.7 과 같이 소수 부분이 10진수를 의미.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 지수를 사용하여 자릿수가 큰 수도 표현할 수 있음. 2x10의 10승 같은 수는 2E10과 같이 표현.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가끔 정확하지 못하게 계산될 때가 있어 정수형을 사용하는 것을 추천.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; - Boolean&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Boolean은 1비트인 자료형으로, true와 false의 두가지 값만 가진다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 주로 함수의 리턴 값이나 관계 연산자의 결과 값으로 사용됨. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1과 0의 값으로는 사용되지 않으며, 오직 true와 false의 값만 사용된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) bool = true&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bool) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;테스트&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; - 문자열&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자바스크립트에서 문자열이라는 것은 작은 따옴표와 큰 따옴표 사이에 들어가는 모든 문자들을 가리킨다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) 'Test', &quot;안녕하세요&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 문자열 안에는 특수문자를 넣을 수 있으며, 다음과 같은 특수문자열이 사용된다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 48.2558%; height: 276px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;특수 문자&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\n&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;다음 줄로 이동 (new line)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\t&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;탭 문자 삽입 (tab)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\b&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;백 스페이스 (backspace)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\r&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;리턴 (return)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\\&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;역슬래시 (\)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\'&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;작은 따옴표 (')&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25.6846%; text-align: center;&quot;&gt;\&quot;&lt;/td&gt;
&lt;td style=&quot;width: 74.3155%; text-align: center;&quot;&gt;큰 따옴표 (&quot;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp; - null 값 / undefined 값&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;null&lt;/b&gt; 은 아무 값도 없다는 뜻.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 어떤 변수의 값을 조사하는데, 그 변수가 앞에서 정의되지 않았다면 null 값이 나오게 되는 것.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) if (test == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;test 변수는 정의되지 않았습니다.&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.write(&quot;test 변수 값 : &quot; + test);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이상 예제 끝.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null 값은 프로그램에서 예외 상황을 처리하기 위해 자주 사용한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;undefined&lt;/b&gt; 값은 변수를 선언해 놓고, 아무런 값을 할당해 놓지 않았을 때 갖는 값이다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 다음과 같이 str 변수를 선언했다고 했을 때 아무런 값을 주지 않으면 undefined 값을 갖게 되는 것이다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) var str;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 변수 str을 선언만 했지 아무런 값을 주지 않았다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; - NaN 값 / Infinity 값&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;NaN&lt;/b&gt; 값은 &quot;Not a Number&quot;의 약자로서 숫자가 아니라는 의미.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이 값은 보통 0을 0으로 나눈다거나 수가 되지 않는 연산 결과에 할당되는 값.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;Infinity&lt;/b&gt;는 무한대처럼 표현할 수 없이 매우 큰 값을 가지 경우에 할당되는 값.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터 세상/JavaScript</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/75</guid>
      <comments>https://comncme.tistory.com/entry/%EC%A3%BC%EC%84%9D%EB%AC%B8-%EC%9E%90%EB%A3%8C%ED%98%95#entry75comment</comments>
      <pubDate>Thu, 28 Mar 2024 09:23:35 +0900</pubDate>
    </item>
    <item>
      <title>파일과 디렉토리</title>
      <link>https://comncme.tistory.com/entry/%ED%8C%8C%EC%9D%BC%EA%B3%BC-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 리눅스에서의 파일은 일반 파일, 디렉토리, 심볼릭 링크, 장치 파일로 구분.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 일반파일 :&lt;br /&gt;&amp;nbsp; 데이터를 저장하는 데 주로 사용. 텍스트 파일, 실행 파일, 이미지 파일 등이 일반 파일에 해당.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 디렉토리 :&lt;br /&gt;&amp;nbsp; 디렉토리도 파일로 취급하며, 디렉토리 파일에는 해당 디렉토리에 저장된 파일이나 하위 디렉토리에 대한 정보가 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 심볼릭 링크 :&lt;br /&gt;&amp;nbsp; 원본 파일을 대신하도록 원본 파일을 다른 파일명으로 지정한 것으로 윈도의 바로가기 파일과 비슷함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 장치 파일 :&lt;br /&gt;&amp;nbsp; 하드 디스크나 키보드 같은 각종 장치도 파일로 취급. 장치 파일은 리눅스 시스템에 부착된 장치들을 관리하기 위한 특수 파일임.&lt;br /&gt;&amp;nbsp; 리눅스 시스템에서는 각종 장치를 관리하기 위해 시스템 관리자는 해당 장치 파일에 접근해야 함. 대부분의 장치 파일은 /dev&lt;br /&gt;&amp;nbsp; 디렉토리 아래에 위치함.&lt;br /&gt;&amp;nbsp; file 이라는 명령으로 파일의 종류를 알 수 있다.&lt;br /&gt;&amp;nbsp; 사용 법) file 파일명(디렉토리 명)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 디렉토리의 출발점은 루트(/) 디렉토리이며, 최상단 루트 디렉토리아래 각 서브 디렉토리(하위 디렉토리) 등이 있다.&lt;br /&gt;&amp;nbsp; 그리고 각 서브 디렉토리(하위 디렉토리) 위에는 부모 디렉토리 또는 상위 디렉토리가 존재한다.&lt;br /&gt;&amp;nbsp; 상위 디렉토리는 &quot;..&quot; 로 표시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 디렉토리 이름의 끝에는 &quot;/&quot;가 붙고, &quot;@&quot;이 붙어 있으면 심볼릭 링크이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 주요 디렉토리 설명&lt;br /&gt;&amp;nbsp; - dev : 장치 파일이 담긴 디렉토리&lt;br /&gt;&amp;nbsp; - home : 사용자 홈 디렉토리가 생성되는 디렉토리&lt;br /&gt;&amp;nbsp; - media : DVD/CD나 USB 같은 외부 장치를 연결하는 디렉토리&lt;br /&gt;&amp;nbsp; - opt : 추가 패키지가 설치되는 디렉토리&lt;br /&gt;&amp;nbsp; - root : root 계정의 홈 디렉토리. 루트(/) 디렉토리와 다른 것임.&lt;br /&gt;&amp;nbsp; - sys : 리눅스 커널과 관련된 파일이 있는 디렉토리&lt;br /&gt;&amp;nbsp; - usr : 기본 실행 파일과 라이브러리 파일, 헤더 파일 등 많은 파일이 있음. Unix System Resource의 약자임.&lt;br /&gt;&amp;nbsp; - boot : 부팅에 필요한 커널 파일을 가지고 있다.&lt;br /&gt;&amp;nbsp; - etc : 리눅스 설정을 위한 각종 파일을 가지고 있다.&lt;br /&gt;&amp;nbsp; - lost+found : 파일 시스템에 문제가 발행하여 복구할 경우, 문제가 되는 파일이 저장되는 디렉토리로 보통은 비어 있다.&lt;br /&gt;&amp;nbsp; - mnt : 파일 시스템을 임시로 마운트하는 디렉토리&lt;br /&gt;&amp;nbsp; - proc :프로세스 정보 등 커널 관련 정보가 저장되는 디렉토리&lt;br /&gt;&amp;nbsp; - run : 실행중인 서비스와 관련된 파일이 저장&lt;br /&gt;&amp;nbsp; - srv : FTP나 Web 등 시스템에서 제공하는 서비스의 데이터가 저장.&lt;br /&gt;&amp;nbsp; - tmp : 시스템 사용 중에 발생하는 임시 데이터가 저장. 이 디렉토리에 있는 파일은 재시작하면 모두 삭제됨.&lt;br /&gt;&amp;nbsp; - var : 시스템 운영 중에 발생하는 데이터나 로그 등 내용이 자주 바뀌는 파일이 주로 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 작업 디렉토리&lt;br /&gt;&amp;nbsp; - 현재 디렉토리를 의미하며, &quot;.&quot;으로 표시한다. 작업 디렉토리의 위치는 &quot;pwd&quot; 명령으로 알 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 홈 디렉토리&lt;br /&gt;&amp;nbsp; - 각 사용자에게 할당된 디렉토리로 사용자 계정을 처음 만들 때 지정. &quot;~&quot; 로 표시한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 홈 디렉토리를 나타내려면 user1일 경우 &quot;~user1&quot;로 표시.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 절대 경로명과 상대 경로명&lt;br /&gt;&amp;nbsp; - 절대 경로명은 루트 디렉토리부터 시작하는 경로명이며, 상대 경로명은 현재 디렉토리를 기준으로 하는 경로명임.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 따라서 상대 경로명은 현재 작업하는 디렉토리에 따라 변경될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 파일과 디렉토리 규칙&lt;br /&gt;&amp;nbsp; - &quot;/&quot; 를 사용할 수 없다.&lt;br /&gt;&amp;nbsp; - 알파벳, 숫자, 하이픈(-), 언더바(_), 마침표(.)만 사용&lt;br /&gt;&amp;nbsp; - 공백문자, *, | , &quot; , ' , @ , # , $ , % , ^ , &amp;amp; 등을 사용할 수 없다.&lt;br /&gt;&amp;nbsp; - 영문은 대문자와 소문자를 구별하여 다른 문자로 취급.&lt;br /&gt;&amp;nbsp; - &lt;b&gt;&quot;.&quot;로 시작하면 숨김파일로 간주함&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;## 디렉토리 관련 명령어&lt;br /&gt;&amp;nbsp; * pwd 명령어&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 기능 : 현재 디렉토리의 위치를 확인. 현재 디렉토리의 절대 경로를 출력함.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ex) junsu@localhost ~]$ pwd&lt;br /&gt;&amp;nbsp; * cd 명령어&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 기능 : 지정한 디렉토리로 이동&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 형식 : cd [디렉토리]&amp;nbsp;&amp;nbsp; - 절대 경로명 및 상대 경로명 모두 사용 가능&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ex) cd, cd /usr, cd /home/junsu, cd ../../home/junsu&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 홈 디렉토리 이동은 cd ~ 나 그냥 cd 를 사용하면 이동함.&lt;br /&gt;&amp;nbsp; * ls 명령어 (비슷한 명령으로 dir (ls 와 유사) 과 vdir (ls -l 과 유사) 이 있다)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 기능 : 디렉토리의 내용을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 형식 : ls [옵션] [디렉토리 명이나 파일명]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 옵션 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -a : 숨김 파일을 포함하여 모든 파일을 출력 (&quot;.&quot;로 시작하는 파일명은 숨김파일임.)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -d : 디렉토리 자체의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -i : 첫 번째 inode 번호를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -l (L 소문자) : 파일의 상세 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -A : &quot;.&quot; 나 &quot;..&quot;를 제외한 모든 파일을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -F : 파일의 종류를 표시 (* : 실행파일, / : 디렉토리, @ : 심볼릭 링크)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -L : 심볼릭 링크 파일의 경우 원본 파일의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -R : 하위 디렉토리까지 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ex) ls , ls -F , ls -al /tmp&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 파일의 상세 정보&lt;br /&gt;&amp;nbsp; - ls -l 명령을 사용했을 경우 파일마다 나타나는 상세 정보.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) drwxr-xr-x. 2 user1 user1 6 11월 7 08:45 photo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100.233%; height: 373px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;필드 번호&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;필드 값&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%; text-align: center;&quot;&gt;내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;d&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;다음과 같은 파일 종류를 나타냄&lt;br /&gt;- : 일반(정규) 파일&lt;br /&gt;d : 디렉토리 파일&lt;br /&gt;l (소문자 L) : 심볼릭 링크 파일&lt;br /&gt;b : 블록 단위로 읽고 쓰는 블록 장치 파일&lt;br /&gt;c : 섹터 단위로 읽고 쓰는 문자 장치 파일&lt;br /&gt;p : 파이프 파일(프로세스 간 통신에 사용되는 특수 파일)&lt;br /&gt;s : 소켓 (네트워크 통신에 사용되는 특수 파일)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;rwxr-xr-x&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일 접근 권한. 파일의 소유자, 그룹, 기타 사용자가 읽고 수정하고 실행할 수 있는 권한이 &lt;br /&gt;어떻게 부여되어 있는지를 보여줌.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;하드 링크의 개수 (하드 링크는 inode 값이 같은 파일 이름만 다른 파일임.)&lt;br /&gt;따라서 같은 inode 값을 갖는 파일의 수라고 생각하면 된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;user1&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일 소유자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;user1&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일이 속한 그룹&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일 크기 (byte)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;11월 7 08:45&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일이 마지막으로 수정된 시간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 9.49611%; text-align: center;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;width: 15.9444%; text-align: center;&quot;&gt;photo&lt;/td&gt;
&lt;td style=&quot;width: 74.5595%;&quot;&gt;파일명&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 하드링크와 심볼릭 링크의 차이점.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 하드링크란 원본 파일을 가르키는 게 아닌 원본 파일이 가르키는 시스템 데이터를 가리킨다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 심볼릭 링크는 원본파일을 가르키게 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 따라서 하드 링크는 원본 파일을 삭제하여도 하드 링크내에 데이터가 남아 있지만, &lt;br /&gt;&amp;nbsp;&amp;nbsp; 심볼릭 링크는 원본 파일을 삭제하면 사용이 불가하다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 하드 링크를 생성하는 것은 cp 명령을 사용하여 파일 하나를 새로 copy 하는 것과는 다른 것이 &lt;br /&gt;&amp;nbsp;&amp;nbsp; cp 명령을 통한 파일 복사는 같은 용량의 파일을 하나 더 생성하지만 &lt;br /&gt;&amp;nbsp;&amp;nbsp; 하드 링크를 통한 파일 생성은 말 그대로 링크를 나타내는 파일만 생성될 뿐 용량은 늘어나지 않는다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 하드 링크는 같은 inode를 갖는 파일을 생성하는 것이며, 심볼릭 링크는 다른 inode를 갖는 파일을 생성하는 것이다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/74</guid>
      <comments>https://comncme.tistory.com/entry/%ED%8C%8C%EC%9D%BC%EA%B3%BC-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC#entry74comment</comments>
      <pubDate>Tue, 21 Mar 2023 12:38:03 +0900</pubDate>
    </item>
    <item>
      <title>리눅스의 기초 명령어</title>
      <link>https://comncme.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%AA%85%EB%A0%B9%EC%96%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 리눅스의 명령어의 기본 구조&lt;br /&gt;&amp;nbsp; - 명령 [옵션] [인자]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 옵션은 명령의 세부 기능을 선택하고, '-' 나 '--' 기호로 시작하며 영문 소문자나 대문자를 구분함&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) ls -a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 인자는 명령으로 전달되는 값이며, 주로 파일명이나 디렉토리명이 사용됨. 없을 수도 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) ls /home&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 옵션과 인자를 같이 사용하는 경우&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) ls -a /home&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 리눅스의 기초 명령어&lt;br /&gt;&amp;nbsp; - date :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 기능 - 날짜와 시간을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 - date&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) [junsu@localhost ~]$ date&lt;br /&gt;&amp;nbsp; - clear :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 기능 - 화면을 지운다&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 - clear&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) [junsu@localhost ~]$ clear&lt;br /&gt;&amp;nbsp; - man :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 기능 - 명령 사용 방법을 화면에 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 - man 명령어&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) [junsu@localhost ~]$ man clear&amp;nbsp; : clear에 대한 설명, 사용 방법(옵션, 인자), 상세 기술, 호환성 관련, 참고 사항 등이&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 화면에 출력. 여기서 'h'를 입력하면 도움말 키가 나오고, 'q'를 입력하면 실행이 종료.&lt;br /&gt;&amp;nbsp; - passwd :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 기능 - 사용자 계정의 비밀번호를 변경&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 - passwd [인자]&amp;nbsp;&amp;nbsp;&amp;nbsp; : 여기서 [인자]는 로그인 ID이고, 시스템 관리자가 다른 사용자의 비밀번호를 변경할 때 사용&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 일반 사용자는 자신의 비밀번호만 변경 가능. 인자 없이 사용할 경우 로그인한 계정의 비밀번호 변경.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) [junsu@localhost ~]$ passwd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 엔터 후 현재 암호 입력 후 2번에 걸쳐 새 암호를 입력.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/73</guid>
      <comments>https://comncme.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%AA%85%EB%A0%B9%EC%96%B4#entry73comment</comments>
      <pubDate>Thu, 9 Mar 2023 12:12:59 +0900</pubDate>
    </item>
    <item>
      <title>리눅스의 기초</title>
      <link>https://comncme.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9D%98-%EA%B8%B0%EC%B4%88</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;* 리눅스의 구조 :&lt;br /&gt;&amp;nbsp;&amp;nbsp; 리눅스는 커널 -&amp;gt; 셸 -&amp;gt; 응용 프로그램 으로 구성되어 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 커널 :&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; 리눅스에서 프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 관리 등 컴퓨터의 자원을 초기화하고 제어하는 기능을 수행&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 셸 :&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; 리눅스의 사용자 인터페이스로서 사용자의 커널 사이의 중간자 역할을 담당하는 특별한 프로그램.&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; 사용자가 입력한 명령을 해석하여 커널에 넘겨주고, 커널이 명령의 수행 결과를 돌려주고 셸은 다시 사용자가 이해할 수 있는&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형태로 바꿔 출력함. 배시셸을 기본으로 사용함.&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 응용 프로그램&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 문서 편집 도구, 개발 도구, 네트워크 관련 등 다양한 프로그램들로 구성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 설치&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 한글 입력기 설치&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [junsu@localhost ~] su -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : root 계정으로 전환 (암호 입력)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [junsu@localhost ~] yum -y install ibus-hangul&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 한글 입력기 설치&lt;br /&gt;&amp;nbsp;&amp;nbsp; 위와 같이 하면 한글 입력기 패키지가 설치됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 터미널을 종료하기 위해서는 'exit' 명령이나 'ctrl+d' 입력한다. 그러면 터미널을 빠져나가게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 프롬프트 :&lt;br /&gt;&amp;nbsp; 프롬프트 끝의 기호 중 '$'는 일반 사용자 접속, '#'는 시스템 관리자 접속 표시이다. 그리고 '~'는 홈 디렉토리를 표시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 명령행 편집 :&lt;br /&gt;&amp;nbsp;&amp;nbsp; 명령 행에서 'ctrl+w'는 커서 바로 왼쪽의 단어를 지운다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 명령 행에서 'ctrl+u'는 커서가 있는 행의 내용을 지운다.&lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/72</guid>
      <comments>https://comncme.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4%EC%9D%98-%EA%B8%B0%EC%B4%88#entry72comment</comments>
      <pubDate>Thu, 9 Mar 2023 11:52:08 +0900</pubDate>
    </item>
    <item>
      <title>작업 예약</title>
      <link>https://comncme.tistory.com/entry/%EC%9E%91%EC%97%85-%EC%98%88%EC%95%BD</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;특정한 시간에 작업을 실행할 수 있도록 예약할 수 있는 두 가지 방법을 제공.&lt;br /&gt;정해진 시간에 한 번만 실행하는 것이고, 정해진 시간에 반복해서 실행하는 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 정해진 시간에 한 번만 실행&lt;br /&gt;&amp;nbsp;&amp;nbsp; 정해진 시간에 한 번만 명령을 실행하려면 at 명령을 실행.&lt;br /&gt;&amp;nbsp; 1) at&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 기능 : 예약한 명령을 정해진 시간에 실행.&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 형식 : at [옵션] [시간]&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 옵션 :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -l : 현재 실행 대기 중인 명령의 전체 목록을 출력 (atq 명령과 동일)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -r 작업 번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호를 삭제한다. (atrm과 동일. -d 와도 동일)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -m : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려준다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -f 파일 : 표준 입력 대신 실행할 명령을 파일로 지정.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ex) at -m 0730 tomorrow&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at 10:00 pm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at 08:15 am May 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 위와 같이 하게 되면 프롬프트가 at&amp;gt; 으로 변경되며, 실행할 명령 입력 후 마치려면 Ctrl+d 를 누른다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 그러면 화면에는 &amp;lt;EOT&amp;gt;가 출력된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o at 4pm + 3days &amp;nbsp; --&amp;gt;&amp;nbsp; 지금부터 3일 후 오후 4시로 작업을 예약 (today, tommorow, hours, days, weeks 지정 가능)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o at 10am Jul 31&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 7월 31일 오전 10시로 작업을 예약&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o at 1am tomorrow&amp;nbsp;&amp;nbsp; --&amp;gt; 내일 오전 1시로 작업을 예약&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o at 10:00am today&amp;nbsp;&amp;nbsp; --&amp;gt;&amp;nbsp; 오늘 오전 10시로 작업을 예약&lt;br /&gt;&amp;nbsp; at로 설정한 작업의 결과는 지정된 파일에 저장됨. 만약 표준 출력을 파일로 전환하지 않았다면 작업 결과가 메일로 전달됨.&lt;br /&gt;&amp;nbsp; (시스템에 메일이 설정되어 있어야 한다.)&lt;br /&gt;&amp;nbsp;2) at 작업 파일 확인하기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; at로 생성된 작업 파일은 /var/spool/at 디렉토리에 저장됨. 작업 번호로 파일이 생성. 예약된 명령이 샐행되면 자동으로 삭제.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/spool/at 디렉토리는 데몬 사용자만 읽을 수 있는 권한이기 때문에 su -root 명령으로 root 사용자로 변경하여&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 확인하여야 한다. &lt;br /&gt;&amp;nbsp;3) at 작업 목록 확인하기 : -l 옵션과 atq 옵션&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - at 명령으로 설정된 작업의 목록은 -l 옵션으로 확인 가능. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) at -l&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - atq 명령&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 현재 사용자의 등록된 작업 목록을 보여준다. 슈퍼 유저일 경우 모든 사용자의 작업 목록을 보여준다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 : atq&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) atq&lt;br /&gt;&amp;nbsp; 4) at 작업 삭제하기 : -d 옵션과 atrm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at 명령으로 설정한 작업이 실행되기 전에 삭제하려면 -d 옵션을 사용하고 삭제할 작업 번호를 지정&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - atrm &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 기능 : 지정된 작업 번호의 작업을 삭제함.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 형식 : atrm 작업 번호&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) atrm 3&amp;nbsp;&amp;nbsp; --&amp;gt; 작업 번호 3을 삭제&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at -d 4&amp;nbsp;&amp;nbsp; --&amp;gt; 작업 번호 4를 삭제&lt;br /&gt;&amp;nbsp; 5) at 명령 사용 제한하기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 시스템 관리자는 일반 사용자들이 at 명령의 사용을 제한할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이와 관련한 파일은 /etc/at.allow (사용을 허용)와 /etc/at.deny (사용을 제한) 다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at 명령의 사용이 허용된 사용자들은 /etc/at.allow 파일에 지정하고, 제한된 사용자들은 /etc/at.deny 파일에 지정&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at.deny 파일은 기본적으로 있지만, at.allow 파일은 없으므로 필요시에 관리자가 만들어야 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 파일에는 사용자 이름을 한 줄에 하나씩만 입력.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/at.allow 파일이 있으면 이 파일에 지정된 사용자만 at 명령을 사용할 수 있다. /etc/at.deny 파일은 무시됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/at.allow 파일이 없으면 /etc/at.deny 파일에 지정된 사용자를 제외한 모든 사용자가 at 명령을 사용할&amp;nbsp; 수 없음.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 만약 두 파일이 모두 없으면 root만 at 명령을 사용할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 사용자가 두 파일에 모두 속해 있다면 at 명령을 사용할 수 있다. /etc/at.allow 파일이 적용되기 때문.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/at.deny를 빈파일로 두면 모든 사용자가 at 명령을 사용할 수 있는데, 이것이 초기 설정이다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 예를 들어 /etc/at.allow 파일이 있는데 user1 사용자가 없거나 /etc/at.deny 파일에 있다면 at 명령을 실행하면&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 사용 권한이 없다는 메시지가 출력.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* 정해진 시간에 반복 실행&lt;br /&gt;&amp;nbsp;&amp;nbsp; 정해진 시간이 되면 반복적으로 실행하도록 설정하는 crontab 명령.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 1) crontab&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 기능 : 사용자의 crontab 파일을 관리&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 형식 crontab [-u 사용자 ID] [옵션] [파일명]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 옵션 :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -e : 사용자의 crontab 파일을 편집&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -l : crontab 파일의 목록을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -r : crontab 파일을 삭제.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - ex) crontab -l&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab -u user1 -e&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab -r&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2) crontab 파일 형식&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 명령으로 관리하는 파일은 사용자별로 생성되는데 이 파일에 반복 실행할 작업이 저장됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 파일에는 여러 개의 작업을 저장할 수 있으며 한행에 하나의 작업을 설정한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 파일의 한 행에는 다음과 같이 여섯 항목으로 구성되어 있음.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;분 (0~59)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;시 (0~23)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;일 (1~31)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;월 (1~12)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;요일 (0~6)&lt;/td&gt;
&lt;td style=&quot;width: 16.6667%; text-align: center;&quot;&gt;작업 내용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에서부터 다섯 항목은 시간과 날짜를 나타내는 숫자이고 마지막 항목은 반복적으로 수행할 명령이다.&lt;br /&gt;요일의 경우 0이 일요일, 6이 토요일이다.&lt;br /&gt;시간과 날짜를 나타낼 때 각 항목은 공백문자로 구분함. 항목의 값이 '*' 이면 해당 항목의 모든 값을 의미함.&lt;br /&gt;ex) 30 23 1 * * /usr/bin/ls -l ~user1 &amp;gt; ~user1/cron.out&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 매월 1일 23시 30분에 위의 작업 내용을 실행하라는 뜻. (월과 요일은 '*' 이므로 매월 모든 요일을 뜻함)&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3) crontab 파일 생성하고 편집하기 : crontab -e (이렇게 입력하면 vi 편집기가 나옴)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 파일의 생성과 편집은 crontab -e 명령으로 수행한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 편집기로는 기본적으로 VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 필요할 경우 다음과 같이 명시적으로 편집기를 지정할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [user1@localhost ~]$ EDITOR=vi;export EDITOR&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab -e 명령으로 편집한 파일은 저장하면 자동적으로 /var/spool/cron 디렉토리에 사용자 이름으로 생성됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이 디렉토리도 일반 사용자는 접근할 수 없으며 시스템 관리자만 접근이 가능.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4) crontab 파일 내용 확인하기 : crontab -l&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab -l 명령을 실행하면 현재 사용자의 crontab 파일 내용이 출력된다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) crontab -l&lt;br /&gt;&amp;nbsp;&amp;nbsp; 5) crontab 파일 삭제하기 : crontab -r&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; crontab 파일을 삭제하려면 crontab -r 명령을 사용.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 만일 시스템 관리자가 특정 사용자의 crontab을 삭제하려면 'crontab -u user1 -r'과 같이 삭제하려는 사용자 ID를&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 지정한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp; 6) crontab 명령 사용 제한하기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; at 명령과 마찬가지로 crontab 명령도 /etc/cron.allow와 /etc/cron.deny 파일로 crontab 명령 사용 권한을 제한할 수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 있다. 두 파일에는 사용자 이름을 한 줄에 하나씩만 입력한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cron.deny 파일은 기본적으로 있지만 cron.allow 파일은 관리자가 만들어야 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 두 파일이 적용되는 기준은 아래와 같다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/cron.allow 파일이 있으면 이 파일에 지정된 사용자만 crontab 명령을 사용할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/cron.allow 파일이 없고 /etc/cron.deny 파일이 있으면 이 파일에 사용자 계정이 없어야 crontab 명령을&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 사용할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - /etc/cron.allow 파일과 /etc/cron.deny 파일이 모두 없으면 시스템 설정에 따라 시스템 관리자만 crontab 명령을&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 사용할 수도 있고 모든 사용자가 사용할 수도 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 만약 두 파일이 모두 없는데 일반 사용자가 crontab 명령을 사용하려고 하면 사용할 수 없다는 메시지가 출력된다.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/71</guid>
      <comments>https://comncme.tistory.com/entry/%EC%9E%91%EC%97%85-%EC%98%88%EC%95%BD#entry71comment</comments>
      <pubDate>Thu, 26 May 2022 13:46:47 +0900</pubDate>
    </item>
    <item>
      <title>작업 제어 (포그라운드&amp;amp;백그라운드)</title>
      <link>https://comncme.tistory.com/entry/%EC%9E%91%EC%97%85-%EC%A0%9C%EC%96%B4-%ED%8F%AC%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;작업 제어 도구는 한 터미널에서 동시에 여러 프로세스를 실행하고 관리하기 위한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;1) 포그라운드 작업&lt;br /&gt;&amp;nbsp; 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 프로세스를 &lt;br /&gt;&amp;nbsp; 포그라운드 프로세스라고 함. 포그라운드 작업이라 한다.&lt;br /&gt;&amp;nbsp; 포그라운드 작업은 일반적으로 사용자가 명령을 실행하는 방식으로 프롬프트가 출력되지 않으면&lt;br /&gt;&amp;nbsp; 명령을 입력할 수 없어 기다려야 한다.&lt;br /&gt;&amp;nbsp; sleep 명령은 주어진 시간만큼 프로세스의 실행이 지연되는 대표적인 포그라운드 작업이다.&lt;br /&gt;&amp;nbsp; ex) sleep 100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2) 백그라운드 작업&lt;br /&gt;&amp;nbsp; 백그라운드 기능을 사용하게 되면 한 터미널에서 여러 개의 프로세스를 동시에 실행할 수 있다.&lt;br /&gt;&amp;nbsp; 백그라운드 방식으로 명령을 실행하면 곧바로 프롬프트가 출력되어 다른 작업을 계속할 수 있다.&lt;br /&gt;&amp;nbsp; 명령을 백그라운드로 실행하려면 명령의 마지막에 '&amp;amp;' 기호를 추가 한다.&lt;br /&gt;&amp;nbsp; ex) sleep 100 &amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 그러면 프롬프트가 바로 나온다.&lt;br /&gt;&amp;nbsp; 백그라운드 작업의 실행이 끝나면 기존의 작업 화면과 백그라운드 작업 결과가 뒤섞인 채 출력될 수 있다.&lt;br /&gt;&amp;nbsp; 그래서 백그라운드로 처리할 때는 다음과 같이 출력과 오류 방향을 전환하고, 실행 결과와 오류 메시지는&lt;br /&gt;&amp;nbsp; 파일로 저장하는 방법을 사용하여 문제를 해결.&lt;br /&gt;&amp;nbsp; ex) [user1@localhost ~]$ find / -name passwd &amp;gt; pw.dat 2&amp;gt;&amp;amp;1 &amp;amp;&amp;nbsp;&amp;nbsp; --&amp;gt; pw.dat에 결과와 오류를 저장.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 작업 제어&lt;br /&gt;&amp;nbsp; 작업 제어는 작업 전환, 작업 일시 중지, 작업 종료를 말함.&lt;br /&gt;&amp;nbsp; 작업 전환은 포그라운드 작업을 백그라운드 작업으로 전환하거나 그 반대로 전환하는 것을 말함.&lt;br /&gt;&amp;nbsp; 작업 일시 중지는 작업을 잠시 중단하는 것.&lt;br /&gt;&amp;nbsp; 작업 종료는 프로세스(작업)을 종료하는 것.&lt;br /&gt;&amp;nbsp; * jobs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 기능 : 백그라운드 작업을 모두 보여준다. 특정 작업 번호를 지정하면 해당 작업의 정보만 보여준다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 형식 : jobs [%작업 번호]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - %작업 번호 :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %번호 : 해당 번호의 작업 정보를 출력.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %+ 또는 %% : 작업 순서가 +인 작업 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %- : 작업 순서가 - 인 작업 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 사용 예&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jobs %1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jobs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - jobs 명령의 출력 정보&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;항목&lt;/td&gt;
&lt;td style=&quot;width: 14.2636%;&quot;&gt;출력 예&lt;/td&gt;
&lt;td style=&quot;width: 72.5193%;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;작업 번호&lt;/td&gt;
&lt;td style=&quot;width: 14.2636%;&quot;&gt;[1]&lt;/td&gt;
&lt;td style=&quot;width: 72.5193%;&quot;&gt;작업 번호로써 백그라운드로 실행할 때마다 순차적으로 증가한다. ([1], [2],[3]...)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;작업 순서&lt;/td&gt;
&lt;td style=&quot;width: 14.2636%;&quot;&gt;+&lt;/td&gt;
&lt;td style=&quot;width: 72.5193%;&quot;&gt;작업 순서를 표시한다.&lt;br /&gt;* + : 가장 최근에 접근한 작업&lt;br /&gt;* - : + 작업보다 바로 전에 접근한 작업&lt;br /&gt;* 공백 : 그 외의 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;상태&lt;/td&gt;
&lt;td style=&quot;width: 14.2636%;&quot;&gt;실행 중&lt;/td&gt;
&lt;td style=&quot;width: 72.5193%;&quot;&gt;작업 상태를 표시&lt;br /&gt;* Running : 현재 실행 중이다.&lt;br /&gt;* Done : 작업이 정상적으로 종료된다.&lt;br /&gt;* Terminated : 작업이 비정상적으로 종료&lt;br /&gt;* Stopped : 작업이 잠시 중단됨.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 13.217%;&quot;&gt;명령&lt;/td&gt;
&lt;td style=&quot;width: 14.2636%;&quot;&gt;sleep 100 &amp;amp;&lt;/td&gt;
&lt;td style=&quot;width: 72.5193%;&quot;&gt;백그라운드로 실행 중인 명령이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; * 작업 전환 하기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 작업 전환 명령&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.1628%;&quot;&gt;명령&lt;/td&gt;
&lt;td style=&quot;width: 73.8372%;&quot;&gt;기능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.1628%;&quot;&gt;Ctrl+z 또는 stop %작업 번호&lt;/td&gt;
&lt;td style=&quot;width: 73.8372%;&quot;&gt;포그라운드 작업을 중지한다 (종료하는 것이 아닌 잠시 중단하는 것)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.1628%;&quot;&gt;bg %작업 번호&lt;/td&gt;
&lt;td style=&quot;width: 73.8372%;&quot;&gt;작업 번호가 지시하는 작업을 백그라운드 작업으로 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 26.1628%;&quot;&gt;fg %작업 번호&lt;/td&gt;
&lt;td style=&quot;width: 73.8372%;&quot;&gt;작업 번호가 지시하는 작업을 포그라운드 작업으로 전환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 포그라운드로 실행 중인 작업을 백그라운드로 전환하려면 우선 Ctrl+z로 작업을 중지한 후 'bg %작업 번호' 명령으로&lt;br /&gt;작업을 백그라운드로 전환한다. (bg 명령만 사용하면 작업 순서가 +인 작업에 적용된다)&lt;br /&gt;* 작업 종료하기 : Ctrl+c&lt;br /&gt;&amp;nbsp; 포그라운드 작업은 Ctrl+C를 입력하면 대부분 종료된다. Ctrl+c는 인터럽트 시그널을 포그라운드 프로세스에 전달하며,&lt;br /&gt;&amp;nbsp; 인터럽트를 받으면 기본적으로 프로세스를 종료하도록 되어 있다.&lt;br /&gt;&amp;nbsp; 물론 프로그램에서 Ctrl+c를 무시하도록 설정한 경우에는 종료되지 않는다.&lt;br /&gt;&amp;nbsp; 포그라운드 작업을 종료하는 또 다른 방법은 다른 터미널에서 해당 프로세스의 PID를 찾아 강제로 종료하는 것이다.&lt;br /&gt;&amp;nbsp; ex) sleep 100&amp;nbsp; --&amp;gt; 포그라운드로 실행 중&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctrl+c&amp;nbsp;&amp;nbsp; --&amp;gt; 강제 종료함.&lt;br /&gt;&amp;nbsp; 백그라운드 작업은 kill 명령으로 강제 종료해야 한다. kill 명령의 인자로 PID 대니 '% 작업 번호'를 지정해도 된다.&lt;br /&gt;&amp;nbsp; ex) sleep 100&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 백그라운드로 실행 중&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill %1&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 강제 종료 함.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [1]+ 종료됨&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 100&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; 종료 메시지 출력&lt;br /&gt;* 로그아웃 후에도 백그라운드 작업 계속 실행하기 : nohup&lt;br /&gt;&amp;nbsp;&amp;nbsp; 백 그라운드 작업을 실행한 터미널이 종료되거나 사용자가 로그아웃하면 실행 중이던 백그라운드 작업도 함께 종료됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 그런데 로그아웃한 다음에도 작업이 완료될 때까지 백그라운드 작업을 실행해야 할 경우가 있다. 이 때 nohup 명령 사용.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 기능 : 로그아웃한 후에도 백그라운드 작업을 계속 실행&lt;br /&gt;&amp;nbsp;&amp;nbsp; 형식 : nohup 명령&amp;amp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; - nohup 명령을 사용할 때에는 반드시 백그라운드로 실행해야 함.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 별도로 출력 방향 전환을 하지 않으면 명령의 실행 결과와 오류 메시지가 현재 디렉토리에 nohup.out 파일로 자동 저장됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/70</guid>
      <comments>https://comncme.tistory.com/entry/%EC%9E%91%EC%97%85-%EC%A0%9C%EC%96%B4-%ED%8F%AC%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C%EB%B0%B1%EA%B7%B8%EB%9D%BC%EC%9A%B4%EB%93%9C#entry70comment</comments>
      <pubDate>Thu, 19 May 2022 12:41:31 +0900</pubDate>
    </item>
    <item>
      <title>프로세스 관리 명령</title>
      <link>https://comncme.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%AA%85%EB%A0%B9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;# 프로세스 목록 확인&lt;br /&gt;&amp;nbsp; 1) ps : 현재 실행중인 프로세스에 대한 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps 명령이 출력하는 PID를 통해 프로세스의 부모-자식 관계도 확인할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 옵션 : &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;unix 옵션&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -f : 프로세스에 대한 자세한 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -u uid : 특정 사용자에 대한 모든 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -p pid : pid로 지정한 특정 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;BSD 옵션&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a : 터미널에서 실행시킨 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u : 프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x : 시스템에서 시랳ㅇ 중인 모든 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;GNU 옵션&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --pid PID 목록 : 목록으로 지정한 특정 PID 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 사용 예&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps -ef&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps aux&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps --pid&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps -f 출력 정보&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UID : 프로세스를 실행한 사용자 ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PID : 프로세스 번호&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PPID : 부모 프로세스 번호&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; C : CPU 사용량 (%값)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STIME : 프로세스의 시작 날짜나 시간&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TTY : 프로세스가 실행된 터미널의 종류와 번호&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME : 프로세스 실행 시간&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CMD : 실행되고 있는 프로그램 이름(명령)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps a 옵션&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 터미널에서 실행시킨 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 출력 내용 중 STAT는 프로세스의 상태를 나타내며, 문자의 의미는 아래와 같다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R : 실행 중&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; S : 인터럽트가 가능한 대기(sleep) 상태&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; T : 작업 제어에 의해 정지된(stopped) 상태&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Z : 좀비 프로세스(defunct)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STIME : 프로세스의 시작 날짜나 시간&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s : 세션 리더 프로세스&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + : 포그라운드 프로세스 그룹&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l(소문자 L) : 멀티 스레드&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps au 출력 정보&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a 옵션이나 -f 옵션에 비해 CPU 메모리 사용량 등 추가적인 정보가 더 출력됨.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USER : 사용자 계정 이름&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %CPU : 퍼센트로 표시한 CPU 사용량&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; %MEM : 퍼센트로 표시한 물리적 메모리 사용량&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; VSZ : 사용 중인 가상 메모리의 크기(KB)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RSS : 사용 중인 물리적 메모리의 크기(KB) &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; START : 프로세스 시작 시간&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; * ps -e 옵션, -f 옵션&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; TTY 값이 ? 인 것은 대부분 데몬으로 시스템이 실행한 프로세스다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 그리고 출력 내용이 많을 경우 |(파이프)와 more 나 less 명령을 함께 사용하면 좋다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps -e | more&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 더 자세한 정보를 확인하려면 ps -ef를 입력함.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TTY가 ? 인 프로세스는 사용자 ID가 root 이다. 스레드는 CMD에 [] 로 표시하여 구분된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps ax 옵션, aux 옵션&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps ax : 시스템에서 실행중인 모든 프로세를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps aux : -ef 옵션 처럼 시스템에서 실행 중인 모든 프로세스에 대한 자세한 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps -u&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 특정 사용자가 실행한 프로세스의 목록을 확인할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) ps -u user1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자세한 정보를 보려면 ps -fu user1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * ps -p 옵션&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 특정 PID를 지정하면 해당 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) ps -p 117&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps -fp 117 (더 자세한 정보를 출력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 특정 프로세스 정보 검색&lt;br /&gt;&amp;nbsp;&amp;nbsp; * ps -ef | grep bash&amp;nbsp; (bash에 대한 자세한 정보 출력)&lt;br /&gt;&amp;nbsp;&amp;nbsp; * pgrep&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 지정한 패턴과 일치하는 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 형식 : pgrep [옵션] [패턴]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 옵션&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -x : 패턴과 정확히 일치하는 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -n : 패턴을 포함하고 있는 가장 최근 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -u 사용자 이름 : 특정 사용자에 대한 모든 프로세스를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -l : PID와 프로세스의 이름을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -t term : 특정 단말기와 관련된 프로세스의 정보를 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) pgrep -x bash&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pgrep -l bash &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 더 자세한 정보를 검색하려면 ps 명령과 연결해서 사용.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps -fp $(pgrep -x bash)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ps -fp $(pgrep -u user1 bash)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 프로세스의 종료&lt;br /&gt;&amp;nbsp;&amp;nbsp; 응답이 없는 프로세스나 불필요한 프로세스를 강제 종료하려면 해당 프로세스의 PID를 알아야 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; ps -ef나 ps aux 명령으로 PID와 PPID를 알 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 프로세스를 종료하는데는 kill 이나 pkill 명령을 사용함. 프로세스에 시그널을 보내 종료한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 시그널은 프로세스에 무언가 발생했음을 알리는 간단한 메시지다. 이 메시지에는 무엇이 발생했는지를 나타내는 미리 정의된&lt;br /&gt;&amp;nbsp;&amp;nbsp; 상수를 사용. 시그널은 번호로 구분되며, 이름을 가지고 있다. kill -l 명령으로 시그널의 목록을 확인 가능&lt;br /&gt;&amp;nbsp;&amp;nbsp; - 주요 시그널&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;시그널&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;번호&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;기본 처리&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGHUP&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;터미널과의 연결이 끊어졌을 때 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGINT&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;인터럽트로 사용자가 Ctrl+C를 입력하면 발생한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGQUIT&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료, 코어 덤프&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;종료 신호로 사용자가 Ctrl+\을 입력하면 발생한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGKILL&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;이 시그널을 받은 프로세스는 무시할 수 없으며, 강제로 종료된다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGALRM&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;알람에 의해 발생한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 15.8139%; text-align: center;&quot;&gt;SIGTERM&lt;/td&gt;
&lt;td style=&quot;width: 17.3256%; text-align: center;&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;width: 16.9768%; text-align: center;&quot;&gt;종료&lt;/td&gt;
&lt;td style=&quot;width: 49.8837%; text-align: center;&quot;&gt;kill 명령이 보내는 기본 시그널이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; * kill : 프로세스 종료&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill 명령은 잉ㄴ자로 지정한 프로세스에 시그널을 전달한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 프로세스는 각 시그널을 받았을 때 어떻게 처리할 것인지 동작이 지정되어 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15번 시그널은 일반적으로 프로세스 종료이지만, 시그널을 무시하거나 다른 동작을 하도록 지정되어 있다면 프로세스가 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 종료되지 않을 수 있다. kill 명령에서 시그널을 지정하지 않을 경우 15번 시그널로 간주됨.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9번 시그널은 강제 종료이지만, 좀비 프로세스는 종료되지 않을 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp; 형식 : kill [-시그널] PID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 시그널 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2: 인터럽트 시그널을 보낸다. (Ctrl+C)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9 : 프로세스를 강제로 종료한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 15 : 프로세스와 관련된 파일들을 정리하고 종료한다. 종료되지 않는 프로세스가 있을 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) kill 1001&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill -15 1001&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill -9 1001&lt;br /&gt;&amp;nbsp;&amp;nbsp; * pkill&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - kill 명령과 마찬가지로 시그널을 보내지만 PID 가 아니라 프로세스의 명령이름(CMD)으로 프로세스를 찾아 종료.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill 명령과 차이점은 해당하는 명령이름으로 여러 개가 검색될 경우 한 번에 모두 종료한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자신이 소유한 프로세스만 종료 가능하다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ex) pkill man&lt;br /&gt;&amp;nbsp;&amp;nbsp; * killall&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - pkill 명령 처럼 프로세스의 명령 이름(CMD)으로 프로세스를 찾아 종료&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이 이름으로 실행 중인 모든 프로세스를 한 번에 종료. 해당 프로세스를 소유하고 있어야 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# 프로세스 관리 도구&lt;br /&gt;&amp;nbsp;&amp;nbsp; ps 명령으로는 현재 프로세스 목록을 확인만 할 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 이 정보를 사용자가 보기 편하게 다양한 기능을 제공하는 도구가 있는데, top 명령과 GUI인 그놈의 '시스템 정보' 이다&lt;br /&gt;&amp;nbsp;&amp;nbsp; * top 명령&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 현재 실행중인 프로세스의 정보를 주기적으로 출력하는데, 프로세스의 자세한 요약 정보를 상단에 출력하고,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 각 프로세스의 정보를 하단에 출력한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; top 명령은 종료하지 않고 실시간으로 프로세스의 상태를 보여주며 내부적으로 사용하는 명령도 있다&lt;br /&gt;&amp;nbsp;&amp;nbsp; * 출력 정보&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PID : 프로세스 ID&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USER : 사용자 계정&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PR : 우선 순위&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NI : Nice 값&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VIRT : 프로세스가 사용하는 가상 메모리의 크기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RES : 프로세스가 사용하는 메모리의 크기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SHR : 프로세스가 사용하는 공유 메모리의 크기&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %CPU : 퍼센트로 표시한 CPU 사용량&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %MEM : 퍼센트로 표시한 메모리 사용량&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIME+ : CPU 누적 이용 시간&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COMMAND : 명령 이름&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * top 내부 명령&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Enter, Space Bar : 화면을 즉시 다시 출력.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h, ? : 도움말 화면을 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k : 프로세스를 종료한다. 종료한 프로세스의 PID를 물어본다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n : 출력하는 프로세스의 개수를 바꾼다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; u : 사용자에 따라 정렬하여 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; M : 사용자의 메모리 크기에 따라 정렬하여 출력한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p : CPU 사용량에 따라 정렬하여 출력&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; q : top 명령을 종료 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp; * GUI&amp;nbsp; 그놈의 시스템 정보&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [현재 활동] - [프로그램 표시] - [유틸리티] - [시스템 정보]와 같은 순서로 동작&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 윈도우와 같은 프로세스 화면 나옴&lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/69</guid>
      <comments>https://comncme.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EA%B4%80%EB%A6%AC-%EB%AA%85%EB%A0%B9#entry69comment</comments>
      <pubDate>Tue, 17 May 2022 12:29:59 +0900</pubDate>
    </item>
    <item>
      <title>프로세스의 개념</title>
      <link>https://comncme.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98-%EA%B0%9C%EB%85%90</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스는 현재 시스템에서 실행 중인 프로그램을 뜻함.&lt;br /&gt;리눅스는 여러 개의 프로세스가 동시에 실행됨. 모든 프로세스는 부모-자식 관계를 가지고 있다.&lt;br /&gt;부모 프로세스는 자식 프로세스를 생성하고, 자식 프로세스는 또 다른 자식 프로세스를 만들 수 있다.&lt;br /&gt;리눅스 시스템을 부팅할 때 스케줄러가 실행한 프로세스인 systemd와 kthreadd 프로세스를 제외하면 모든 프로세스는 부모 프로세스를 가지고 있다.&lt;br /&gt;예를 들어 사용자가 vi를 실행하여 셸이 vi 프로세스를 생성할 경우, 셸은 부모 프로세스가 되고, vi는 자식 프로세스가 된다.&lt;br /&gt;사용자가 vi를 종료하면, 부모 프로세스인 셸로 돌아간다.&lt;br /&gt;* 프로세스의 번호&lt;br /&gt;&amp;nbsp; - 각 프로세스는 고유한 번호를 가지고 있는데, 이것을 PID(process identification number)라고 함.&lt;br /&gt;PID는 1번부터 시작하고 프로세스가 실행되면서 하나씩 증가하게 된다.&lt;br /&gt;리눅스가 실행될 때 PID 1번은 systemd 프로세스와 2번 kthreadd 프로세스가 차례대로 실행된다.&lt;br /&gt;이 때 1번 프로세스는 나머지 모든 시스템 프로세스의 부모 프로세스가 되고, 2번 프로세스는 모든 스레드의 부모 프로세스가 된다.&lt;br /&gt;(unix에서의 1번 프로세스는 init 프로세스 이다.)&lt;br /&gt;*프로세스의 종류&lt;br /&gt;&amp;nbsp; 1) 데몬 프로세스&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 특정 서비스를 제공하기 위해 존재하며, 리눅스 커널에 의해 실행된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 데몬은 평소에는 대기 상태로 있다가 서비스 요청이 들어오면 서비스를 제공한다. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 리눅스에서는 다양한 서비스를 제공하기 위한 데몬이 동작한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 예를 들어 원격 접속 서비스를 제공하기 위해 동작하는 sshd 프로세스가 있는데 이를 ssh 서버 데몬이라고 한다.&lt;br /&gt;&amp;nbsp; 2) 고아 프로세스&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자식 프로세스는 종료되면 부모 프로세스로 돌아간다. 그러나 자식 프로세스가 실행 중인데, 부모 프로세스가 먼저 종료되면&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자식 프로세스는 고아 프로세스가 된다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이 경우 1번 프로세스가 이런 고아 프로세스의 새로운 부모 프로세스가 되어 고아 프로세스가 작업을 마치고 종료할 수 있게 함.&lt;br /&gt;&amp;nbsp; 3) 좀비 프로세스&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 자식 프로세스는 종료될 때 부모 프로세스에 종료 정보를 보내고, 부모 프로세스가 이 정보를 받으면 자식 프로세스는 프로세스&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 테이블 목록에서 삭제된다. 하지만 자식 프로세스가 종료되었는데도 프로세스 테이블 목록에 남아 있는 경우가 있는데, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 이를 좀비 프로세스라고 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 부모 프로세스가 자식 프로세스의 종료 정보를 제대로 처리하지 않아 이런 일이 발생한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 좀비 프로세스는 프로세스 목록에 defunct 프로세스라고 나오기도 한다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 좀비 프로세스는 실제로 실행되지 않지만 테이블 목록을 차지하고 있기 때문에 좀비 프로세스가 증가하면 프로세스 테이블&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 용량이 부족해서 정상적인 프로세스가 실행되지 않을 수 있다.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 좀비 프로세스는 kill 명령으로 제거할 수 없으며, SIGCHLD 시그널을 부모 프로세스에 보내어 부모 프로세스가 자식 프로세스를 정리하도록 하거나 부모 프로세스 자체를 종료해야만 한다. 부모 프로세스가 종료되면 좀비 프로세스는 고아 프로세스가 되며, 새로운 부모인 1번 프로세스는 주기적으로 자식 프로세스의 종료 정보를 확인하여 정리한다.&lt;/p&gt;</description>
      <category>컴퓨터 세상/LiNuX</category>
      <author>Jimin Daddy</author>
      <guid isPermaLink="true">https://comncme.tistory.com/68</guid>
      <comments>https://comncme.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98-%EA%B0%9C%EB%85%90#entry68comment</comments>
      <pubDate>Tue, 17 May 2022 11:29:28 +0900</pubDate>
    </item>
  </channel>
</rss>