시작 파일에서 시간이 많이 걸리는 명령줄을 처리하는 방법은 무엇입니까?

시작 파일에서 시간이 많이 걸리는 명령줄을 처리하는 방법은 무엇입니까?

시작할 때 한 번만 자동으로 실행하고 싶은 명령이 있습니다. 제가 찾은 해결책은 로그인 셸 세션의 시작 파일에 넣는 것이었습니다. ~/.profile문제는 이 명령이 시간이 많이 걸리고 초기화에 많은 지연이 발생한다는 것입니다.

어떻게 해결하나요? rcloneGoogle 드라이브의 데이터를 원합니다 .

답변1

설명하신 내용은 셸 초기화에서 이 작업을 수행하도록 요구하거나 권장하는 것이 아니라 단순히 사용자 세션이 작동하는 데 필요한 단위입니다.

네가 이걸 하고 싶다면앞으로그래픽 목표 또는 다중 사용자 부팅 목표를 달성한 경우 부팅 시스템에 호출하는 시작 스크립트가 있는지 확인하기만 하면 됩니다.

이제 어떤 부팅 시스템을 사용하고 있는지, 어떤 운영 체제를 사용하고 있는지 말할 필요가 없습니다. 하지만 "bash"를 읽으면 systemd가 있는 Linux인 것으로 가정합니다.

이것은 이것을 매우 쉽게 만듭니다. 그냥 소위 써라시스템 단위 파일그런 다음 시작을 요청합니다. 이는 네트워크가 시작되자마자 실행될 수 있고 동기화된 파일이 주로 네트워크 데이터를 기다리면서 바인딩되므로 시스템의 다른 항목을 병렬로 초기화할 수 있기 때문에 매우 우아합니다. 이는 기본적으로 시스템에 영향을 미치지 않습니다. . 추가 로드가 발생하며, 로그인만 하면 동기화가 완료됩니다.

시스템 단위 파일은 대략 다음과 같습니다.

[Unit]
Description=Syncing stuff to and fro Google Drive

[Service]
Type=oneshot
ExecStart=/usr/bin/rclone --options-to-rclone --whatevers
Requires=network.target
After=network.target
# The following only if not right to run rclone as root
User=yourusername
Group=yourgroupnametypicallysameasusername

[Install]
WantedBy=multi-user.target
# use WantedBy=graphical.target instead if you need that to be done
# only when the system's ready to log in graphically

예를 들어 systemd 시스템 서비스 파일 디렉터리에 .service 파일로 저장한 /etc/systemd/system/rsync-googledrive.server다음 sudo systemctl enable rsync-googledrive부팅 시 서비스가 시작되는지 확인하세요.

대신 이를 사용자 서비스에 넣을 수도 있습니다 ~/.config/systemd/user/. 이 경우 User=및 행을 제거하고 해당 행을 로 교체합니다.Group=WantedBy=WantedBy=default.target

관련 정보