우분투 부팅시에 제가 만든 프로그램을 자동으로 실행되게 하는 방법에 대해서 ..

sugar82의 이미지

어제 이 주제에 관한 질문글을 올려서 많은 도움을 받았습니다.

매우 감사드립니다.

하지만 결국 해결은 안되었습니다.

제가 시도한 방법은

1) /etc/rc.local 에 등록 -> 안됨

2) /etc/init.d 에 등록 -> 안됨. 이 부분에 대해서 많이 가르쳐 주셨습니다.

3) /etc/bashrc 에 등록 -> 터미널 실행해야 동작. 터미널 실행시 마다 해당 프로그램 작동

4) ~/.bashrc 에 등록 -> 터미널 실행해야 동작. 터미널 실행시 마다 해당 프로그램 작동

이랬습니다.

결국 시작프로그램에 /usr/bin/gnome-terminal --command=/home/yeon/example/save_usb/save_usb

명령을 등록하여 터미널 실행하고 프로그램이 동작하게 하니 부팅시 되었습니다.

최종적으로 제가 원하는 것은 임베디드 리눅스에서 제가 작성한 프로그램이 부팅시 동작하는 것인데요..

초보라 먼저 우분투 시작시 임시로 작성한 간단한 프로그램(터미널에서수행)이 동작하게 해보려는 것이었습니다.

하지만 UI로 시작프로그램에 등록을 하는 방법은 저에게는 도움이 안될 것으로 생각이 됩니다.

시작프로그램에 등록하는 것과 같은 효과를 얻는 다른 방법을 무엇이 있는지 아시면 가르쳐 주시면 감사하겠습니다.

그리고 1, 2 번 방법시 왜 동작을 안하는지도 알려주시면 감사하겠습다. (__)

모두 오늘 좋은 하루 되세요~

익명 사용자의 이미지

rc.local 파일에 쓰는것이 일반적인 방법입니다만,
이 경우 path 및 실행환경에 주의해야합니다.

먼저 아래 명령어처럼 간단한 것을 등록해보시고,
되는지 확인해보신후 다음 단계로 진행하심이..

/bin/date > /tmp/test.rlt
익명 사용자의 이미지

간단하게 부팅 과정을 살펴보면,
BIOS --> Bootloader(grub, lilo 등) --> kernel --> /bin/init (/etc/inittab에서 설정)
--> rc(보통 여러 데몬과 서비스들로 구성된 스크립트들의 유기적 구조이며 배포판에 따라 다른 경우가 많음)

init은 inittab의 설정에 따라 /sbin/agetty등을 불러서 터미널의 띄우는 등의 작업 외에,
런레벨에 따라 시스템의 서비스와 데몬들을 본격적으로 띄울 /sbin/rc을 실행합니다.
rc는 받은 런레벨과 설정에 따라 하위 스크립트들(/etc/init.d/* 등)를 실행시키는데,
이 스크립트들이 바로 디바이스, 네트웍, 파일시스템, X서버 등등을 로드하고 실행하는
데몬과 서비스들이며 이들이 수행됨으로 부팅이 완료되는 것입니다.
참고로 시스템 종료의 경우 init에 런레벨 0을 전달(간단하게는 명령행에 /sbin/init 0),
시스템 재시작의 경우 init에 6을 전달(/sbin/init 6)하고 init는 rc로 주어진 런레벨을 수행하게됩니다.

문제로 돌아와서, 보통 관리자가 특정한 콘솔 명령을 부팅 때마다 실행하려면
init이나 rc의 단계에서 설정하게 되는데요.
실행할 명령에 필요한 자원이 올라 오는 시점이나 서비스 중요성과 시스템 설정 일관성 등의 이유로
rc의 설정을 따르는 것이 보편적입니다.
대부분의 배포판들의 rc가 부트 프로세스의 마지막으로 관리자가 원하는 명령을 실행시킬 수 있도록
설정 방법을 제공하고 있습니다만, 각 배포판에 따라 방법이 다른 경우가 많지요.

가장 적당한 방법은 배포판에서 제공하는 부트서비스 설정 방법을 따르는 것인데요. 검색해보니
우분투의 경우에는 https://help.ubuntu.com/community/RcLocalHowto 여기 설명을 따르면 되겠군요.
(내용을 보니 /etc/rc.local에 명령을 기입하거나,
/etc/init.d/local 서비스를 만들고 updaterc.d를 이용해 rc에 이 서비스를 등록하라는 군요.)

bashrc나 bash_profile은 bash 쉘의 설정이며 이들은 bash 쉘의 설정 파일이며 login이 쉘을 부르면
실행되게 되는 것들이죠. 그래서 쉘을 열 때 실행하려는 명령을 설정하기 좋구요.

또 다른 경우로, 윈도우의 시작프로그램처럼 Gnome이나 KDE 등의 데스크탑 매니져가 실행될 때
시작할 명령을 등록하는 방법은 각 DM 들이 제공하는 방법을 따르면 되겠습니다.

ps. /etc/rc.local에서 안된 이유는 아마도 이 쉘 스크립트를 제대로 만들지 못했기 때문인것 같네요.
#/bin/sh
/path/to/my/command &
와 같이 내용 확인하시고, chmod +x /etc/rc.local로 실행 권한 주는 과정이 빠졌는지 점검해보세요.

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.