[완료]우분투 부팅시에 제가 만든 프로그램을 자동으로 실행되게 하는 방법에 대해서 조언 부탁드립니다.

sugar82의 이미지

안녕하세요.

이제 막 리눅스에 발을 들여놓고 공부하고 있는 사람입니다.

일단 c를 이용해 터미널에서 간단하게 수행되는 프로그램을 작성하였습니다.

gcc를 이용해 실행파일을 만들었고요, 파일명은 save_usb 입니다.

이것을 우분투 부팅시에 자동으로 시작되게 하고 싶습니다.

검색해보니 몇 가지 방법이 나오는데.. 제가 잘 몰라서 그런지 잘 안됩니다.

etc/init.d 에 save_usb 쉘 스크립트를 만들라고 하길래 test라는 이름의 쉘 스크립트를 만들었습니다.

#! /bin/bash

/home/yeon/example/save_usb/save_usb // 파일의 경로

위와같이 파일의 경로만 적어넣었습니다.

이것을 터미널로 실행을 시키면 동작을 합니다만

우분투 시작시에 자동으로 실행이 안되고 있습니다.

지식인에 물어봤는데 답변 주신분이 제가 말한거 대로 잘 된다고 하네요.. ㅜ.ㅜ

그런데 전 안되고 있습니다.

프로그램이 터미널에서 수행되는 것인데..

혹시 쉘스크립트에 터미널 동작을 시키는 명령을 넣고 위 파일 경로를 작성하여야 하는 것인가요?

도움 부탁드리겠습니다 ㅜ.ㅜ

익명 사용자의 이미지

제가 우분투는 아니어서(우분투도 openrc인가요?) 확실한 해답은 아니지만,

지정한 로컬 명령 실행시켜주는 부팅스크립트 설정 방법이 있을 겁니다.

젠투의 경우는 openrc를 쓰는데 예전엔 local.start, local.stop에

부팅 시, 셧다운 시 실행할 명령을 써넣었고, 요즘엔 /etc/local.d/에

쉘스크립트 만들면 되네요.

우분투의 경우도 설정이 바꼈을 수 있고요.
$ locate local.{d,start,stop}
으로 찾아보셔요.

우분투가 아니어서 정확한 답은 아니지만 참고하셔요.

lmk378의 이미지

시스템 -> 기본설정 -> 시작 응용 프로그램
이렇게 있지 않나요?

dgkim의 이미지

레드햇 계열에서는 /etc/rc.d/rc.local 파일에 등록을 했었고,
( inittab 파일과 runlevel, chkconfig로 했는데. )

우분투에서 저는 최근까지 /etc/rc.local 에 등록했었습니다.
( 어라 그런데 얼마전부터 동작하지 않는 것 같네요. )

아래 URL이 도움이 될지 모르겠습니다.

update-rc.d 명령이 있는데, 잘 사용해 보지 않아서 익숙하지 않네요.
( 예전에 익혔던 레드햇 계열과는 완전히 부팅 과정이 다른 것 같기도 하고. )

https://help.ubuntu.com/community/RcLocalHowto

ps. 그런데, /etc/rc*.d가 없던데 이건 뭔지. 우분투를 설치만하고 관리를 안했더니 어떻게 돌아가는지 잘 모르겠고.

sugar82의 이미지

/etc/init.d/test

내용은

#! /bin/bash

/home/yeon/example/save_usb/save_usb

이며..

sudo chmod +x /etc/init.d/test
sudo update-rc.d test defaults

명령을 주었습니다. 하지만 안되고 있어요 ㅜ^ㅜ

여기서 save_usb는 save_usb.c를 gcc 컴파일한 파일입니다.

물론 터미널에서 save_usb 파일을 실행시키면 잘 됩니다.

dgkim의 이미지

붙여 넣으신 update-rc.d 결과는 정상이었나 알고 싶습니다.
( 마지막 argument가 실행하는 순서를 정하는 번호가 들어가는데... )

그리고, save_usb는 실행후 종료하는 프로그램인가요? ( 데몬 형태가 아니라 )

rc파일에 마지막에 exit 0 문이 들어가는 것은 어떨지.

ps. 시스템 관리자 레벨은 아니고 일반 리눅스 사용자라서 확실한 답변은 안 되는 것 같습니다만.

익명 사용자의 이미지

update-rc.d 결과는 현재 아래 메세지가 나옵니다.

update-rc.d: warning: /etc/init.d/test missing LSB information
update-rc.d: see
System start/stop links for /etc/init.d/test already exist.

rc4.d 폴더에 S20test Link to shell script 가 생겼습니다.

프로그램은 제가 x를 누르면 종료하게 되있습니다.

익명 사용자의 이미지

rc4.d만이 아니라 다른곳에도 생겼군요;

/etc/rc0.d/K20test -> ../init.d/test
/etc/rc1.d/K20test -> ../init.d/test
/etc/rc6.d/K20test -> ../init.d/test
/etc/rc2.d/S20test -> ../init.d/test
/etc/rc3.d/S20test -> ../init.d/test
/etc/rc4.d/S20test -> ../init.d/test
/etc/rc5.d/S20test -> ../init.d/test

dgkim의 이미지

x를 누른다......

사용자 개입이 필요한 프로그램인가요?

사용자 개입이 필요하다면 init 스크립트가 아닌 다른 형태가 필요할 것 같기도 합니다.

사용자가 키를 입력한다면, '시작 프로그램'으로 등록하는 것을 고려하신다면?

sugar82의 이미지

프로그램 실행하면 메뉴 선택화면 나오고 셋중에 하나 동작을 고르는 것입니다.

제가 직접 실행시켜보면 선택화면까지 잘 나옵니다 ㅜ.ㅜ

시작 프로그램에 등록하는것은 진작 해봤는데 안됩니다.

gnome-terminal --command=/home/yeon/example/save_usb/save_usb

이렇게도 해봤는데.. 역시나 부팅시 프로그램이 시작되질 않아서.. ㅜ.ㅜ

익명 사용자의 이미지

정확히 어떤 동작/작업을 수행하는 프로그램인가요?

부팅시 어떤 단계에 작업이 필요한가요?

데몬으로 상주해야하나요? 환경설정후 종료해도 되나요?

이런 문제부터 고려해야겠네요.

쉘에서 실행되고 사용자 입력이 필요하며 부팅 때마다 실행해야 한다면,

위 방법처럼 DM에 쉘로 명령을 넘겨서 시작프로그램으로 등록하거나,

X 이전에 getty처럼 inittab에 등록할 수도 있을거 같은데요? 양극단의 방법이네요 ;)

cleansugar의 이미지

rc는 resource configuration의 약자. 인터넷에는 runtime이나 command란 예기도 있음

/etc/rc.d/rc.local 부팅 절차 마지막 로그인 전에 실행. 레드햇은 /etc/rc.local
/etc/profile 모든 사용자가 모든 셸 로그인 시
$HOME/.profile $HOME/.bash_profile $HOME/.bash_login 특정 사용자가 모든 셸 로그인 시. 하위 셸로 전파 안됨. .profile은 bash 이전에 쓰던 sh용.
/etc/bashrc 모든 bash 셸 사용자가 터미널을 매번 실행 시. 하위 셸로 전파됨. 데비안은 /etc/bashrc, 레드햇과 아치는 /etc/bash.bashrc.
$HOME/.bashrc 특정 bash 셸 사용자가 터미널을 매번 실행 시. 하위 셸로 전파됨.
/etc/xinitrc X서버를 시작할 때 /etc/X11/xinit/xinitrc의 심볼릭 링크
$HOME/.xinitrc X서버 시작할 때
/etc/skel 사용자가 계정을 만들 때 복사해올 원본 디렉토리

그밖에, xprofile xsession도 있습니다.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

sugar82의 이미지

일단 시작프로그램에 등록하는 방식으로 되었으나.. 원하던 방식이 아니어서..
암튼 정리해서 질문글에 다시 한번 등록하겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.