কেন একটি স্ক্রিপ্ট ভিতরে বলা হয় না ulimit -n কাজ?


5

এই খুব অদ্ভুত। আমি সেট করতে চেষ্টা করছি ulimitকরার 60000আমার মাধ্যমে startup.sh:

#!/bin/bash

ulimit -n 60000
echo "Hello! File Descriptor set"

আমি এটি ./startup.sh(755 ফাইলের অনুমতিগুলি) দিয়ে সম্পাদন করতে পারি এবং ইকো লাইনটি মুদ্রিত হয় এবং কোন ত্রুটি দেখানো হয় না। যাইহোক, যখন আমি ulimit -nএটা এখনও দেখায় 1024, কি হচ্ছে?

আমি কি আকর্ষণীয় মনে করি আমি ulimit -n 60000টার্মিনালে টাইপ করতে পারি, এবং তারপর ulimit -nএটি পুরোপুরি কাজ করে। কেন আমি একটি স্ক্রিপ্টের মাধ্যমে ফাইল বর্ণনাকারী সীমা সেট করতে পারি না?

ডেবিয়ান 8, 64-বিট। OpenVZ কন্টেইনার

উত্তর:


5

ulimits প্রতি প্রক্রিয়া হয় , প্রতি ব্যবহারকারী না প্রতি সিস্টেম।

ulimitকমান্ড শেল পাতাটা তাই এটি একই প্রক্রিয়া মধ্যে থাকে; তবে, সামঞ্জস্যপূর্ণ সীমা শুধুমাত্র সেই প্রক্রিয়াটিকে প্রভাবিত করে, সেইসাথে আপনি এটির দ্বারা চালিত সবকিছু (শিশু প্রসেসগুলি একই সীমা অর্জন করে)।

যাইহোক, ./startup.shএকটি পৃথক প্রক্রিয়া হিসাবে সঞ্চালিত হয় - তাই এটি সফলভাবে তার নিজস্ব সীমা সমন্বয় করে কিন্তু এটি magically তার পিতামাতার ঊর্ধ্বে প্রচার না।

(এটি একই অবস্থা cdবা `এক্সপোর্ট - যদিও আপনি কোন স্ক্রিপ্টে সেগুলি ব্যবহার করতে পারেন, তবে সমস্ত স্ক্রিপ্টের নিজস্ব প্রক্রিয়াগুলির প্যারামিটার পরিবর্তন করে, সমগ্র সিস্টেমের নয়, এবং স্ক্রিপ্টের প্রক্রিয়াটি একবার একবার ভুলে যাবে।)

দ্রষ্টব্য: কিছু হয় অন্য কমান্ড prlimit, যা আপনি অন্য প্রক্রিয়া (PID, দ্বারা নির্দিষ্ট) এর রিসোর্স সীমা যাচাই করতে দেয়। একটি স্ক্রিপ্ট তার মূল পদ্ধতির ফাইল সীমাটি এইরকম পরিবর্তন করতে পারে:

prlimit --pid=$PPID --nofile=4096

অসাধারণ, বিস্তারিত ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ। ক্যাপ্টেন এটি একটি বিশ্বব্যাপী সেটিং বা কিছু ছিল চিন্তা।
জন মিলার

@ জন সাধারণত একটি বিশ্বব্যাপী সেটিং সবচেয়ে নিকটতম জিনিস হতে হবে /proc/sys/fs/file-max। যেহেতু আপনি একটি ধারক ভিতরে আছেন, ওপেনভিজেড এছাড়াও দেখানো বিভিন্ন সীমা প্রয়োগ করা হতে পারে /proc/user_beancounters
18:16 টায় গরিব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.