สภาพแวดล้อมการทดสอบ
ฉันกำลังใช้ อูบุนตู/ไบโอนิค 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 -- ระบบ
ด้วยตนเอง นั่นอาจหมายความว่าการตั้งค่าระบบเหล่านี้จะไม่ถูกอ่านตามค่าเริ่มต้น