Score:0

วิธีเปิดใช้งานตัวแทนจาวาสำหรับทุกกระบวนการจาวาใหม่บนโฮสต์

ธง jp

ฉันมีตัวแทนจาวาที่ฉันต้องการเปิดใช้งานโดยอัตโนมัติสำหรับกระบวนการจาวาตามอำเภอใจที่ทำงานบนโฮสต์

ฉันไม่สามารถพึ่งพานามแฝงหรือตัวแปรสภาพแวดล้อมเช่น เส้นทาง, JVM_OPTS ฯลฯ เนื่องจากฉันต้องการให้กระบวนการ JVM ใด ๆ เลือกตัวแทนแม้ว่าจะรันโดยตรงก็ตาม /usr/bin/java -jar my-app.jar.

วิธีหนึ่ง (ค่อนข้างสกปรก) ในการทำคือการแทนที่ทางกายภาพ ชวา ไบนารีด้วยสคริปต์ทุบตีที่กำหนดเองของฉันดังนี้:

#!/bin/bash 
$(dirname "$0")/java.original "-javaagent:path/to/my-agent.jar" "$@"

มันใช้งานได้ แต่วิธีการนั้นจำเป็นต้องเปลี่ยนชื่อต้นฉบับ ชวา ไฟล์ไบนารีที่ฉันต้องการหลีกเลี่ยงการทำ

คำถาม: มีวิธีใดที่ดีกว่าในการบรรลุพฤติกรรมเดียวกันโดยไม่ต้องสัมผัส ชวา ไบนารี่? มีไฟล์กำหนดค่าเฉพาะของ Java ทั่วโลกที่ฉันสามารถสั่งให้ Java ทำได้หรือไม่ เสมอ ทำงานกับตัวแทนที่กำหนด?

cn flag
สิ่งนี้เหมาะสมกว่าสำหรับ SO หรือไม่
jp flag
อาจเป็นไปได้ สามารถย้ายคำถามไปที่ SO ด้วยวิธีใดหรือฉันควรสร้างใหม่ที่นั่นหรือไม่
cn flag
ฉันไม่มีอำนาจที่จะย้าย แต่อย่าลังเลที่จะข้ามไปและเราสามารถทำเครื่องหมายว่าซ้ำหรือเชื่อมโยงคำตอบ
djdomi avatar
za flag
เพียงตั้งค่าสถานะคำถามของคุณด้วยตัวคุณเองและคำถามนั้นจะถูกย้าย
Score:0
ธง jp

มี JAVA_TOOL_OPTIONS ตัวแปรสภาพแวดล้อมที่สามารถตั้งค่าใน /etc/profile.d สำหรับผู้ใช้ทุกคน

ส่งออก JAVA_TOOL_OPTIONS=-javaagent:path/to/my-agent.jar

จากนั้นทุกกระบวนการของจาวาจะรับมันมาไม่ว่าจะเริ่มต้นด้วยวิธีใด

จากทางการ เอกสาร:

ตัวแปรสภาวะแวดล้อมนี้อนุญาตให้คุณระบุการเริ่มต้นของเครื่องมือ โดยเฉพาะการเปิดใช้เอเจนต์ภาษาโปรแกรมเนทีฟหรือ Java โดยใช้ -agentlib หรือ -javaagent ตัวเลือก. ในตัวอย่างต่อไปนี้ ตัวแปรสภาพแวดล้อมถูกตั้งค่าเพื่อให้ HPROF profiler เปิดทำงานเมื่อเริ่มต้นแอปพลิเคชัน:

$ ส่งออก JAVA_TOOL_OPTIONS="-agentlib:hprof"

ตัวแปรนี้ยังสามารถใช้เพื่อเพิ่มบรรทัดคำสั่งด้วยตัวเลือกอื่นๆ เพื่อวัตถุประสงค์ในการวินิจฉัย ตัวอย่างเช่น คุณสามารถระบุอ็อพชัน -XX:OnError เพื่อระบุสคริปต์หรือคำสั่งที่จะดำเนินการเมื่อเกิดข้อผิดพลาดร้ายแรง

นอกจากนี้ยังมีไม่มีเอกสาร _JAVA_OPTIONS ตัวแปรที่มีความสำคัญเหนือกว่า JAVA_TOOL_OPTIONS และอาร์กิวเมนต์บรรทัดคำสั่งซึ่งอาจมีประโยชน์ในบางกรณีแต่เนื่องจากไม่สนับสนุนและอาจไม่ได้รับการสนับสนุนในการกระจาย Java ทั้งหมด จึงไม่แนะนำให้ใช้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา