ใช้ Launchd เพื่อล้างประวัติทุบตี?
คำชี้แจง: ฉันไม่ต้องการทำลาย
historyฉันกำลังมองหาวิธีที่จะกำจัดมันเป็นระยะ ๆlaunchdเพื่อความปลอดภัย
ใช้cat /dev/null > ~/.bash_historyเพื่อล้างประวัติทุบตีตามที่เห็นในการสนทนา * nix หลายรายการเป็นวิธีที่มีประสิทธิภาพมากที่สุด
ดังนั้นฉันจึงใส่มันลงในเชลล์สคริปต์ที่ทำงานในlaunchdแต่หลังจากนั้นไม่นานฉันก็ตระหนักได้ว่ามันทำงานอยู่มันไม่ได้ล้างประวัติ
เป็นไปได้ไหมที่จะล้างประวัติ bash ด้วยวิธีนี้ผ่าน bash script หรือสามารถทำได้ด้วยตนเองในฐานะผู้ใช้เท่านั้น? บางทีฉันอาจต้องเรียกใช้คำสั่งโดยตรงใน. plist ไม่ใช่ผ่าน bash script?
หมายเหตุ: ฉันมีสคริปต์อื่นที่ทำงานอย่างถูกต้องผ่าน launchd ดังนั้นคำถามจึงเกี่ยวกับความสามารถในการล้างประวัติผ่านตัวแทนอย่างเคร่งครัด
ขอขอบคุณ
อัปเดต: พบไซต์ที่ยอดเยี่ยมที่ช่วยสร้าง
launchdสคริปต์หากสิ่งนี้ช่วยทุกคน ไม่สามารถรับรองได้ แต่ง่ายกว่าการแฮ็ก XML มาก ดูเหมือนว่าจะใช้sh -cสำหรับคำสั่งทั้งหมดดังนั้นไม่แน่ใจว่าทำไมถึงเป็นเช่นนั้นเครื่องกำเนิดไฟฟ้า Launchd plist http://launched.zerowidth.com/
คำตอบ
bashประวัติของคุณประกอบด้วย "ประวัติ" สองรายการไม่ใช่เรื่องเดียว หนึ่งในประวัติศาสตร์เหล่านี้จะถูกเก็บไว้ในแฟ้ม - ขนาด / HISTFILESIZEลึกถูกควบคุมโดยพารามิเตอร์ ประวัติศาสตร์อื่น ๆ ที่เก็บไว้ชั่วคราวในหน่วยความจำ - HISTSIZEขนาดของมันถูกควบคุมโดยพารามิเตอร์
คุณสามารถตรวจสอบขนาด / ความลึกของประวัติของคุณ:
$ echo $HISTFILESIZE
$ echo $HISTSIZE
เหตุผลของสองประวัติคือหนึ่งเชื่อมโยงกับแต่ละเซสชันเชลล์ ( HISTSIZE) ในขณะที่ประวัติอื่น ๆ เป็นไฟล์~/.bash_historyที่ "ถาวร" และในที่สุดจะได้รับประวัติเซสชันเมื่อมีการใช้งานเกินความลึกสูงสุดหรือเมื่อเซสชันสิ้นสุดลง มันซับซ้อนเล็กน้อยในการอธิบายและรูปภาพด้านล่างอาจช่วยให้ความสัมพันธ์ระหว่างประวัติศาสตร์ทั้งสองนี้ชัดเจน
แต่กลับไปที่วัตถุประสงค์ของคุณ:
แทนที่จะทำตามขั้นตอนเพื่อลบประวัติของคุณคุณสามารถตั้งค่าHISTSIZEและHISTFILESIZEเป็นศูนย์ใน~/.bashrc:
HISTSIZE=0
HISTFILESIZE=0
หากนั่นไม่ใช่สิ่งที่คุณต้องการคุณสามารถลบไฟล์ประวัติเป็นระยะ ๆ ได้ แต่อย่าลืมลบประวัติเซสชัน .plistไม่จำเป็นต้องลบไฟล์ประวัติของคุณโดยการสร้างไฟล์ historyคำสั่งเป็นเครื่องมือที่จะใช้สำหรับงานนี้ (ดูhistory --helpรายละเอียด) คำสั่งต่อไปนี้จะลบประวัติเซสชันหนึ่งรายการ :
$ history -cw
การลบเนื้อหาออกจากไฟล์ประวัติ ( ~/.bash_history) ทำได้ตามอัตภาพ:
$ > ~/.bash_history
คุณสามารถใส่คำสั่งหนึ่งหรือทั้งสองคำสั่งเหล่านี้ใน a crontabได้ แต่คุณจะต้องแน่ใจว่าเชลล์เริ่มต้นเป็นไปbashตามที่historyมีอยู่ในตัว
สำหรับพื้นหลังที่เกี่ยวข้องในบางเรื่องของประวัติศาสตร์เปลือกคุณสามารถอ่าน Q & A ที่เกี่ยวข้อง มันเกี่ยวข้องกับzsh- ไม่ใช่bashแต่หลักการเหมือนกัน
ดูเหมือนว่าคุณได้หาวิธีแก้ปัญหาที่ซับซ้อนมากสำหรับปัญหาที่ไม่ต้องการ bash_history
ฉันขอแนะนำว่าแทนที่จะล้างประวัติเป็นระยะจาก launchd คุณควรปิดการบันทึกประวัติ:
echo 'set +o history' >> ~/.bashrc
ปิดแท็บเทอร์มินัลแล้วเปิดแท็บใหม่ - ประวัติของคุณจะไม่ถูกบันทึกอีกต่อไป