초기화 스크립트를 업데이트하는 방법

스 푸더

우분투 시스템에서 초기화 스크립트를 업데이트하는 적절한 방법은 무엇입니까?

내 버전의 gitlab을 6-0에서 6-1로 업그레이드하려고하는데 업그레이드의 일부는 init 스크립트 교체로 구성됩니다.

업그레이드 지침-6 단계

sudo rm /etc/init.d/gitlab
sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/6-1-stable/lib/support/init.d/gitlab
sudo chmod +x /etc/init.d/gitlab

init 스크립트를 업데이트 한 후 스크립트를 호출해도 아무 작업도 수행되지 않습니다. 일반적으로 gitlab 서비스의 프로세스 ID를 출력합니다.

root@gitlab:/etc/init.d# /etc/init.d/gitlab status
root@gitlab:/etc/init.d# (notice how nothing happens)

#No gitlab process is running
root@gitlab:/etc/init.d# ps aux |grep gitlab
root      4519  0.0  0.1   9384   928 pts/0    R+   20:03   0:00 grep --color=auto gitlab

이 문제를 해결하기 위해 취한 단계 :

실행 가능한지 확인

root@gitlab:/etc/init.d# ll gitlab
-rwxr-xr-x 1 root root 7195 Sep 28 19:29 gitlab*

스크립트 추적

    root@gitlab:/etc/init.d# strace ./gitlab
execve("./gitlab", ["./gitlab"], [/* 16 vars */]) = 0
brk(0)                                  = 0xb29000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd33a1a8000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=22291, ...}) = 0
mmap(NULL, 22291, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fd33a1a2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\30\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1811128, ...}) = 0
mmap(NULL, 3925208, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd339bc9000
mprotect(0x7fd339d7e000, 2093056, PROT_NONE) = 0
mmap(0x7fd339f7d000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7fd339f7d000
mmap(0x7fd339f83000, 17624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd339f83000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd33a1a1000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd33a1a0000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd33a19f000
arch_prctl(ARCH_SET_FS, 0x7fd33a1a0700) = 0
mprotect(0x7fd339f7d000, 16384, PROT_READ) = 0
mprotect(0x619000, 4096, PROT_READ)     = 0
mprotect(0x7fd33a1aa000, 4096, PROT_READ) = 0
munmap(0x7fd33a1a2000, 22291)           = 0
getpid()                                = 4459
rt_sigaction(SIGCHLD, {0x40f100, ~[RTMIN RT_1], SA_RESTORER, 0x7fd339bff4a0}, NULL, 8) = 0
geteuid()                               = 0
brk(0)                                  = 0xb29000
brk(0xb4a000)                           = 0xb4a000
getppid()                               = 4458
stat("/etc/init.d", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat(".", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("./gitlab", O_RDONLY)              = 3
fcntl(3, F_DUPFD, 10)                   = 10
close(3)                                = 0
fcntl(10, F_SETFD, FD_CLOEXEC)          = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x40f100, ~[RTMIN RT_1], SA_RESTORER, 0x7fd339bff4a0}, NULL, 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7fd339bff4a0}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[RTMIN RT_1], SA_RESTORER, 0x7fd339bff4a0}, NULL, 8) = 0
read(10, "#! /bin/sh\n\n# GITLAB\n# Maintaine"..., 8192) = 7195
stat("/usr/local/sbin/sudo", 0x7fffcbf518d0) = -1 ENOENT (No such file or directory)
stat("/usr/local/bin/sudo", 0x7fffcbf518d0) = -1 ENOENT (No such file or directory)
stat("/usr/sbin/sudo", 0x7fffcbf518d0)  = -1 ENOENT (No such file or directory)
stat("/usr/bin/sudo", {st_mode=S_IFREG|S_ISUID|0755, st_size=71288, ...}) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fd33a1a09d0) = 4460
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 1}], 0, NULL) = 4460
--- SIGCHLD (Child exited) @ 0 (0) ---
rt_sigreturn(0x11)                      = 4460
exit_group(1)                           = ?

나는 Ubuntu보다 Cent에 더 익숙하며 수동으로 update-rc.d를 실행하는 것에 대해 혼합 된 의견을 듣습니다. 이 블로그제안에 따라 어쨌든 시도했습니다

root@gitlab:/etc/init.d# sudo update-rc.d -f gitlab remove
 Removing any system startup links for /etc/init.d/gitlab ...
   /etc/rc0.d/K20gitlab
   /etc/rc1.d/K20gitlab
   /etc/rc2.d/S20gitlab
   /etc/rc3.d/S20gitlab
   /etc/rc4.d/S20gitlab
   /etc/rc5.d/S20gitlab
   /etc/rc6.d/K20gitlab
root@gitlab:/etc/init.d# update-rc.d gitlab defaults
 Adding system startup for /etc/init.d/gitlab ...
   /etc/rc0.d/K20gitlab -> ../init.d/gitlab
   /etc/rc1.d/K20gitlab -> ../init.d/gitlab
   /etc/rc6.d/K20gitlab -> ../init.d/gitlab
   /etc/rc2.d/S20gitlab -> ../init.d/gitlab
   /etc/rc3.d/S20gitlab -> ../init.d/gitlab
   /etc/rc4.d/S20gitlab -> ../init.d/gitlab
   /etc/rc5.d/S20gitlab -> ../init.d/gitlab

운이 없습니다. 스크립트는 여전히 실행되지 않습니다.

init 스크립트를 업그레이드하기 위해 우분투 시스템에서 수행해야하는 다른 작업이 있습니까?


업데이트 1 :

/var/log/auth.log를 보면 다음이 표시됩니다.

vagrant@gitlab:~$ sudo su -
root@gitlab:~# /etc/init.d/gitlab status
root@gitlab:~# tail /var/log/auth.log
Sep 28 20:52:31 gitlab su[2205]: pam_unix(su:session): session closed for user root
Sep 28 20:52:31 gitlab sudo: pam_unix(sudo:session): session closed for user root
Sep 28 20:52:34 gitlab sudo:  vagrant : TTY=pts/0 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/su -
Sep 28 20:52:34 gitlab sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=1000)
Sep 28 20:52:34 gitlab su[2311]: Successful su for root by root
Sep 28 20:52:34 gitlab su[2311]: + /dev/pts/0 root:root
Sep 28 20:52:34 gitlab su[2311]: pam_unix(su:session): session opened for user root by vagrant(uid=0)
Sep 28 20:52:43 gitlab sudo:     root : TTY=pts/0 ; PWD=/root ; USER=git ; COMMAND=/bin/false -c /etc/init.d/gitlab status
Sep 28 20:52:43 gitlab sudo: pam_unix(sudo:session): session opened for user git by vagrant(uid=0)
Sep 28 20:52:43 gitlab sudo: pam_unix(sudo:session): session closed for user git

업데이트 2

6-0- 안정과 6-1 안정 사이의 init 스크립트를 비교했습니다. 거의 완전히 재 작성된 것 같습니다.

차이점은 여기에 있습니다 :
https://gist.github.com/spudstud/6747146#file-diff-gitlab-init-scripts

실제 6-0 스크립트는 https://github.com/gitlabhq/gitlabhq/blob/6-0-stable/lib/support/init.d/gitlab 에서 볼 수 있습니다.

여기에 6-1 스크립트가 있습니다.

https://github.com/gitlabhq/gitlabhq/blob/6-1-stable/lib/support/init.d/gitlab

업데이트 3

bash -x를 사용하여 시작 스크립트를 시도했습니다.

root@gitlab:/etc/init.d# bash -x /etc/init.d/gitlab start
+ RAILS_ENV=production
+ app_root=/home/git/gitlab
+ app_user=git
+ unicorn_conf=/home/git/gitlab/config/unicorn.rb
+ pid_path=/home/git/gitlab/tmp/pids
+ socket_path=/home/git/gitlab/tmp/sockets
+ web_server_pid_path=/home/git/gitlab/tmp/pids/unicorn.pid
+ sidekiq_pid_path=/home/git/gitlab/tmp/pids/sidekiq.pid
+ '[' root '!=' git ']'
+ sudo -u git -H -i /etc/init.d/gitlab start
+ exit

성공,

스크립트는 사용자 'git'로 실행되어야합니다.

케이스

bash 또는 셸 스크립트를 디버깅하려면 스크립트를 사용하여 실행 bash -x하거나 스크립트를 편집하고라는 줄을 추가하는 것이 유용합니다 set -x. 이것은 변수 할당 값과 함께 스크립트가 실행될 때 각 줄의 실행 추적을 보여줍니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

초기화 스크립트를 기록하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트 파일에서 스크립트 초기화를 제거하는 방법

분류에서Dev

초기화 스크립트를 속여 0을 반환하는 방법

분류에서Dev

설치 스크립트를 통해 기존 cms 페이지를 업데이트하는 방법

분류에서Dev

초기화 후 사용자 정의 클래스의 UILabel 텍스트를 업데이트하는 방법 (Swift 3)

분류에서Dev

자바 스크립트의 기본 클래스에 초기화 매개 변수를 전달하는 방법

분류에서Dev

공유 자바 스크립트 모듈 기본 내보내기를 초기화하는 방법

분류에서Dev

클러스터 생성 후 GCP에서 클러스터 초기화 스크립트를 실행하는 방법

분류에서Dev

초기화 후 블록 텍스처를 동적으로 업데이트하는 방법이 있습니까?

분류에서Dev

초기화 셸 스크립트를 사용하여 비공개 git 저장소를 복제하는 방법

분류에서Dev

초기화 스크립트를 제거한 후 시스템을 복원하는 방법

분류에서Dev

zram을 시작하는 초기화 스크립트를 감지하는 방법은 무엇입니까?

분류에서Dev

zram을 시작하는 초기화 스크립트를 감지하는 방법은 무엇입니까?

분류에서Dev

React Hooks : 부모 컴포넌트에서 useEffect에 의해 초기화 된 props를 업데이트하는 방법

분류에서Dev

MATLAB 스크립트에서 Simulink 모델의 상수를 초기화하는 방법은 무엇입니까?

분류에서Dev

바가 다른 스크립트에서 초기화되었을 때 Bash 스크립트에서 kdialog progressbar를 사용하는 방법은 무엇입니까?

분류에서Dev

Ubuntu init 스크립트를 Amazon Linux AMI 초기화 스크립트로 변환하는 방법은 무엇입니까?

분류에서Dev

WinForm이 장기 실행 IronPython 스크립트를 호스팅하고 진행률 변경을 위해 UI를 업데이트하는 방법

분류에서Dev

암호화로 자바 스크립트를 숨기는 방법?

분류에서Dev

Mongoose-bulkOp 업데이트시 기본 필드 값을 초기화하는 방법

분류에서Dev

n 초 안에 bash 스크립트를 중단하는 방법

분류에서Dev

Flutter에서 텍스트 필드를 초기화하는 방법

분류에서Dev

Jenkins Powershell 스크립트에서 Env vars를 업데이트하는 방법

분류에서Dev

Snowflake에서 SQL 스크립트를 자동화하는 방법

분류에서Dev

자바 스크립트 객체를 직렬화하는 방법

분류에서Dev

"return false"가 스크립트를 최적화하는 방법

분류에서Dev

총계 계산기 실행에서 양식 입력을 반환하고 자바 스크립트 변수를 업데이트하는 방법

분류에서Dev

캔버스 크기에 맞게 tkinter 스크롤바 크기를 업데이트하는 방법

분류에서Dev

페이지에서 지시문 업데이트를 스크롤하거나 크기를 조정하는 방법

Related 관련 기사

  1. 1

    초기화 스크립트를 기록하는 방법은 무엇입니까?

  2. 2

    자바 스크립트 파일에서 스크립트 초기화를 제거하는 방법

  3. 3

    초기화 스크립트를 속여 0을 반환하는 방법

  4. 4

    설치 스크립트를 통해 기존 cms 페이지를 업데이트하는 방법

  5. 5

    초기화 후 사용자 정의 클래스의 UILabel 텍스트를 업데이트하는 방법 (Swift 3)

  6. 6

    자바 스크립트의 기본 클래스에 초기화 매개 변수를 전달하는 방법

  7. 7

    공유 자바 스크립트 모듈 기본 내보내기를 초기화하는 방법

  8. 8

    클러스터 생성 후 GCP에서 클러스터 초기화 스크립트를 실행하는 방법

  9. 9

    초기화 후 블록 텍스처를 동적으로 업데이트하는 방법이 있습니까?

  10. 10

    초기화 셸 스크립트를 사용하여 비공개 git 저장소를 복제하는 방법

  11. 11

    초기화 스크립트를 제거한 후 시스템을 복원하는 방법

  12. 12

    zram을 시작하는 초기화 스크립트를 감지하는 방법은 무엇입니까?

  13. 13

    zram을 시작하는 초기화 스크립트를 감지하는 방법은 무엇입니까?

  14. 14

    React Hooks : 부모 컴포넌트에서 useEffect에 의해 초기화 된 props를 업데이트하는 방법

  15. 15

    MATLAB 스크립트에서 Simulink 모델의 상수를 초기화하는 방법은 무엇입니까?

  16. 16

    바가 다른 스크립트에서 초기화되었을 때 Bash 스크립트에서 kdialog progressbar를 사용하는 방법은 무엇입니까?

  17. 17

    Ubuntu init 스크립트를 Amazon Linux AMI 초기화 스크립트로 변환하는 방법은 무엇입니까?

  18. 18

    WinForm이 장기 실행 IronPython 스크립트를 호스팅하고 진행률 변경을 위해 UI를 업데이트하는 방법

  19. 19

    암호화로 자바 스크립트를 숨기는 방법?

  20. 20

    Mongoose-bulkOp 업데이트시 기본 필드 값을 초기화하는 방법

  21. 21

    n 초 안에 bash 스크립트를 중단하는 방법

  22. 22

    Flutter에서 텍스트 필드를 초기화하는 방법

  23. 23

    Jenkins Powershell 스크립트에서 Env vars를 업데이트하는 방법

  24. 24

    Snowflake에서 SQL 스크립트를 자동화하는 방법

  25. 25

    자바 스크립트 객체를 직렬화하는 방법

  26. 26

    "return false"가 스크립트를 최적화하는 방법

  27. 27

    총계 계산기 실행에서 양식 입력을 반환하고 자바 스크립트 변수를 업데이트하는 방법

  28. 28

    캔버스 크기에 맞게 tkinter 스크롤바 크기를 업데이트하는 방법

  29. 29

    페이지에서 지시문 업데이트를 스크롤하거나 크기를 조정하는 방법

뜨겁다태그

보관