[질문]ssh를 이용한 다른서버 쉘실행 시 질문입니다.

cyc6409의 이미지

ssh를 이용해서 다른서버의 프로세스를 종료하고 파일카피하고 다시 프로세스를 시작하려고 하는데요.
1번서버에서 restart.sh를 실행하면 restart.sh에서 ssh id:ip "copy.sh"를 실행해서 2번 서버의 copy.sh를 실행합니다.
그럼 2번서버의 copy.sh내에서는 stop.sh를 실행하고 파일을 카피하고 sleep 10 하고 start.sh를 실행해서 프로세스를
실행시킵니다.

근데 이렇게 1번서버의 restart.sh를 실행하면 프로세스들이 내려갔다가 다시 파일 카피하고 start하는데요.
1번 서버 프롬프트가 떨어지지를 않습니다. 그래서 그냥 ctrl+c로 나옵니다.

2번서버에서 copy.sh를 실행하면 정상적으로 프롬프트는 떨어집니다.

여러가지 테스트를 해봤는데 2번서버의 copy.sh안에서 stop.sh, start.sh 쉘을 2번 호출하는데
두개중 하나의 쉘만 실행하게 수정하고 1번서버의 restart.sh를 실행하면 프롬프트가 떨어지네요.

1번 서버 ssh사용시 2번서버의 실행 shell안에서 다시 shell을 실행 시키는데 제한이 있는지 궁금합니다.

netj의 이미지

ssh에서 원격으로 내리는 명령은 기본적으로 sh(또는 사용자의 셸)를 쓰는 것과 차이가 없습니다.

ssh로 명령을 내릴 때와 2번에 로긴한 대화형 셸에서 내릴 때 몇 가지 차이는 있을 수 있습니다.
1. 셸 설정(BASH의 경우, .bash_profile과 .bashrc 중 어느 쪽이냐) 및 sshd가 지정해주는 환경변수들이 차이가 날 수 있으며
2. ssh는 원격 명령의 현재 작업 디렉토리가 원격사용자의 홈이 된다는 점 (원격 명령이니 당연하겠죠),
3. 로긴한 대화형 셸은 입출력이 터미널이지만 그냥 ssh로 띄운 명령은 터미널이 아닌 점
등이 있겠습니다.

이 경우는 3번이 다소 의심스러운데,
만약 ssh 연결의 입출력에 터미널 기능을 부여하고 싶다면
ssh -t user@host copy.sh 처럼 ssh에 -t를 줘보십시오.
ssh user@host vim 과 ssh -t user@host vim 를 비교해보시면 차이 확인이 가능합니다.

이것이 원인이 아니라면
1번 호스트에서 ssh user@host copy.sh는 바르게 실행되는지를 확인하는게 좋겠습니다.
그래야 restart.sh의 문제인지 ssh copy.sh의 문제인지 알 수 있을테니.

--
Every truth is in the detail.

cyc6409의 이미지

1번서버에서 ssh user@host copy.sh로 바로 실행해도 같은 결과가 나옵니다.
그리고 -t옵션을 사용하니까 x.xx.xxx.xx 에 대한 연결이 닫혔습니다.
라고 나오면서 1번서버의 프롬프트는 떨어지는데 2번서버의 실행 쉘내에서 실행하는 2개 쉘 중 두번째 쉘이 echo로 찍은 메세지
들은 화면에 나옵니다. 프로세스가 start 되었다고 나오는데 실제로는 프로세스는 시작 되지 않네요.

테스트해보니까 java프로세스를 실행시킨는 쉘이 포함되어 있으면 프롬프트가 떨어지지 않네요.
ssh -t 옵션으로 리모트 서버의 java프로세스 실행 쉘을 실행하면 실행되는 쉘에서 echo 메세지들은 다 나오고
프롬프트 까지 틀어지는데 실제로 java프로세스는 실행되지 않습니다.
-t옵션을 빼고 ssh로 리모트 서버의 java프로세스를 실행하는 쉘을 실행시키면 프로세스는 start되고
ssh를 실행한 서버의 프롬프트는 떨어지지 않네요.

ssh로 리모트 서버 java프로세스 실행시 프롬프트를 떨어지게 할수 있는 옵션이나 방법이 궁금하네요?
ssh명령이 아닌 해당서버에서 java프로세스 실행 쉘 실행하면 echo 메세지 나오고 프로세스 실행되고 프롬프트도 떨어집니다.

hada의 이미지

ㅜㅜㅜ제가 지금 딱 그상황입니다.
서버1에서 서버2의 쉘스크립트를 실행했는데 서버1에서 프롬프트가 안떨어지네요.. 오마갓 13년 전 글이라니...
해결을 어찌하셨을까나.....

댓글 달기

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