เริ่มต้นและปิด tomcat ผ่าน ssh


0

Updated

ฉันพบว่าเส้นทางของ jdk ที่ใช้นั้นผิด ควรจะเป็นกรณีที่ต่ำกว่าเป็นวิธีที่เกิดขึ้น? เมื่อฉันเรียกใช้สคริปต์นี้โดยตรงบนเซิร์ฟเวอร์มันก็โอเคeval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not foundJavajava


ฉันพยายามที่จะเริ่มต้นหรือปิดตัวจัดการโพสต์ผ่านไคลเอนต์ระยะไกล

บนเซิร์ฟเวอร์ของฉันฉันมี tomcat 3 แบบแตกต่างกัน: tomcat1, tomcat2 และ tomcat3

ประการแรกฉันพยายามเรียกใช้tomcat_path/bin/shutdown.shเพื่อหยุดมันผ่าน ssh และคำสั่งคือ

ssh jake@1xx.3x.2x.1xx "cd /home/jake/tomcat2/bin;exec bash ./shutdown.sh"

ทั้ง"และ'พยายาม แต่ไม่ทำงานผลลัพธ์คือ

eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found

ดูเหมือนว่าเชลล์สคริปต์จะรันบนไคลเอ็นต์โลคัลของฉันเพราะบนเซิร์ฟเวอร์จะมีไฟล์นี้

มีวิธีการเรียกใช้เชลล์สคริปต์บนเซิร์ฟเวอร์ระยะไกลอย่างถูกต้องหรือไม่?

อัปเดต

ฉันวิ่ง

ssh jake@1xx.xx.25.100 "sh -x /home/jake/tomcat/bin/shutdown.sh > /home/jake/tomcat.log 2>&1"

และผลลัพธ์ใน tomcat.log คือ:

+ PRG=/home/jake/tomcat/bin/shutdown.sh
+ [ -h /home/jake/tomcat/bin/shutdown.sh ]
+ dirname /home/jake/tomcat/bin/shutdown.sh
+ PRGDIR=/home/jake/tomcat/bin
+ EXECUTABLE=catalina.sh
+ [ ! -x /home/jake/tomcat/bin/catalina.sh ]
+ exec /home/jake/tomcat/bin/catalina.sh stop

eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found

คุณควรจะสามารถวิ่งได้... /home/jake/tomcat2/bin/shutdown.sh- จะเกิดอะไรขึ้นถ้าคุณลองทำ
user619714

ยังคงเป็นผลลัพธ์เดียวกันeval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found
bxshi

... sh -x /home/jake/tomcat2/bin/shutdown.sh > /home/jake/tomcat.log 2>&1และโพสต์ไฟล์บันทึกที่นี่
quanta

@quanta ยังคงเป็นปัญหาเดียวกันที่นี่
bxshi

คุณสามารถตรวจสอบเพื่อดำเนินการผ่าน ssh jake@your.ip.add.here "/opt/Java/jdk1.6.0_25/jre/bin/java -version หรือไม่มี setenv.sh อยู่ในไดเรกทอรี tomcat ของคุณ (เพื่อกำหนดจาวา เส้นทาง)?
patricks

คำตอบ:


1

ฉันพบว่าเส้นทางของ jdk ที่ใช้นั้นผิด eval: 1:: /opt/Java/jdk1.6.0_25/jre/bin/javaไม่พบว่า Java ควรเป็นตัวพิมพ์เล็กจาวาสิ่งที่เกิดขึ้น? เมื่อฉันเรียกใช้สคริปต์นี้โดยตรงบนเซิร์ฟเวอร์มันก็โอเค

เนื่องจากคุณได้ตั้งค่าตัวแปรสภาพแวดล้อมที่ไม่ถูกต้องที่ไหนสักแห่ง (อาจเป็น~/.bashrc) bash อ่านไฟล์เริ่มต้นที่แตกต่างกันตามชนิดของเชลล์ที่แตกต่างกัน โปรดทราบว่า:

  • ssh user@host 'command' เป็นเชลล์แบบไม่มีการโต้ตอบ
  • ในขณะที่ssh user@hostและเรียกใช้คำสั่งเป็นเปลือกโต้ตอบ

http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files


ฉันได้ลองแล้วssh jake@125.39.25.100 ./home/jake/tomcat/bin/shutdown.shแต่นั่นใช้สคริปต์บนไคลเอนต์ไม่ใช่เซิร์ฟเวอร์ระยะไกล
bxshi

/home...ลบจุดก่อน
quanta

ยังคงเป็นปัญหาเดียวกัน ฉันคิดว่ามันเป็นเพราะข้อผิดพลาดแสดงให้เห็นว่าeval: 1: /opt/Java/jdk1.6.0_25/jre/bin/javaเส้นทางควรจะเป็นjavaแต่นี่คือJava
bxshi

grep '/opt/Java' ~/.bashrc ~/.bash_profile /etc/profile...?
ควอนตั้ม

ใน/etc/profileนั้นมีexport JAVA_HOME=/opt/java/jdk1.6.0_25และjavaเป็นกรณีที่ต่ำกว่า
bxshi

0

ดูเหมือนว่าจะไม่ได้ตั้งค่าตัวแปร env แปลก ๆ เพื่อความสนุก ... ลองค้นหาตัวอย่างของ "/ opt / Java" ... วิธีที่ง่ายในการทำเช่นนั้น

find /etc -type f |grep -v ' ' | xargs grep /opt/Java

อาจชี้ไปที่ไฟล์กำหนดค่าที่ไม่ดีในระบบของคุณ

อาจมีโอกาสที่แปลก (แปลกมาก) ... ที่คุณมีการกำหนดค่า ssh แปลก ๆ ซึ่งช่วยให้ไคลเอนต์ตัวแปร env ถูกส่งผ่าน (และตั้งค่า) บนเซิร์ฟเวอร์ [สถานการณ์ที่หายาก ... แต่เป็นไปได้ในทางทฤษฎี]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.