Category Archives: Tip

tip, trubleshooting
도움이 되는 팁 또는 문제해결을 다룹니다.

[Tip | Ubuntu] zombie 프로세스 제거

프로세스를 종료 하였음에도 메모리가 정상해지 되지 않았거나 프로세스 엔트리에 남아 실행되고 있는 경우 이를 제거 하는 방법을 정리한다.


테스트서버 : Ubuntu22.04
작성일 : 2023-01-03

Zombie

On Unix operating systems, a zombie process or defunct process is a process that has completed execution but still has an entry in the process table, allowing the process that started it to read its exit status. In the term's colorful metaphor, the child process has died but has not yet been reaped.

When a process ends, all of the memory and resources associated with it are deallocated so they can be used by other processes. However, the process's entry in the process table remains. The parent is sent a SIGCHLD signal indicating that a child has died; the handler for this signal will typically execute the wait system call, which reads the exit status and removes the zombie. The zombie's process ID and entry in the process table can then be reused. However, if a parent ignores the SIGCHLD, the zombie will be left in the process table. In some situations this may be desirable, for example if the parent creates another child process it ensures that it will not be allocated the same process ID.

1> zombie 프로세서 확인

top
# ----------------------------------------
top - 10:13:56 up 4 days, 16:19,  2 users,  load average: 0.08, 0.53, 3.08
Tasks: 246 total,   1 running, 245 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.2 us,  0.7 sy,  0.0 ni, 97.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
# ----------------------------------------

zombie의 숫자가 1이상이라면 pid 를 확인하여 kill 해야한다.


2> pid 확인

ps axo stat,ppid,pid,comm | grep -w defunct
# ----------------------------------------
Z     544478  545217 ruby <defunct>
Z     544478  547937 ruby <defunct>
# ----------------------------------------

3> kill 프로세스

kill -9 544478

[Tip | Ubuntu] 노트북 닫아도 서비스 유지

개발용으로 노트북에 서버를 설치하였으나 닫으면 절전모드가 되어 버리는 경우 아래와 같은 방법으로 서버를 유지할 수 있다.


작성일 : 2022-06-08

1> logind.conf 설정파일 변경

sudo vi /etc/systemd/logind.conf
# ASIS
#HandleLidSwitch=suspend
#LidSwitchIgnoreInhibited=yes
# TOBE
HandleLidSwitch=ignore
LidSwitchIgnoreInhibited=no

2> system-logind 서비스 재시작

sudo service systemd-logind restart

[Tip | Android] ‘index.andriod.bundle’ is packaged correctly for release

빌드나 디바이스 테스트 중 아래와 같은 에러가 발생할 경우 해결방안을 정리한다.

Unable to load script. Make sure you’re either running a Metro server (run ‘react-native start’) or that your bundle ‘index.android.bundle’ is packaged correctly for release.


작성일 : 2021-08-23
OS : macOS Big Sur 버전 11.5

1> 에러화면


2> 해결방안

빌드시 asset(자원)을 관리해주는 bundle 쪽 문제로 보인다. 아래 명령을 통해 index.android.buldle 파일을 생성해주자.

react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res

3> 해결불가시 다음을 시도해보자.

3-1> 앱소스 폴더에 아래 폴더가 없다면 생성해준다.

{app Path}/android/app/src/main/assets

3-2> clean 옵션으로 이전 빌드시 잘못 생성된 파일을 정리한다.

cd {app Path}/android
./gradlew clean