การใช้คำสั่ง `touch 'ถูกต้องตามกฎหมายคืออะไร?


83

จุดประสงค์ของtouchคำสั่งคืออะไร? ฉันรู้ว่าฉันสามารถสร้างไฟล์เปล่าด้วย แต่ก็เป็นเช่นecho -nนั้น

มิฉะนั้นทำไมบางคนต้องเปลี่ยนการประทับเวลาของไฟล์ เว้นแต่จะสร้างความประทับใจที่ผิดเกี่ยวกับอายุของไฟล์ฉันไม่เห็นการใช้งานอื่นและสิ่งนี้ไม่ได้เป็นสิ่งที่ถูกต้องตามกฎหมาย (จากมุมมองของฉัน)


15
แทนที่จะเป็นecho -n > filenameคุณสามารถเรียกใช้สิ่งต่อไปนี้:>filename
AMADANON Inc.

77
การใช้ที่ผิดกฎหมายคืออะไร?
bmargulies

10
Unless to create the false impression about the age of a file. ไม่จำเป็นต้องมีการแสดงผลที่ผิดพลาด ถ้าคุณต้องการเปลี่ยนเวลาแก้ไข มันจะมีประโยชน์ในสคริปต์ สคริปต์นี้ขึ้นอยู่กับtouchคำสั่งเป็นอย่างมากและมีความสะดวกและง่ายที่จะมีมันเช่นนั้น
VL-80

7
พิจารณาสิ่งที่tar(หรือผู้เก็บถาวรอื่น) ทำเมื่อแยกไฟล์เก็บถาวร โดยทั่วไปแล้วพวกเขาจะตั้งค่าเวลาแก้ไขของไฟล์เป็นเวลาจากไฟล์เก็บถาวรไม่ใช่เวลาที่แยกไฟล์เก็บถาวรและนี่เป็นคุณสมบัติที่ต้องการ เนื่องจากมันถูกต้องตามกฎหมายสำหรับโปรแกรมโหมดผู้ใช้ในการสร้างการประทับเวลาที่เป็นเท็จจึงมีข้อโต้แย้งไม่มากว่าทำไมtouch(หรือโปรแกรมบรรทัดคำสั่งอื่น ๆ ) จึงไม่ควรอนุญาตตามอาร์กิวเมนต์บรรทัดคำสั่ง การเรียนรู้ C ไม่ได้ทำให้คุณถูกกฎหมายมากกว่าใครบางคนที่เขียนshสคริปต์ ;-)
Steve Jessop

5
ในยูนิกซ์ไม่มีการประทับเวลาที่อธิบายถึงageไฟล์ นั่นจะเป็นcreationเวลาประทับและไม่มีการประทับเวลาดังกล่าวสำหรับไฟล์ในยูนิกซ์
Kevin Fegan

คำตอบ:


98

ข้อดีอย่างหนึ่งของtouchมันคือมันสามารถระบุการประทับเวลาโดยพลการในขณะที่echo -nจะส่งผลให้เวลาปัจจุบัน

ตัวอย่างของการใช้งานที่ถูกกฎหมายคือการอัพเดตการประทับเวลาของไฟล์ซอร์สโค้ดดังนั้นโปรแกรมเช่นmakeจะพิจารณาไฟล์ต้นฉบับใหม่กว่าวัตถุที่คอมไพล์แล้วและสร้างใหม่

การใช้งานอื่น ๆ คือการสร้างไฟล์ที่ทำงานตามการมีอยู่ของไฟล์ แต่เพียงผู้เดียวเช่น/etc/nologinกันซึ่งไม่อนุญาตให้ล็อกอินหากมีอยู่ ฉันยังยืนยันว่าtouch myfileมันเป็นโครงสร้างที่ง่ายกว่าecho -n >> myfileและสั้นกว่าในการพิมพ์


18
การใช้งานทั่วไปอื่น: แตะไฟล์ตามวันที่ระบุจากนั้น "find / -newer / the / file" เพื่อค้นหาไฟล์ทั้งหมดที่ถูกเปลี่ยนแปลง / สร้างขึ้นหลังจากนั้น
Olivier Dulac

@casey เมื่อฉันตรวจสอบเอกสารของecho -nฉันเห็นว่ามันบอกว่า "อย่าส่งออกบรรทัดใหม่ต่อท้าย" ดังนั้นฉันไม่เห็นว่าสิ่งนี้สามารถสร้างไฟล์ที่ว่างเปล่า คุณช่วยอธิบายได้ไหม
Geek

3
@Geek echo -nจะส่งออกสตริงว่างเปล่าและโดยตัวมันเองก็ไม่ทำอะไรเลย การเปลี่ยนเส้นทางเอาต์พุตผ่าน>>ทำให้เอาต์พุตว่างถูกผนวกเข้ากับไฟล์ การเปลี่ยนเส้นทางจะทำให้ไฟล์ถูกสร้างขึ้นหากไฟล์นั้นไม่มีอยู่
casey

6
แต่นั่นไม่ได้ผล: การเปิดไฟล์ที่มีอยู่เพื่อออก แต่ไม่เขียนมันไม่เปลี่ยน mtime (ในระบบของฉันอยู่แล้ว) แม้ว่าจะเป็นเช่นนั้นคุณไม่ต้องการและไม่ควรใช้echo -nสำหรับคำสั่งที่ไม่ทำอะไรเลย echo -nอาจส่งออกสตริง "-n" ภายใต้เปลือกบาง หากคุณต้องการคำสั่งที่ไม่ทำอะไรเลย:หรือtrueเป็นตัวเลือกที่ดีกว่า แต่>> myfileโดยตัวมันเองก็เป็นวิธีที่ถูกต้องในการสร้างไฟล์หากไม่มีอยู่ แน่นอนทั้งหมดนี้รองรับคำตอบของคุณที่คุณควรใช้ "สัมผัส"
hvd

40

การเรียกระบบพื้นฐาน ( utime) เป็นสิ่งสำคัญสำหรับยูทิลิตี้ต่าง ๆ เช่นtarเพื่อให้สามารถตั้งค่าการประทับเวลาของไฟล์ที่ถูกคัดลอกใหม่ สามารถเลือกอรรถประโยชน์การสำรองข้อมูลบางอย่างเพื่อรีเซ็ตเวลาการเข้าถึงไฟล์ล่าสุดที่คัดลอก

การใช้งานที่ถูกกฎหมายอย่างหนึ่งtouchคือการสร้างไฟล์ที่มีการประทับเวลาเฉพาะ เช่น "อ้างอิง" findแฟ้มแล้วสามารถใช้คำสั่งเช่น ตัวอย่างเช่นหากต้องการค้นหาไฟล์ทั้งหมดที่แก้ไขล่าสุดมากกว่าวันที่ 1 พฤศจิกายน 2013 (เช่น 2013/11/01) "

touch -amt 201311010000 myref
find . -type f -newer myref -exec ls -ld {} +

วิธีการคำนวณนั่น201311010000 หมายถึงพฤศจิกายน 1,2013? มียูทิลิตี้ที่จะบอกฉันนี้หรือไม่? ในคำอื่น ๆ ฉันจะกำหนดอินพุตที่จะสัมผัสได้อย่างไร
Geek

4
@Geek โดยดูที่ตัวเลขและสังเกตว่าส่วนแรก20131101สามารถแยกย่อย2013-11-01หรือ 1 พฤศจิกายน 2013 จากนั้นคุณสามารถสันนิษฐานได้ว่า0000ส่วนที่ระบุเวลาที่เฉพาะเจาะจงของวันในกรณีนี้ 00 ชั่วโมง, 00 นาที หรือคุณเพียงแค่ดูที่หน้าสำหรับtouchซึ่งจะบอกคุณว่ารูปแบบคืออะไร (ดู-t)
JAB

@Geek manpages เป็นเพื่อนของคุณ :-)
JRFerguson

39

touchวัตถุประสงค์หลักของคำสั่งจะถูกจัดการ timestamps ของไฟล์และสำหรับการสร้างไฟล์

ตัวอย่าง

1. การสร้างไฟล์

$ ls -l
total 0

$ touch file{1..3}

$ ls -l
total 0
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file1
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file2
-rw-rw-r--. 1 saml saml 0 Jan 12 13:33 file3

หมายเหตุ:total 0ผลลัพธ์จากการls -lที่ถูกต้อง การนำไปใช้งานนี้lsจะแสดงจำนวนบล็อกที่ไฟล์ใช้เมื่ออยู่ในรายการ คุณสามารถมั่นใจตัวเองของความเป็นจริงนี้โดยการเพิ่มสลับไป-s lsนี่จะแสดงรายการบล็อกที่ใช้งานโดยแต่ละไฟล์ ที่นี่ฉันได้เพิ่ม 2 ตัวอักษรลงใน file1 & file2

ตัวอย่าง

$ ls -ls
total 8
4 -rw-rw-r--. 1 saml saml 3 Jan 13 12:07 file1
4 -rw-rw-r--. 1 saml saml 3 Jan 13 12:09 file2
0 -rw-rw-r--. 1 saml saml 0 Jan 13 12:05 file3

2. ข้อมูลเวลา / วันที่ของไฟล์ - คำสั่ง stat

$ stat file1
  File: ‘file1’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 11403667    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2014-01-12 13:33:38.279456149 -0500
Modify: 2014-01-12 13:33:38.279456149 -0500
Change: 2014-01-12 13:33:38.279456149 -0500
 Birth: -

เราสามารถใช้touchเพื่อจัดการกับการประทับเวลาต่างๆในไฟล์ที่กำหนด

3. ข้อความที่ตัดตอนมาจากหน้าสัมผัสคน

   -a     change only the access time
   -m     change only the modification time
   -t STAMP
          use [[CC]YY]MMDDhhmm[.ss] instead of current time

4. จัดการเวลาเข้าถึง

$ touch -a -t200001010000 file1

$ stat file1
  File: ‘file1’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 11403667    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2000-01-01 00:00:00.000000000 -0500
Modify: 2014-01-12 13:33:38.279456149 -0500
Change: 2014-01-12 13:38:52.023434696 -0500
 Birth: -

5. จัดการเวลาปรับเปลี่ยน

$ touch -m -t200001010000 file1

$ stat file1
  File: ‘file1’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd02h/64770d    Inode: 11403667    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/    saml)   Gid: ( 1000/    saml)
Context: unconfined_u:object_r:user_home_t:s0
Access: 2000-01-01 00:00:00.000000000 -0500
Modify: 2000-01-01 00:00:00.000000000 -0500
Change: 2014-01-12 13:39:31.060432026 -0500
 Birth: -

คุณอาจสงสัยเกี่ยวกับเวลาเปลี่ยน (ctime) touchที่ไม่สามารถจัดการได้โดยใช้ ติดตามเวลาที่ข้อมูลเมตาใด ๆ แตะกับไฟล์ ดูคำถาม & คำตอบ U & L นี้สำหรับรายละเอียดเพิ่มเติมที่ชื่อ: คุณสามารถทำอะไรกับไฟล์โดยไม่เปิดการประทับเวลา "เปลี่ยน" .


@sim: คำถามของฉันหมายความว่าฉันรู้ว่าการสัมผัสนั้นมีไว้สำหรับการเปลี่ยนเวลา ฉันแค่อยากรู้ว่าทำไมผู้ใช้ที่ซื่อสัตย์ถึงต้องการ หากไม่ใช่ส่วน ctime ของคำตอบของคุณฉันจะให้ -1
Quora Feans

16
@QuoraFea - คำตอบของฉันคือเพื่อประโยชน์ของคุณและผู้ใช้ที่เคยเจอในอนาคต โปรดอย่าคิดว่าคำตอบนั้นเป็นไปเพื่อประโยชน์ของคุณเท่านั้นและฉันขอโทษถ้าฉันทำให้คุณขุ่นเคืองไม่ว่าทางใดทางหนึ่งมันไม่ใช่ความตั้งใจของฉันฉันแค่พยายามอธิบายวิธีการทำงาน
slm

@sim: ฉันไม่ได้โกรธเพียงแค่คิดว่าคำตอบไม่ได้ไปในทิศทางที่ถูกต้อง อย่างไรก็ตามขอขอบคุณสำหรับคำตอบนี้
Quora Feans

@QuoraFea - คุณค่อนข้างจะยินดีและขอขอบคุณสำหรับ Q. พวกเขาชื่นชม!
slm

1
@Geek - ลองใช้คำสั่ง นั่นคือเอาต์พุตที่ถูกต้องจากls -lในไดเร็กทอรีที่ไฟล์มีขนาด 0 และยังไม่มีอะไรเหลืออยู่ ทันทีที่คุณกำหนดขนาดไฟล์หนึ่งไฟล์ผลรวมจะปรากฏขึ้นพร้อมจำนวนบล็อกที่ใช้งานโดยไฟล์ ดูการอัปเดตของฉันหากคุณไม่แน่ใจฉันได้เพิ่มตัวอย่าง
slm

20

นอกเหนือจากคำตอบที่ดีอีกสองข้อที่คุณได้รับแล้วการใช้อีกอย่างก็คือในคำพูดของคุณ

สร้างการแสดงผลที่ผิดพลาดเกี่ยวกับอายุของไฟล์

สำหรับตัวอย่างสำหรับการใช้งานในรูปแบบการสำรองข้อมูล คุณอาจไม่ต้องการอัปเดตการสำรองข้อมูลด้วยตัวที่ใหม่กว่าเนื่องจากมันเหมือนกันหรือเนื่องจากการเปลี่ยนแปลงนั้นไม่เกี่ยวข้องเมื่อเปรียบเทียบกับค่าใช้จ่ายในการอัปเดตการสำรองข้อมูลเช่นสายช้าไปยังโฮสต์ระยะไกล เพื่อให้บรรลุสิ่งนี้คุณมีตัวเลือกง่าย ๆ ในการทำเครื่องหมายไฟล์สำรองด้วยเวลาประทับที่ใหม่กว่าไม่แกล้งทำแต่ประกาศว่าการประทับเวลาที่ใช้งานได้ของไฟล์นั้นตอนนี้แตกต่างกัน

ความประทับใจเกี่ยวกับอายุของไฟล์นั้นเป็นเท็จ แต่ความหมายของมันนั้นแท้จริงและถูกต้องตามกฎหมาย


20

หนึ่งในการใช้งานที่พบบ่อยที่สุดtouchคือ - หรืออย่างน้อยก็เคยเป็น - เพื่อทริกเกอร์การสร้างรหัสใหม่

เครื่องมือmakeบิลด์ตามปกติ - และไฟล์อนุพันธ์ - พยายามบันทึกงานโดยไม่ทำการคอมไพล์ซ้ำ / สร้างไฟล์ขึ้นใหม่เว้นแต่ไฟล์ใดไฟล์หนึ่งที่เข้าสู่การสร้างนั้นมีการเปลี่ยนแปลงตัวอย่างเช่นหากไฟล์. o เป็นไฟล์ล่าสุดกว่า. c แหล่งที่มามักจะปลอดภัยที่จะเข้าใจว่าแหล่งข้อมูล C นั้นไม่ได้ถูกเปลี่ยนแปลงตั้งแต่ถูกคอมไพล์เพื่อสร้างไฟล์ออบเจ็กต์นั้น

แต่มีบางครั้งที่คุณต้องการบังคับให้บางสิ่งสร้างขึ้นมาใหม่ คุณสามารถทำการแก้ไขได้โดยไม่จำเป็นกับหนึ่งในไฟล์ต้นฉบับ แต่ก็มีความเสี่ยงที่จะเกิดความเสียหายกับบางสิ่ง คุณสามารถtouchสร้างไฟล์ใหม่ได้โดยไม่ต้องเสี่ยงกับการเปลี่ยนแปลงเนื้อหาและนั่นก็เพียงพอแล้วที่จะทำให้มั่นใจได้makeว่าถึงเวลาแล้วที่จะต้องสร้างทุกสิ่งขึ้นอยู่กับไฟล์นั้น

มีการใช้งานอื่น ๆ แต่ในอดีตนั้นมีขนาดใหญ่


ในขณะที่มันเป็นความคิดที่ดีที่จะเปลี่ยนไฟล์เพื่อทำให้เกิดการสร้างใหม่ฉันจะเถียงกับมัน ระบบการแก้ไขซอร์สโค้ดบางระบบอาจสับสนเกี่ยวกับไฟล์ที่เปลี่ยนแปลง ดังนั้นtouchจะไม่ดีเท่าการเปลี่ยนแปลงด้วยตนเอง เพื่อก่อให้เกิดการสร้างใหม่ฉันขอแนะนำให้ลบไฟล์ที่ส่งออก.oของแหล่งที่มาของคำถาม
30915

1
การเปลี่ยนแปลงและลบไฟล์. o แบบแมนนวลต้องใช้เวลาและการพิมพ์มากขึ้นและการเปลี่ยนแปลงแบบแมนนวลนั้นอาจเกิดข้อผิดพลาดได้ง่ายกว่ามาก และเรากำลังพูดถึงการปรับเปลี่ยนการประทับเวลาบนสำเนาการทำงาน - หากทำการแก้ไขหลังจากนั้นไฟล์จะสะท้อนการเปลี่ยนแปลงการประทับเวลาอย่างถูกต้อง และระบบควบคุมเวอร์ชันบางรุ่นอาจไม่สับสนกับการประทับเวลา
David

1
อย่างที่เดวิดพูด นี่คือการปฏิบัติ Unix มาตรฐานจริง ๆ เมื่อไม่นานมานี้และยังคงเป็นแนวปฏิบัติมาตรฐานสำหรับนักพัฒนาที่ทำงานนอก IDE
keshlam

12

ฉันทำงานกับกรอบงานเว็บอย่างน้อยหนึ่งกรอบ (จำไม่ได้) ว่าในโหมดพัฒนากำลังดูไฟล์ซอร์สโค้ดสำหรับการเปลี่ยนแปลงและโหลดแอปพลิเคชันใหม่เมื่อเกิดขึ้น

แน่นอนว่าบางครั้งคุณต้องการให้โหลดซ้ำหลังจากเปลี่ยนบางสิ่งที่ไม่ได้ดูซึ่งในกรณีนี้touchไฟล์การกำหนดค่าหลักของมันทำหน้าที่หลอก

ดังนั้นในกรณีทั่วไปเมื่อใดก็ตามที่คุณต้องการเริ่มกระบวนการที่เกิดจากการเปลี่ยนแปลงไฟล์โดยไม่ต้องเปลี่ยนไฟล์จริง


4
กรณีนี้เป็นจริงด้วย mod_wsgi และ apache; คุณสามารถโหลดซ้ำได้เช่นแอปเว็บ django เพียงแค่แตะไฟล์ wsgi
sapi

11

การใช้การสัมผัสที่ถูกต้อง:

  • อัปเดตเวลาประทับของไฟล์ภาพ (GIF / JPG / ฯลฯ ) ตามเวลาที่ถ่าย ผู้สร้างภาพไม่ได้อ่านหรือฟังข้อมูล EXIF
  • เก็บ c / m-time เมื่อทำการอัพเดตชุดของไฟล์จำนวนมากซึ่งการประทับเวลามีความสำคัญต่อชุดไฟล์
  • กำหนดเวลาของไฟล์แบตช์ (เช่น CSV) หากคุณต้องการนำเข้าอีกครั้งหลังจากความล้มเหลวและโปรแกรมนำเข้าขึ้นอยู่กับการประทับเวลา (ปล่อยให้การอภิปรายนั้นอยู่ในหัวข้ออื่น :-))
  • วัตถุประสงค์ในการเก็บถาวรเช่นมีการสำรองข้อมูลในโฟลเดอร์ตามปีจากนั้นตั้งค่าเวลาในโฟลเดอร์เหล่านี้เป็น 1 มกราคม YYYY เพื่อการเรียงง่าย

7

การใช้งานครั้งเดียวเพื่อแก้ไขการประทับเวลาของไฟล์ที่ตั้งค่าไว้ไม่ถูกต้อง

ตัวอย่างเช่นวิธีส่วนใหญ่ที่คุณคัดลอกไฟล์ (และสำหรับบางวิธีที่คุณอาจย้ายไฟล์) ส่งผลให้ไฟล์ใหม่มีการประทับเวลาของเวลาปัจจุบันมากกว่าการประทับเวลาของไฟล์ต้นฉบับ

โดยปกติแล้วนี่ไม่ใช่สิ่งที่ต้องการ แตะสามารถ "แก้ไข" ที่

การใช้งานอื่นก็เพื่อสะท้อนการปรับเปลี่ยนไฟล์ที่ถูกเลิกทำโดยการกู้คืนการประทับเวลาของไฟล์กลับคืนสู่สภาพเดิมก่อนการดำเนินการ "แก้ไข ... เลิกทำการแก้ไข"


2
จริง เวลาผ่านไปฉันพบว่าalias cp='cp --preserve=timestamps'มันเหมาะกว่าสำหรับฉันในดินแดนพีซี ...
Runium

5

ข้อแตกต่างที่สำคัญเทียบกับสิ่งที่thingsชอบecho(หรือดีกว่า> fileที่คนอื่นพูดถึง) คือการแตะนั้นจะไม่ทำให้เนื้อหาแตก > fileจะทำให้ไฟล์ว่างเปล่า touchจะไม่ แทนที่จะคิดถึงเทคนิคเพื่อหลีกเลี่ยงความเสียหายของเนื้อหาเพียงแค่ใช้การสัมผัส! มันจะทำงานน้อยลงในเคอร์เนลอยู่แล้วเพราะมันจะทำงานเฉพาะกับคุณสมบัติของไฟล์โดยไม่ต้องเสียเวลาเตรียมความพร้อมจริงสำหรับการเปิดและจากนั้นทำการปิด

การสัมผัสอาจแก้ไขการประทับเวลาแม้ว่าไฟล์นั้นอยู่ภายใต้การล็อกบังคับหรือคำแนะนำหรือเปิดแบบเอกสิทธิ์เฉพาะบุคคล อืมไม่เคยทดสอบหรืออ่านเกี่ยวกับมัน ...


2
>>จะต่อท้ายแทนการเขียนทับ
Michael Mrozek

ฉันคิดว่าจะพูดถึงเรื่องนี้ แต่มันกลับกลายเป็นอาณาเขตข้างเคียง คุณต้องพูดถึงความจริงที่ว่ามันจะทำให้เกิดข้อผิดพลาดหากไฟล์นั้นเป็นแบบเอกสิทธิ์เปิดอยู่แล้ว ฯลฯ ฯลฯ ปัญหาที่อาจเกิดขึ้นได้จากการใช้> เช่นกัน ฉันเดาว่าจุดรองของฉัน - นอกเหนือจากหลักที่ว่ามันเร็วกว่าเล็กน้อยที่จะสัมผัสเพียงแค่สถิติของไฟล์ - มันเป็นความคิดที่ดีที่จะเขียนโค้ดที่บอกมันตรงแทนที่จะเต้นรอบ ๆ พุ่มไม้

4

นี่คือข้อหนึ่ง - ฉันใช้โปรแกรมซอฟต์แวร์ที่ชื่อว่า SageTV เพื่อบันทึกรายการทีวี - รายการเหล่านี้มักจะถูกบันทึกใน MPEG-2 ซึ่งไม่ใช่ตัวแปลงสัญญาณที่มีประสิทธิภาพมาก แต่ก็ไม่ได้เป็นมิตรกับ iPad / iPhone ดังนั้นฉันจึงแปลงไฟล์เป็นไฟล์. mp4 แต่เมื่อเล่นไฟล์ SageTV คาดว่าการประทับเวลาของไฟล์จะเป็นตอนที่รายการทีวีเริ่มต้น - หากไม่ใช่จะเป็นการเพิ่มไทม์ไลน์ของรายการเพื่อไม่ให้ FF หรือ REW ง่ายขึ้น ดังนั้นฉันใช้ touch เพื่อรีเซ็ตการประทับเวลาของไฟล์. mp4 ให้เหมือนกับไฟล์ orignal
ถูกต้องหรือไม่


2

บ่อยครั้งที่คุณอาจมีกระบวนการที่เปลี่ยนจากหมายเลขผู้ใช้เช่นจากรูท -> อย่างอื่น การแตะสามารถเปิดโอกาสให้คุณสร้างไฟล์ในที่ที่มีเพียงรูทเท่านั้นที่สามารถแตะได้ก่อนที่แอปพลิเคชันจะเริ่มบันทึกลงในฐานะผู้ใช้รายอื่น


นั่นไม่ใช่การใช้การสัมผัสที่ไม่สามารถทำได้โดย "echo" - ดูคำถามต้นฉบับของผู้เขียน
Domingo Ignacio Galdos

เสียงสะท้อนเกี่ยวข้องกับการเปิดกระแสและเช่นนั้น ระบบสัมผัสสามารถปรับให้เหมาะกับไฮเปอร์ได้โดยการทำงานโดยตรงกับ inodes ประสิทธิภาพ FTW!
user56560

2

ที่ทำงานเรามีที่เก็บถาวรแผนที่ดิจิตอลที่มีอายุมากกว่า 15 ปี แผนที่เก่าเหล่านี้จะถูกบันทึกในรูปแบบที่หลากหลายเช่น PostScript, EMF, PRN, hpgl2, pdf และอื่น ๆ ที่โปรแกรมส่วนใหญ่ไม่เข้าใจ หรือคุณต้องการโปรแกรมที่แตกต่างกันหลายสิบโปรแกรมเพื่อดูโปรแกรมทั้งหมด

เพื่อความสะดวกในการค้นหาและเรียกดูรูปแบบที่แตกต่างกันเหล่านี้เราจึงสร้างแผนที่เวอร์ชัน jpeg จากนั้นใช้การสัมผัสเพื่อทำให้ไฟล์ jpeg ตรงกับการประทับเวลาของไฟล์ต้นฉบับ - บ่อยครั้งหลังจากสร้างขึ้นมาหลายปี

ตอนนี้เราสามารถใช้โปรแกรมเดียวเช่น Picasa เพื่อดูห้องสมุดทั้งหมดและค้นหาช่วงวันที่บางอย่างโดยบังเอิญ หากไม่มีการสัมผัสเราจะต้องเพิ่มข้อมูลเมตาวันที่สำหรับทุก ๆ ภาพอาจเป็นแบบแมนวลแล้วค้นหาจากสตริงเหล่านั้นเมื่อค้นหาช่วงวันที่ที่ต้องการ


1

ฉันยังไม่ได้ใช้เพื่อวัตถุประสงค์นี้ แต่ฉันมีสคริปต์ที่อ่านไฟล์และวันที่ของพวกเขาจากไดเรกทอรีและอ่านพวกเขาเพื่อใช้บนหน้าเว็บ ถ้าฉันต้องแก้ไขมันจะเปลี่ยนวันที่ ฉันถือว่าtouchพวกเขากำลังรีเซ็ตคำสั่งซื้อของพวกเขา


1

สคริปต์เริ่มต้นบางตัวเปรียบเทียบเวลาประทับของไฟล์กำหนดค่ากับไฟล์ pid ของตัวเอง ผลลัพธ์จะตัดสินใจว่าจะโหลดบริการที่ทำงานอยู่หรือไม่

หากมีสถานการณ์ที่คุณไม่ต้องการเปลี่ยนการตั้งค่า แต่ต้องการบังคับให้โหลดซ้ำให้แตะที่ช่วยคุณที่นี่


0

ฉันมีงาน cron ที่ได้รับการเปลี่ยนแปลงจากฐานข้อมูลที่เกิดขึ้นระหว่างการทำงานครั้งสุดท้ายของงานและการทำงานปัจจุบัน มันสร้างไฟล์ XML ของการเปลี่ยนแปลงที่ถูกประมวลผลแล้วลงในฐานข้อมูลที่แตกต่างกัน รับเวลารันล่าสุดจากการประทับเวลาของไฟล์เอาต์พุต XML *

หากมีอะไรผิดพลาดในการประมวลผลของไฟล์ XML ฉันอาจต้องการเรียกใช้ซ้ำจากวันที่ดั้งเดิมไม่ใช่จากวันที่ที่อ้างอิงในการประทับเวลาของไฟล์ XML ใหม่

วิธีที่ง่ายที่สุดในการทำเช่นนี้แทนที่จะแก้ไขสคริปต์ที่เรียกว่าเป็นต้นคือการสัมผัสไฟล์ XML และบังคับให้การประทับเวลาเป็นวันที่ฉันต้องการ

นอกจากนี้ถ้าฉันเริ่มใหม่ (ไม่มีไฟล์เอาต์พุต XML ก่อนหน้า) ฉันสามารถจำลองการมีอยู่ของมันโดยใช้การสัมผัส

[*] ก่อนที่ใครบางคนจะชี้ให้เห็น - ฉันตระหนักถึงเวลาที่งานเริ่มต้นและการเขียนไฟล์ XML จะทำให้เกิดช่องว่างเวลาเพียงไม่กี่นาทีซึ่งการเปลี่ยนแปลงฐานข้อมูลอาจเกิดขึ้นได้ งานรันในเวลาที่การเปลี่ยนแปลงฐานข้อมูลไม่น่าจะเกิดขึ้นอย่างมาก นั่นเป็นข้อแก้ตัวของฉันและฉันติดมัน :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.