मैं पीडीएफ फाइलें उत्पन्न करने के लिए एक उपकरण का उपयोग कर रहा हूं, दुर्भाग्य से 100% विश्वसनीय नहीं है। कभी-कभी यह टूल अनंत लूप में आता है और 100% मेमोरी और प्रोसेसर का उपभोग करता है।सीमित संसाधनों के साथ बैश स्क्रिप्ट/प्रोग्राम चलाना
मैं अपने जावा ऐप से Runtime.getRuntime.exec("command")
के साथ यह टूल चला रहा हूं।
- क्या इस प्रक्रिया के लिए सीधे जावा कमांड में अधिकतम निष्पादन समय/स्मृति सेट करने का कोई तरीका है?
- यदि जावा से सीधे नहीं है, तो क्या कुछ बैश टूल में कमांड को लपेटने का कोई तरीका है, जो संसाधनों को सीमित करेगा?
मैं सभी संसाधनों का उपयोग करने में विफल होने के लिए आदेश को प्राथमिकता देता हूं और मूल रूप से सर्वर को मारता हूं।
संपादित:
ulimit
सुझाव के आधार पर मैं इस कोशिश कर रहा हूँ:
Runtime.getRuntime()
.exec(arrayOf("bash", "-c", "ulimit -m 2; ulimit -a; pdfprint"))
मैं ulimit देख सकते हैं काम करता है:
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) 2
open files (-n) 10240
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) 2
अजीब बात है कि मैं उम्मीद है pdfprint
क्रैश करने के लिए क्योंकि इसमें पर्याप्त स्मृति नहीं होगी। हालांकि ऐसा नहीं होता है और कार्यक्रम सही ढंग से चलता है।
हम बैश बात कर रहे हैं के बाद से, मुझे लगता है 'command' पहले से ही एक स्क्रिप्ट है। क्या आप एप वास्तव में पीडीएफ सामान को कॉल करने से पहले स्क्रिप्ट में उलटी (डेटा आकार इत्यादि, स्टैक आकार इत्यादि) सेट नहीं कर सकते हैं? – John3136