ฉันสามารถสร้างแอปพลิเคชั่นอัตโนมัติเพื่อเริ่มต้น Tomcat เมื่อฉันต้องการได้หรือไม่?


4

ฉันสามารถเริ่ม Apache Tomcat (ติดตั้งผ่าน HomeBrew) ใน Terminal โดยใช้

$ catalina run

แต่มันไม่ทำงานในการใช้สคริปต์ Shell แอปพลิเคชัน Automator bash

ฉันพยายามตั้งค่า bash Shell script ใน Automator เช่นนี้:

catalina run

เมื่อฉันเรียกใช้แอปพลิเคชัน Automator มันจะไม่ทำงานและแสดงให้เห็น -: catalina: command not found.

วิธีที่ถูกต้องในการสร้างแอปพลิเคชัน Automator คืออะไรหรือฉันจำเป็นต้องใช้ AppleScript?

คำตอบ:


2

เพื่อตอบคำถามที่คุณถามจริง:

  • ฉันสามารถสร้างแอปพลิเคชั่น Automator เพื่อเริ่มและหยุด Tomcat ได้ไหม

    ใช่

  • เป็นวิธีที่ถูกต้องในการทำเช่นนี้หรือฉันต้องการ AppleScript หรืออะไร

  • และเป็นไปได้ไหมที่จะทำทั้งเริ่มและหยุดในแอป Automator หนึ่งแอป
  • วิธีที่ถูกต้องในการสร้างแอปพลิเคชัน Automator คืออะไรหรือฉันจำเป็นต้องใช้ AppleScript?

เนื่องจากโดยปกติแล้วจะมีวิธีหนึ่งที่จะทำให้บางสิ่งบางอย่างสำเร็จให้งดใช้ "... วิธีที่ถูกต้องในการ ... " และแสดงตัวเลือกบางอย่างให้คุณเห็น

หากคุณเพียงต้องการที่จะสามารถ สลับสถานะ ของ Apache Tomcat , เช่น เริ่มต้น หรือ หยุด มันจากนั้นบรรทัดคำสั่งต่อไปนี้สามารถใช้ใน อัตโนมัติ แอพลิเคชันเวิร์กโฟลว์ ใช้งาน เรียกใช้ Shell Script การกระทำ :

  • ใน อัตโนมัติ สร้างใหม่ แอพลิเคชันเวิร์กโฟลว์ .
  • เพิ่ม เรียกใช้ Shell Script การกระทำ .
    • การตั้งค่า : เชลล์: / bin / bash และ ผ่านอินพุต: ไปยัง stdin

แทนที่ รหัสเริ่มต้น ด้วยบรรทัดต่อไปนี้ของ รหัส :

[[ $(/bin/ps aux | /usr/bin/grep [t]omcat) == "" ]] && /usr/local/bin/catalina start || /usr/local/bin/catalina stop
  • บันทึก อัตโนมัติ แอพลิเคชันเวิร์กโฟลว์ .

คำสั่งนี้ การตรวจสอบ เพื่อดูว่า Apache Tomcat คือ วิ่ง และถ้า ไม่ จากนั้น เริ่มต้น มันและถ้า ใช่ จากนั้น หยุด มัน. มันง่ายๆ สลับสถานะ ของ Apache Tomcat . มันเป็นวิธีการแก้ปัญหาไม่จีบ


วิธีแก้ปัญหาที่แข็งแกร่งกว่าคือการใช้ เรียกใช้ AppleScript การกระทำ แทน.

  • ใน อัตโนมัติ สร้างใหม่ แอพลิเคชันเวิร์กโฟลว์ .
  • เพิ่ม เรียกใช้ AppleScript การกระทำ .

ใช้สิ่งต่อไปนี้ ตัวอย่าง AppleScript รหัส ในสถานที่ของ รหัสเริ่มต้น :

try
    set isRunning to (do shell script "/bin/ps aux | /usr/bin/grep [t]omcat")
on error number 1
    set isRunning to missing value
end try

if isRunning contains missing value then
    display dialog "                Click the Start button to start Apache Tomcat." buttons {"Cancel", "Start"} ¬
        default button 2 with title "Start Apache Tomcat"
    do shell script "/usr/local/bin/catalina start"
else
    display dialog "                Click the Stop button to stop Apache Tomcat." buttons {"Cancel", "Stop"} ¬
        default button 2 with title "Stop Apache Tomcat"
    do shell script "/usr/local/bin/catalina stop"
end if
  • บันทึก อัตโนมัติ แอพลิเคชันเวิร์กโฟลว์ .

นอกจากนี้ยังสามารถใช้ใน AppleScript ใบสมัคร สร้างขึ้นใน ตัวแก้ไขสคริปต์ ด้วยตัวเองโดยไม่ต้องการ อัตโนมัติ . ไม่ว่าในกรณีใดเมื่อเรียกใช้คุณจะได้รับการนำเสนออย่างใดอย่างหนึ่ง กล่องโต้ตอบ .

Start Apache Tomcat Stop Apache Tomcat

สิ่งนี้เปิดโอกาสให้คุณดูหรือไม่ วิ่ง และ ยกเลิก ถ้าคุณต้องการแทน


บันทึก: ด้วยข้อยกเว้นของการใช้ try คำแถลง และ on error number 1 คำแถลง ไม่มีอื่น ๆ การจัดการข้อผิดพลาด นำเสนอใน ตัวอย่าง AppleScript รหัส . สอบถามเพิ่มเติม การจัดการข้อผิดพลาด ตามที่อาจจะเหมาะสม / ต้องการ / ต้องการความรับผิดชอบนั้นขึ้นอยู่กับผู้ใช้ในการเพิ่มเพิ่มเติมที่เหมาะสม การจัดการข้อผิดพลาด สำหรับใด ๆ รหัสตัวอย่าง นำเสนอ

นอกจากนี้ยังมี รหัสตัวอย่าง นำเสนอในที่นี้ได้รับการทดสอบภายใต้การติดตั้ง macOS 10.12.6 อย่างสมบูรณ์ด้วยเครื่องมือบรรทัดคำสั่ง (macOS Sierra รุ่น 10.12) สำหรับ Xcode-9.1, Homebrew, JDK 9.0.1 และ apache-tomcat-8.5.23.tar.gz ฉันไม่เห็นเหตุผลว่าทำไมสิ่งนี้จะไม่ทำงานใน macOS 10.13 ด้วย


ขอบคุณมาก!!! รหัสข้างต้นใช้งานได้ใน 10.13! สิ่งหนึ่งที่ฉันสังเกตเห็นคือกล่องโต้ตอบไม่ได้ใช้ค่าปุ่ม (สคริปต์เริ่มต้น / หยุดด้านล่างบรรทัดกล่องโต้ตอบจะทำงานไม่ว่าฉันจะกด เริ่มหยุด ปุ่มหรือ ยกเลิก ) ดังนั้นฉันจึงใช้การแจ้งเตือนของระบบแทน: display notification "Tomcat has started/stopped." with title "Tomcat".
jackxujh

และฉันชอบที่ AppleScript ยังคงทำงานใน 10.13 ในขณะที่ใช้งานง่ายและใช้งานง่ายมันยังสามารถส่งการแจ้งเตือนหรือเปิดกล่องโต้ตอบ!
jackxujh

@jackxujh เพื่อพูดถึงสิ่งที่คุณพูดในความคิดเห็นแรกของคุณ ... คุณตระหนักดีว่ามีสองวิธีแยกกันที่นี่และทั้งคู่ไม่ได้อยู่ในแอพ Automator เดียวกัน 1. แอป Automator ที่มีการดำเนินการ Run Shell Script และรหัสบรรทัดเดียวที่ตรวจสอบสถานะและสลับตาม 2. แอป Automator พร้อมแอคชั่น Run AppleScript ที่ใช้ตัวอย่างรหัส AppleScript แต่ละวิธีใช้หนึ่งในวิธีการ แต่ไม่ใช่ทั้งสองอย่างในแอพเดียวกัน แสดงความคิดเห็นต่อไป ...
user3439894

@jackxujh หาก AppleScript ใน macOS 10.13 ทำงานได้อย่างถูกต้องฉันคิดว่ามันยากที่จะเชื่อว่ารหัส AppleScript ของฉันไม่ทำงานตามที่ระบุไว้ วางกับดัก Sans error "User canceled." number -128 เมื่อเกิดขึ้นจะไม่มีรหัสอื่นในตัวอย่างรหัส AppleScript ที่ควรประมวลผล ในฐานะที่เป็นรหัส, ไม่ได้ใช้ error "User canceled." number -128 ควรหยุดสิ่งอื่นใดไม่ให้เกิดขึ้นในตัวอย่างรหัส AppleScript ฉันทดสอบชุดค่าผสมที่เป็นไปได้ทั้งหมดในขณะที่ตรวจสอบใน Terminal พร้อมกันและทำงานได้ตามที่ระบุ ต่อมาฉันจะสร้างระบบ macOS 10.13.1 ขึ้นมาและทดสอบ
user3439894

ใช่ฉันเข้าใจว่าในการรันแต่ละครั้งหรือการใช้งานแอพ Automator มันสามารถสลับสถานะ Tomcat ได้เพียงครั้งเดียว แต่ฉันพบว่าในระหว่างการวิ่งไม่ว่าฉันจะคลิก ยกเลิก หรือ เริ่มหยุด มันจะสลับเป็น Tomcat ทำงานได้ตามที่คาดหวังใช่ไหม
jackxujh

3

เมื่อคุณเรียกใช้คำสั่งเชลล์หรือสคริปต์ใน Automator คำสั่งจะส่งผ่าน PATH เริ่มต้นของระบบไม่ใช่คำสั่งในโปรไฟล์ bash ของคุณ นี่คือเหตุผลที่ทุบตีหาไม่ได้ catalina คำสั่ง

คุณควรระบุพา ธ แบบเต็มไปยังคำสั่งในเชลล์สคริปต์เสมอ หากติดตั้งผ่าน HomeBrew อาจเป็นไปได้ /usr/local/bin/catalina แต่คุณสามารถยืนยันได้โดยเรียกใช้ which catalina ในเทอร์มินัลเซสชัน


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