দেবিয়ান এ অনেকগুলি ওপেন ফাইল


15

আমার দেবিয়ানে দীর্ঘ প্রক্রিয়া চলছে। কিছু সময়ে একটি ত্রুটি নিক্ষেপ:

অনেকগুলি খোলার ফাইল।

চলমান:

ulimit -a

শো:

ফাইল খুলুন (-n) 1024

আমি 2 বারের মধ্যে খোলা ফাইলের সংখ্যা বাড়ানোর ইচ্ছা করি। ফাঁসি কার্যকর হওয়ার পরে

ulimit -n 2048

সীমাটি আমার সেশনের শেষ অবধি সক্রিয় থাকবে, যা এই কাজের জন্য প্রযোজ্য নয়।

আমি কীভাবে স্থায়ীভাবে খোলা ফাইলগুলির সংখ্যা বাড়াতে পারি?

উত্তর:


12

যদি আপনার প্রক্রিয়াটি কোনও স্ক্রিপ্টের মাধ্যমে শুরু হয়, আপনি ডেমনটি সম্পাদন করার ঠিক আগে কলটি স্ক্রিপ্টে উলিমিট করতে পারবেন।

আপনি যদি আপনার ব্যবহারকারীর জন্য বা সমস্ত ব্যবহারকারীর জন্য ওলিমিট বৃদ্ধি করতে চান তবে আপনি pam_limitsলগইনের মাধ্যমে প্রয়োগ হওয়া সীমা নির্ধারণ করতে পারেন । এগুলি সেট করা আছে /etc/security/limits.conf। আপনার ক্ষেত্রে, আপনি যেমন কিছু করতে পারেন:

*               hard    nofile             2048

মনে রাখবেন যে "শক্ত" একটি কঠোর সীমা নির্দেশ করে - এমন একটি যা অতিক্রম করতে পারে না এবং পরিবর্তন করা যায় না। একটি সফট সীমা ব্যবহারকারী দ্বারা পরিবর্তন করা যেতে পারে (যেমন রুট ক্ষমতা ব্যতীত কেউ), তবে হার্ড সীমা ছাড়িয়ে নয় beyond

limits.confব্যবহার সম্পর্কে আরও তথ্যের জন্য পড়ুন pam_limits


সীমাবদ্ধতার সাথে আমার কাছে দুটি লাইন রয়েছে: * সফট নফিল 4096 * হার্ড নফিল 8192 যার কোনও প্রভাব নেই।
ফক্সিবিওএ

এবং আপনি এইগুলি পরীক্ষা করার পরে লগ আউট এবং আবার লগ ইন করেছেন? আপনি যদি স্থানীয় মেশিনে এটি চেষ্টা করে থাকেন তবে এক্স / জিনোম / কেডিএ ইত্যাদির বাইরে লগইন করার অর্থ হবে
ড্যানিয়েল লসন

হ্যাঁ. /etc/security/limits.conf আমার পক্ষে কাজ করে না। আমি দ্বিতীয় পদ্ধতির চেষ্টা করব।
ফক্সিবিওএ

3
/etc/security/limits.conf কেবল প্যাম এবং পাম মডিউল ব্যবহার করে এমন পরিষেবাগুলির জন্য কাজ করে pam_limits (প্রতিটি পরিষেবার PAM কনফিগারেশনের জন্য /etc/pam.d/ দেখুন এবং বিশেষত /etc/pam.d/common-*) । এটি sshd, gdm, লগইন ইত্যাদির দ্বারা নির্মিত সমস্ত ব্যবহারকারীর সেশনগুলিকে উদ্বেগ দেয় It এটি বুট-সময় শুরু হওয়া সমস্ত প্রোগ্রাম নিয়ে উদ্বেগ নয় ...
রাফাল হার্টজোগ

আমি সে বিষয়ে কিছু বললাম, তবে এটি স্পষ্ট করার জন্য ধন্যবাদ। ওপি কোনও পরিষেবা বা কোনও প্রক্রিয়া তার ব্যবহারকারীরা চলছে কিনা তা স্পষ্ট করে দেয়নি।
ড্যানিয়েল লসন

13

কার্নেলের মধ্যে ওপেন ফাইলগুলির একটি "মোট সর্বোচ্চ" সেট রয়েছে, আপনি বর্তমান সেটিংসটি এটির সাথে পরীক্ষা করতে পারেন:

cat /proc/sys/fs/file-max 

এবং এর সাথে একটি নতুন মান সেট করুন:

echo "104854" > /proc/sys/fs/file-max

আপনি চাইলে কনফিগার রাখতে চাইলে পুনরায় বুট করুন

sys.fs.file-max=104854

প্রতি

/etc/sysctl.conf

বর্তমান সর্বাধিক ফাইল ব্যবহার পরীক্ষা করতে:

[root@srv-4 proc]# cat /proc/sys/fs/file-nr
3391    969     52427
|        |       |
|        |       |
|        |       maximum open file descriptors
|        total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)


খনি এখানে কিছু অশ্লীল সংখ্যার দেখায়: 49152 0 18446744073709551615 । আমি বুঝতে পারি না কেন প্রথম দুটি কলাম তৃতীয়টিতে যোগ করে না। এবং যদি আমার কাছে পাওয়া যায় 1.8 ট্রিলিয়ন ট্রিলিয়ন, আমি কীভাবে সেগুলি ব্যবহার করেছি তা আমি দেখতে পাচ্ছি না।
mlissner

4

অন্যরা যেমন বলেছে আপনি /etc/security/limits.conf এ ব্যবহারকারী বা গোষ্ঠী অনুসারে নির্দিষ্ট সীমা প্রয়োগ করতে পারেন।

দ্রষ্টব্য: ulimit -n নরম সীমাটি দেখায়।

ulimit -H -n 

আপনাকে কঠিন সীমা প্রদর্শন করবে।

এটি ইউলিমিট-এ এবং ইউলিমিট-আউটপুটকে বেশ বিভ্রান্ত করে তোলে উদাহরণস্বরূপ, আপনি হার্ড সীমাবদ্ধতা আউটপুটটি দেখার প্রত্যাশা হিসাবে 1024 থেকে 4096 ফাইলের সংখ্যা বাড়িয়েছিলেন তবে আপনি এখনও 1024 দেখছেন যা নরম সীমা।

এছাড়াও, মনে রাখবেন যে লগইন প্রতি এই সীমাবদ্ধতা প্রয়োগ করা হয়েছে, সুতরাং একটি নতুন শেলটিতে পুনরায় লগইন করুন এবং আপনার পরিবর্তনগুলি পরীক্ষা করুন, এগুলি বিদ্যমান লগিনগুলিতে প্রচারিত হওয়ার আশা করবেন না।


2

সচেতন হন যে আপনি যদি /etc/security/limits.conf এ স্টার্ট-স্টপ-ডেমোন সেট করে আপনার প্রক্রিয়াটি চালনা করেন না। আপনি উদাহরণস্বরূপ যদি টমক্যাটের জন্য উন্মুক্ত ফাইলের সীমা 20000 এ বাড়িয়ে তুলতে চান তবে আপনাকে এগুলি লাইনগুলিতে যুক্ত করতে হবে /etc/default/tomcat:

ulimit -Hn 32768
ulimit -Sn 32768

আমি ডেবিয়ান 6.0.4 এ এই সমস্যার মুখোমুখি হয়েছি অন্য প্রক্রিয়াগুলির জন্য দেওয়া উত্তরগুলি সহায়তা করা উচিত।


1

আপনি কীভাবে আপনার দীর্ঘকালীন প্রক্রিয়া শুরু করবেন তার উপর এটি নির্ভর করে। যদি এটি বুট সময়ে শুরু হয় (/etc/rcX.d/* স্ক্রিপ্টগুলির মাধ্যমে) তবে আপনার প্রারম্ভিক স্ক্রিপ্টে একটি ইউলিমিট কলটি অবশ্যই প্রয়োগ করতে হবে কারণ কার্নেল দ্বারা ডিফল্ট সীমা সেট করা আছে এবং এটি পুনরায় সংশোধন না করে এটি টিউনযোগ্য নয়।

/etc/security/limits.confআপনি যদি cronএটিকে এ জাতীয় এন্ট্রি সহ উদাহরণস্বরূপ শুরু করতে ব্যবহার করেন তবে এটি ব্যবহার করতে পারে :

@reboot $HOME/bin/my-program

এটি কাজ করা উচিত কারণ /etc/pam.d/cron পাম_লিমিট.সকে সক্ষম করে।


-1

আপনি এটি /etc/security/limits.conf এ যুক্ত করতে পারেন

root soft nofile 100000
root hard nofile 100000

পুনরায় বুট সংরক্ষণ করুন।


3
এখানে কি নতুন কিছু আছে যা এই 5 বছরের পুরানো প্রশ্নের গৃহীত উত্তরে নেই?
অ্যান্ড্রু শুলম্যান

-2

খুব সুন্দর কমান্ডটি হ'ল ulimit -nতবে অনেক সংযোগ এবং অনেকগুলি খোলার ফাইল নিয়ে সমস্যা রয়েছে:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 519357
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

আমি আপনার উত্তরটি পরিষ্কার করার চেষ্টা করেছি তবে আমি এখনও মূল পোস্টার প্রশ্নটিতে কী বলতে চাইছি তা পরিষ্কার নয়। আপনি কি আরও চেষ্টা করে আরও পরিষ্কার করতে পারেন?
slm

এছাড়াও এটি আউটপুট ulimit -a, না ulimit -n
ইভান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.