Linux Programming #4

박진우·2022년 8월 4일
0

Linux

목록 보기
4/7
post-thumbnail

💡 프로세스 명령어

◽ history –c

- ps 명령으로 현재 사용자 프로세스목록을 출력한다.

  • f 명령어 : UID, PID, PPID, C, STIME, TTY, TIME, CMD 등의 필드목록으로, CMD필드의 전체 명령어 형태를 보여준다.

  • u 명령어 : 사용자 ID를 지정한다 (이름도 지원)

  • e 명령어 : 커널 프로세스를 제외한 모든 프로세스를 보여준다.




◽ pgrep

  • pgrep 명령으로 보안접속쉘 프로세스 "sshd"를 찾아서 출력한다.




◽ sleep

  • 주어진 시간동안 쉬는 프로그램 sleep 1000& 를 실행시키고 ps프로세스를 확인하고 pkill로 종료한다.




◽ top

  • 현재 OS의 상태를 나타내주는 CLI 어플리케이션인 top 명령어를 이용하여 프로세스의 상세 정보를 출력한다.




◽ job

  • 작업의 상태를 표시하는 jop 명령어

  • 현재 쉘 세션에서 실행시킨 백그라운드 작업의 목록 이 출력되며, 각 작업에는 번호가 있어 kill 명령어 뒤에 '%번호' 등으로 사용할 수 있다.

  • vi 실행후 ctrl + z로 중지시키도 job명령으로 쉘에서 실행되는 작업을 확인한다.




◽ fg

  • Background에서 실행되고 있는 작업을 forground 로 옮길 때 'fg' 명령어를 사용한다.

  • 이전의 중지시킨 vi 명령의 작업을 fg %작업번호로 포그라운드 작업으로 실행시키고, vi의 마지막행 모드로 q!로 종료시킨다.




◽ at

  • 지정된 시간명령어프로그램을 실행시키는 명령어다.

  • "cron" 과 다른 점은 "cron" 은 설정한 날짜가 되면 반복적으로 등록된 처리가 실행되지만 "at" 명령의 경우는 한 번만 처리 가 실행된다.

  • 1회성 작업의 경우 「at」를 사용하는 것이 더 편리하다.

  • at 명령을 이용해 1분 후 sleep 1000& 명령이 수행되도록 예약하고 예약시간이 지나 pgrep으로 프로세스 실행을 확인.




◽ 분할 컴파일 c 프로그램 모듈

// bubble.c
void bubblesort(int* arr, int len)
{
	int i, j;
	int temp = 0;

	for (i = 0; i < len - 1; i++)
	{
		for (j = 0; j < (len - 1 - i); j++)
		{
			if (arr[j] < arr[j + 1])
			{
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;

			}
		}
	}

}
// sortmain.c
#include <stdio.h>
#include “myheader.h”
int main(void)
{
	int arr[7];
	for (int i = 0; i < 7; i++)
	{
		printf("입력 : ");
		scanf("%d", &arr[i]);
	}
	printf("\n");

	bubblesort(arr, 7);

	for (int i = 0; i < 7; i++)
	{
		printf("%d ", arr[i]);
	}


}

// myheader.h
void bubblesort(int* arr, int len);

  • vi 에디터를 이용해 다음의 C 프로그램 모듈들을 작성하고 각각을 컴파일하고 하나의 실행파일로 만들어 실행한다. (=분할 컴파일)




◽ 분할 컴파일 c 프로그램 모듈2

// func.c

int func(int n)
{
	static int i = 1;
	if (n == 0)
		return i;
	i = i * 2;
	func(n - 1);
	
}

// main.c
#include <stdio.h>
#include “func.h”

int main(void)
{
	int num;
	printf("정수입력 : \n");
	scanf_s("%d", &num);
	printf("2의 %d승은 %d\n", num, func(num));
	return 0;

}



// func.h
int func(int n);




◽ c 프로그램 단일 모듈

#include <stdio.h>

int main(void)
{
	int i = 1;
	
	for (int j = 2; i <= 10; j++)
	{
		for (int a = 2; a <= j; a++)
			if (a == j)
			{
				printf("%d  ", a);
				i++;
			}
			else if (j % a == 0)
				break;
	}
	
}




◽ c 프로그램 단일 모듈2

#include <stdio.h>

int main(void)
{
	int a, b,temp;
	printf("최대 공약수를 구하기 위해 두 수를 입력하세요\n");
	scanf("%d %d", &a, &b);
	
	if (a > b)
	{
		temp = a;
		a = b;
		b = temp;
	}

	int r;

	while (1)
	{
		
		r = b % a;
		a = b;
		b = r;
		if (b == 0)
			break; 
	}

	printf("두 수의 최대공약수는 %d 입니다.\n", a);

}

0개의 댓글