สภาพแวดล้อมการทดสอบ
ฉันกำลังใช้ อูบุนตู/ไบโอนิค 64 กล่องพเนจร เป็นสภาพแวดล้อมการทดสอบของฉัน
เงื่อนไขล่วงหน้า
หลังจากสร้าง VM ฉันติดตั้งเท่านั้น ใช้งานได้ 2.9.23 โดยทำตาม คำแนะนำในเอกสารราชการ.
ฉันยังติดตั้ง ansible.posix ของสะสม (คอลเลกชัน ansible-galaxy ติดตั้ง ansible.posix) เพราะฉันต้องการใช้โมดูล ansible.posix.sysctl.
ตรวจสอบว่ารูปแบบหลักปัจจุบันไม่ใช่สิ่งที่ฉันต้องการ:
vagrant@ubuntu-bionic:~$ sysctl kernel.core_pattern
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P %E
อีกด้วย, /etc/sysctl.conf ไม่มีรูปแบบหลัก:
คนจรจัด@ubuntu-bionic:~$ grep "core_pattern" /etc/sysctl.conf
คนจรจัด@ubuntu-bionic:~$
ความตั้งใจของฉัน
ฉันต้องการเปลี่ยนรูปแบบหลักเป็น /var/tmp/core.%h.%e.%t.
ฉันทำอะไรลงไป
ฉันวิ่งต่อไปนี้ เข้าใจได้ สั่งการ:
ansible -bKvvv -m "sysctl" -a "ชื่อ=kernel.core_pattern state=ค่าปัจจุบัน='/var/tmp/core.%h.%e.%t' reload=yes" localhost
และประสบความสำเร็จด้วยผลลัพธ์:
โลคัลโฮสต์ | เปลี่ยน => {
    "เปลี่ยน": จริง 
    "การร้องขอ": {
        "module_args": {
            "ละเว้นข้อผิดพลาด": เท็จ 
            "ชื่อ": "kernel.core_pattern", 
            "โหลดซ้ำ": จริง 
            "สถานะ": "ปัจจุบัน", 
            "sysctl_file": "/etc/sysctl.conf", 
            "sysctl_set": เท็จ 
            "ค่า": "/var/tmp/core.%h.%e.%t"
        }
    }
}
ฉันตรวจสอบการกำหนดค่าปัจจุบันด้วย:
vagrant@ubuntu-bionic:/etc$ sysctl kernel.core_pattern
kernel.core_pattern = /var/tmp/core.%h.%e.%t
ผมยังยืนยันว่า core_pattern ถูกเขียนลงใน /etc/sysctl.conf:
คนจรจัด@ubuntu-bionic:~$ grep "core_pattern" /etc/sysctl.conf 
kernel.core_pattern=/var/tmp/core.%h.%e.%t
จากนั้นฉันรีบูท VM ของฉัน หลังจากรีบูตเครื่อง ปัจจุบันมีผล core_pattern ถูกย้อนกลับ:
vagrant@ubuntu-bionic:~$ sysctl kernel.core_pattern
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P %E
ความคิดของฉันและสิ่งที่ฉันได้ลอง
คำถามนี้ ดูเหมือนจะใช้ไม่ได้สำหรับฉัน เพราะประการแรก มันถูกถามเมื่อประมาณ 10 ปีที่แล้ว และประการที่สอง เซิร์ฟเวอร์ Ubuntu 18.04 ดูเหมือนจะใช้ไม่ได้ พุ่งพรวด อีกต่อไป.
ฉันคิดอย่างอื่น .conf ไฟล์อาจถูกอ่านช้ากว่า /etc/sysctl.conf ดังนั้นการตั้งค่าจึงถูกแทนที่ในที่ใดที่หนึ่ง แต่ sysctl(8) หน้าคน แสดงรายการลำดับของ .conf ไฟล์ที่จะอ่านและดูเหมือนว่า /etc/sysctl.conf ควรเป็นตัวสุดท้ายที่แทนที่สิ่งอื่นทั้งหมด
sysctl.conf(5) หน้าคน ให้รายการคำสั่งเดียวกับ sysctl(8).
ฉันไม่พบอะไรใน sysctl.d(5), ทั้ง. ในความเป็นจริง ส่วน "การกำหนดค่าไดเรกทอรีและความสำคัญ" ยืนยันความเข้าใจของฉัน:
ไฟล์ใน /etc/ จะแทนที่ไฟล์ที่มีชื่อเดียวกันใน /run/ และ /lib/ ไฟล์ใน /run/ แทนที่ไฟล์ที่มีชื่อเดียวกันใน /lib/
ฉันพบ kernel.core_pattern จะถูกตั้งค่าตามที่คาดไว้เมื่อฉันวิ่ง sudo sysctl -- ระบบ ด้วยตนเอง นั่นอาจหมายความว่าการตั้งค่าระบบเหล่านี้จะไม่ถูกอ่านตามค่าเริ่มต้น