জার্নিক্টল জন্য নির্বাচনযোগ্য ইউনিট তালিকা


18

একটি CentOS 7 সার্ভারে, আমি নির্বাচনযোগ্য ইউনিটগুলির তালিকা পেতে চাই যার journalctlজন্য লগগুলি তৈরি করা যায়। এটি সম্পাদন করতে আমি কীভাবে নীচের কোডটি পরিবর্তন করতে পারি?

journalctl --output=json-pretty | grep -f UNIT | sort -u  

CentOS 7 টার্মিনালে উপরের কোডটি উত্পাদন করে grep: UNIT: No such file or directory

সম্পাদনা করুন:

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

    String s;
    Process p;
    String[] cmd = {"journalctl --output=json-pretty ","grep UNIT ","sort -u"};
    try {
        p = Runtime.getRuntime().exec(cmd);
        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
        while ((s = br.readLine()) != null)
            System.out.println("line: " + s);
        p.waitFor();
        System.out.println ("exit: " + p.exitValue()+", "+p.getErrorStream());
        BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        while ((s = br2.readLine()) != null)
            System.out.println("error line: " + s);
        p.waitFor();
        p.destroy();
    } catch (Exception e) {}  

"তবে যখন আমি এটি জাভা প্রোগ্রাম" এবং জাভা প্রোগ্রাম থেকে কল করি না?
ব্রায়াম

এটিতে একটি টাইপও রয়েছে, এটি হওয়া উচিতgrep -F
অ্যান্থন

@ don_crissti আপনার ইচ্ছামত
কোডমেড

উত্তর:


24

journalctl সমস্ত ইউনিটগুলির জন্য লগগুলি প্রদর্শন করতে পারে - এই ইউনিটগুলি লগতে লেখেন কিনা তা আলাদা বিষয়।

সমস্ত উপলব্ধ ইউনিট তালিকাবদ্ধ এবং অতএব সমস্ত ব্যবহারের জন্য উপলব্ধ journalctl:

systemctl list-unit-files --all

আপনার জাভা কোড হিসাবে, পাইপগুলি Runtime.exec()আপনার সাথে কাজ করতে করতে হয় হয় কোনও স্ক্রিপ্টে কমান্ডটি রেখে স্ক্রিপ্টটি আবেদন করতে পারে বা একটি স্ট্রিং অ্যারে ব্যবহার করতে পারে:

String[] cmd = {"sh", "-c", "command1 | command2 | command3"};
p = Runtime.getRuntime().exec(cmd);

বা:

Runtime.getRuntime().exec(new String[]{"sh", "-c", "command1 | command2 | command3"});

list-unit-filesতাত্ক্ষণিক ইউনিট এবং ক্ষণস্থায়ী ইউনিট দেখায় না।
ইভজেনি ভেরেশচাগিন

10

man journalctl বলেছেন:

-F, - ফিল্ড = জার্নালের সমস্ত এন্ট্রিতে নির্দিষ্ট ক্ষেত্রটি নিতে পারে এমন সমস্ত সম্ভাব্য ডেটা মান মুদ্রণ করে।

সুতরাং, আপনি চালাতে পারেন:

journalctl --field _SYSTEMD_UNIT

নির্বাচনযোগ্য ইউনিটগুলির তালিকা পেতে journalctlযাতে লগ তৈরি করতে পারে

(ডিফল্ট, শুধুমাত্র শিকড় ও ব্যবহারকারীগণ কয়েক বিশেষ দলের সদস্য দ্বারা এবং সিস্টেম জার্নাল এক্সেস অন্যান্য ব্যবহারকারীদের পত্রিকা প্রদান করা হয়। দলের সদস্যরা systemd-journal, admআর wheelসব জার্নাল ফাইলগুলি পড়তে পারে।)


এই কমান্ডটি চালানোর জন্য আপনাকে অবশ্যই সুপারভাইজার হতে হবে। সুতরাং এটি তৈরি করুন sudo journalctl --field _SYSTEMD_UNIT। তবে অন্যথায় অন্তর্দৃষ্টি যোগ করার জন্য আপনাকে ধন্যবাদ এবং +1।
কোডমেড

আসলে sudoআপনি যদি ব্যবহার না করতে পারেন journalctlতবে আপনি কেবলমাত্র ইউনিটগুলির একটি ছোট তালিকা পান যা আপনার ব্যবহারকারীর সেশনের সাথে সরাসরি সম্পর্কিত।
ড্রাগন 788

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ বর্তমানে গৃহীত উত্তরে প্রদত্ত systemd 219যুক্তিগুলি সমর্থন করে না list-unit-files --all
পেটরাস কে।

তালিকা-ইউনিট-ফাইলগুলি কেবল ইউনিট ফাইলগুলি দেখায়। আপনি কোনও যুক্তি ছাড়াই কেবল "systemctl" টাইপ করে অনুরূপ তালিকা পেতে পারেন। তাদের বেশিরভাগ জার্নালডকে সমর্থন করে না যাতে সেই আদেশটি কোনও কাজে আসে না।
ফ্রেড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.