프로그램 업데이트에 관한 질문입니다.

lovejin0309의 이미지

프로그램을 원격에서 업데이트하는 것에 대한 질문입니다.

현재 APP01이 실행중인 상태에서 APP01을 업데이트 하려고 한다면

APP01을 종료시킨후 업데이트를 하는 방법밖에 없나요?

APP01이 실행중인 상태에서 파일을 받은후 APP01을 종료후 다시 시작하는 방법은 사용할 수 없을까요?

hey의 이미지

리눅스에서는 실행중인 파일을 고치거나 지울 수 있습니다.

윈도우에서는 실행중인 파일을 건드릴 수 없습니다. 그래서 실제 실행 파일 앞에서 런처가 업데이트를 실시하고 실행 파일을 이름을 바꾸거나 하는 핵을 사용하죠.

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


lovejin0309의 이미지

테스트를 해 보았습니다.

[root@host application ]$ ps
.
.
.
.
.
.
.
.
143 4,64 00:00:00 APP01

[root@host application ]$ cp ../APP01 ./

위와 같이 하면 다음과 같이 뜹니다.

cp: cannot creat regular file './APP01': Text file busy

위와 같은 문제점을 어떻게 해결할 수 있을까요?

pynoos의 이미지

hey님이 쓰신 것중 수정에 대한 것은 2.2이나 2.4 초창기까지 유효한것 같습니다.

text가 busy하다고 나오는 것은 수행하는 코드의 바이너리 이미지가 memory mapped IO 형태로 되어 있기 때문입니다. 좀더 정확히는 바이너리 이미지가 들어 있는 inode가 memory map되어 있는 것인데요.

cp로 명령으로 바이너리를 교체하면 inode가 유지되므로 불가능하지만 mv 명령으로 바이너리를 교체하면 inode가 바뀌므로 memory map이 유지되면서 교체 가능합니다. 프로그램이 실행중이라면, 이전 inode의 데이터는 파일시스템에서는 사라지지만 공간은 차지하고 있는 파일이 됩니다.

more /proc/PID/maps 로 확인해보시면 경로 앞의 inode 값을 확인해 볼 수 있습니다.
또한 ls -ial 로 파일 시스템상의 inode도 확인해 볼 수 있습니다.

리눅스 과거 버전은 실행 바이너리에 대해서 memory map을 안시켜놓은 듯합니다. 그시절에 확인을 안해봐서..;)

hey의 이미지

부끄러워 //_//

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


댓글 달기

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