Tôi có một kịch bản mẫu sh
trên môi trường Linux của tôi, mà về cơ bản chạy là ssh-agent
cho vỏ hiện nay, thêm một chìa khóa để nó và chạy hai lệnh git:Làm thế nào để kiểm tra xem ssh-agent đã chạy trong bash chưa?
#!/bin/bash
eval "$(ssh-agent -s)"
ssh-add /home/duvdevan/.ssh/id_rsa
git -C /var/www/duvdevan/ reset --hard origin/master
git -C /var/www/duvdevan/ pull origin master
Script thực sự hoạt động tốt, nhưng mỗi khi tôi chạy nó tôi nhận được một quá trình mới vì vậy tôi nghĩ rằng nó có thể trở thành một vấn đề hiệu suất và tôi có thể kết thúc có quá trình vô dụng ra khỏi đó.
Một ví dụ về kết quả:
Agent pid 12109
Identity added: /home/duvdevan/.ssh/custom_rsa (rsa w/o comment)
Ngoài ra, cùng với tất cả điều này, là nó có thể tìm thấy một ssh-agent
quá trình hiện hành và thêm chìa khóa của tôi vào nó?
Hãy thử '$ SSH_AGENT_PID'. – choroba
Nếu bạn muốn giết một quá trình sau khi sinh ra nó, bạn có thể lưu PID của nó vào một biến và gọi nó như vậy: 'kill -9 $ PID_SSH_AGENT' – alok
Tôi nghĩ rằng làm cho kịch bản có trách nhiệm bắt đầu một tác nhân là cách tiếp cận sai. Chỉ cần giả định rằng một tác nhân * đang chạy và yêu cầu bất kỳ người dùng nào để đảm bảo rằng họ đã có một đại lý (thường được bắt đầu bằng shell đăng nhập ban đầu của bạn.) – chepner