ฉันจะหยุดชั่วคราว / ทำงานต่อ rsync ได้อย่างไร


49

ฉันจะหยุด rsync ที่หยุดชั่วคราวได้อย่างไร

ครั้งแรกที่ฉันทำCtrl+ Cเพื่อฆ่ามันและใช้-Pแฟล็กเพื่อทำงานอีกครั้ง สิ่งนี้มีแนวโน้มที่จะทำให้การถ่ายโอนไฟล์ปัจจุบันเสียหายหรือไม่

ครั้งที่สองฉันแค่ทำให้ MacOS เข้าสู่โหมดสลีป (โดยปิดฝา) ดูกระบวนการทำงานที่ฉันเห็น 2 (ไม่แน่ใจว่าทำไม) ด้วยสถานะ 'S'

พยายามใช้

kill -SIGCONT

เพื่อดำเนินการกระบวนการต่อ แต่ไม่มีผลใด ๆ

คำตอบ:


61

คุณสามารถหยุดโปรแกรมชั่วคราวได้โดยส่งสัญญาณTSTP(สุภาพ) หรือSTOP(บังคับ) ใน terminal ที่คุณเคยทำงานrsyncในการกดCtrl+ ส่งZ TSTPทำงานต่อโดยใช้คำสั่งfgor bgในเทอร์มินัลหรือCONTสัญญาณ

การฆ่าโพรเซสซิงนั้นปลอดภัยแล้วรันอีกครั้ง มันจะดำเนินการต่อจากจุดที่ค้างไว้ อาจไม่มีประสิทธิภาพเล็กน้อยโดยเฉพาะถ้าคุณไม่ได้ผ่าน--partial(รวมอยู่ใน-P) เนื่องจากrsyncจะตรวจสอบไฟล์ทั้งหมดอีกครั้งและประมวลผลไฟล์ที่ถูกขัดจังหวะตั้งแต่เริ่มต้น

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

หากคุณตัดการเชื่อมต่อแล็ปท็อปของคุณและเชื่อมต่อที่อื่นอาจเป็นที่อยู่ IP อื่น จากนั้นการเชื่อมต่อ TCP ที่ใช้โดย rsync จะถูกตัดดังนั้นคุณต้องฆ่ามันและเริ่มต้นใหม่อีกครั้ง สิ่งนี้อาจเกิดขึ้นได้หากคุณระงับแล็ปท็อปของคุณและการเชื่อมต่อ TCP หมดเวลา การหมดเวลาในที่สุดจะกรองออกไปสู่ระดับแอปพลิเคชัน แต่อาจใช้เวลาสักครู่ ปลอดภัยที่จะกดCtrl+ Cและเรียกใช้ rsync อีกครั้ง


1
ที่จริงแล้วการฆ่าrsync -avhเพียงแค่ปล่อยไฟล์ปัจจุบันที่ถูกคัดลอกถ้าไฟล์มีขนาดใหญ่คุณเสียเวลาไปมากทีเดียว อาจจะCtrl+zย้ายไฟล์ชั่วคราว (เริ่มต้นด้วยจุด) แล้วCtrl-Crsync อาจเป็นทางออกที่ดีกว่า
malat

ขอบคุณสำหรับคำอธิบายรายละเอียด ในการชี้แจง: ctrl + z เพื่อหยุดชั่วคราว fg เพื่อทำงานต่อ, bg เพื่อหยุด
Praesagus

3
@ Praesagus ที่bgจะนำกระบวนการไปที่b ack g roundไม่หยุด
Jari Keinänen

--partialคือสิ่งที่ฉันต้องการ ฉันพยายามคัดลอกข้อมูล 21GB และในหมู่นี้ฉันมีไฟล์ 6.6GB ปัญหาคือเครือข่ายฆ่าการเชื่อมต่อของฉันหลังจากถ่ายโอนข้อมูลไม่กี่ GB ซึ่ง--partialเป็นสิ่งที่ฉันต้องการ
AnthonyD973

20

Ctrl+ Zเพื่อระงับและ:

$ fg

เพื่อใช้งานต่อไป

$ jobs

เพื่อดูงานที่ถูกระงับ bg [number]พื้นหลังพวกเขา; fg [number]เพื่อเบื้องหน้ามัน


2
Ctrl+Sระงับเอาต์พุตการเลื่อนเท่านั้นไม่ใช่โปรแกรมที่ขีดเส้นใต้ (เว้นแต่ว่าจะถูกบล็อกรอให้เครื่องรับเอาต์พุต) และเฉพาะเมื่อคุณไม่ได้ปิดการใช้งาน
Gilles 'ดังนั้นหยุดความชั่วร้าย'

1
ด้วยสถานะ 'S' ปัจจุบันจะไม่ทำงานต่อ ปลอดภัยไหมที่จะฆ่าโดยใช้ Ctrl + C และเรียกใช้ rsync อีกครั้ง ฉันมีตัวเลือกอื่น ๆ อีกบ้าง? จะมีในใจในครั้งต่อไปแม้ว่าขอบคุณ
qnoid

1
นอกจากนี้โปรดทราบว่า Ctrl-Z เพื่อระงับกระบวนการมีแนวโน้มที่จะส่งผลให้หมดเวลาของการเชื่อมต่อเครือข่าย TCP ใด ๆ ที่จัดตั้งขึ้นโดยโปรแกรมนั้น ดังนั้นการปล่อย rsync ที่ถูกระงับไว้เป็นเวลานานกว่าสองสามนาทีจะทำให้เกิดการเลิกกะทันหันพร้อมกับข้อความแสดงข้อผิดพลาดเมื่อคุณนำกลับมาที่พื้นหน้าและพบว่าซ็อกเก็ตที่เปิดอยู่นั้นกลับมาผิดพลาดจากการอ่านและเขียน
จิมเดนนิส

8

วิ่งrsyncด้วย--partialธง จากนั้นจะเก็บการถ่ายโอนบางส่วนและทำต่อไฟล์บางส่วนเมื่อเริ่มต้น


5

ผู้คนที่นี่ได้กล่าวถึงการใช้งานการ--partialตั้งค่าสถานะนั้นจะต้องมีการกล่าวถึง แต่จะดำเนินการต่อเมื่อมีการใช้งานการตั้งค่าสถานะ--appendหรือ--append-verifyเมื่อทำงานต่อ

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

สรุป:คุณสามารถขัดจังหวะการrsync --partialใช้Ctrl+ Cถ้าคุณใช้rsync --appendเมื่อกลับมาทำงานต่อ

(ที่มา: rsync สามารถดำเนินการต่อหลังจากถูกขัดจังหวะหรือไม่เรียก 5 เมษายน 2016)


ดังนั้นถ้าฉันใช้rsync --avP <source> <destination>ฉันต้องหยุดชั่วคราวด้วย CTRL + C แล้วเริ่มพิมพ์ต่อrysnc --appendหรือไม่
kingmakerking

@kingmakerking ใช่
Mehdi Nellen

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