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


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.