Vấn đề này chỉ xảy ra trong container docker.
Chỉ find
là tốt:
find ${BASIN_SPIDER_CONFIG_PATH} -type f -name "*.json"
find
với sed
find ${BASIN_SPIDER_CONFIG_PATH} -type f -name "*.json"|xargs sed -i "s/10.142.55.199/host02/g"
đưa ra một lỗi:
/xxx/config/sed8Ey5tD: Device or resource busy
Tôi không hiểu nó là gì sed8Ey5tD
, ls
không thể nhìn thấy nó. Tôi nghĩ rằng đó là bởi docker, nhưng không thể tìm ra nó.
Làm thế nào để sed
thành công?
OK, tôi thấy rằng tập tin đang được volumed bởi Docker, có volumes: /xxx/config.json : /xxx/config/config.json
trong docker-compose.yml
. Sau đó docker-compose down
, tập tin có thể được chỉnh sửa. Nhưng làm thế nào để tôi chỉnh sửa tập tin mà không có docker-compose down
?
sed
không tạo tập tin sao lưu xargs sed -i'' "s/10.142.55.199/host02/g"
(thêm dấu ngoặc đơn ngay sau -i
khóa)
sed
. Khi bạn thực hiện sửa đổi tại chỗ,sed
sẽ tạo một tệp tạm thời để xử lý để tránh làm hỏng bản gốc của bạn. Nếu bất cứ điều gì đúng, nó sẽ thay thế bản gốc bằng tạm thời. Nhưng câu hỏi của bạn là gì? Bạn muốn biết nguyên nhân gây ra lỗi đó hoặcsed8Ey5tD
tập tin là gì?