Ubnutu 18.04 systemd synergyc service등록 실행설정

가지고 있는 리눅스 PC가 있는데 요게 참.. 키보드 마우스 따로 달아서 쓰기가 여간 귀찮은게 아닙니다. synergy라는 걸출한 어플이 있지만, 한가지 단점이 설정이 약간 까다롭고, 부팅시에 자동실행하는게 안되다는건데요. 그래서 어느 업체는 버전2라고 쉬운 설정을 내놓고, 유료로 업데이트해서, 팔고 있습니다. 물론 전 그것도 사긴 했는데. 써온지 한 5년점어가니까. 그것마져도 귀찮고.. 내가 엔지니어가 맞나라는 생각도 들어서 약간의 손품을 팔아서 이것저것 알아봤습니다.

사용하는 리눅스 배포본이야 이젠 거의 우분투밖에 안쓰니. 예전엔 레드햇, gentoo, 등등 써봤는데. 그전에 맛들렸던게. FreeBsd와 Solaris라서.. 영 적응을 못했나봅니다. gentoo의 그 기다림은. 최초에는 신선했다가 결국엔.. 나는 누구인가 내 PC는 무엇인가 라는 존재에 대한 의문까지 들게 할 저도였으니까요. 아무튼 18.04 LTS로 거의 정식 배포고.(아직 자동으로 업데이트 시작이 안된걸로 아는데 아닌가요?). 오래된 init.d 도 저만치 사라지는 마당에. Systemd에 서비스 등록하는걸 찾아봤습니다. 생각보다 여기저기 참고할 자료가 많았고요. 기타 이것저것 안가리고 그냥. 하라는대로.

/etc/systemd/system/synergyc.service 를 생성합니다. 물론 root로 해야 잘 돌겠죠? 아닌가요?

내용은 이것저것 참고해서 아래처럼 작성하고요. 물론 저기 이름이랑 IP:Port는 본인의 구성에 맞춰야하는건 아시겠죠? name은 display이름이였나 screen이름이었나. synergy 서버에서 각 화면을 구분하는 별명같은거고요. 저 이름으로 서버나 클라이언트를 찾거나 합니다. 아니면 속 편하게 고정 IP라면 IP로 다 맞추셔도 좋습니다. 그게 제일 속편하긴 합니다. 제 구성은. 리눅스가 Client 즉 서버쪽의 마우스 키보드를 이용하는 쪽이고요. 윈도우 PC가 Server입니다. IP는 해당 서버 윈도우PC이고, 포트는 기본 포트를 썼습니다. 그리고 ssl옵션을 양쪽에서 쓸거라서 Client쪽에도 enable-crypto를 주었습니다. 서버가 여러 목록을 가지고 있으므로 Client는 서버쪽 하나의 주소만 정해주면 되겠습니다. 혹시라도 더 복잡한 다른 구성이 되는지는 모르겠네요. 4대까지는 연결해봤는데, 그 이상은 안해봐서요. 모니터는 공유가 안되니. 직접 연결해야 하니까요. 추가모니터가 없다면 Synergy안쓰고, 그냥 원격접속 쓰겠죠?

내용중에 팁이라면 티빙고 삽질경험이라면 경험인데, ExecStart에는 절대경로를 적어줘야 합니다. 안그러면 에러 내더라고요. 절대경로 적으라고. 해외 사이트에는 Bash Script적는것도 있고. python실행하는 것도 있고. node.js실행하는 것도 있고 별게 다있는데, 왠만한건 다 되는듯 합니다.
아래와 같은 포맷이 윈도우쪽의 Ini였던걸로 알고 있는데.  뭐 그려려니하고 넘어갑니다. 사실 이게 더 보기 좋으니까요.

[Unit]
Description=Synergyc prelogin launcher service
After=network.target

[Service]
Type=service
User=jiwon
WorkingDirectory=/home/jiwon
ExecStart=/usr/bin/synergyc -f –name jiwon-u16 –enable-crypto 192.168.0.50:24800
Restart=always

[Install]
WantedBy=multi-user.target

등록을 해줍니다. root권한이 필요하겠죠?

$ sudo systemctl enable synergyc.service

그뒤 바로 실행해보려면

$ sudo systemctl start synergyc.service해보면 되고요. 이때 에러나거나면 콘솔에 친절하게 빨간색으로 표시해줍니다. 심심하시면 위에 절대경로 빼고해보세요. 그리고 매번 실행한 결과는 자동으로 짧은 로그도로 남겨줍니다. 옛날글들 보면 bash스크립트 만들고 PID저장해서 daemon처럼 start stop을 직접하도록 한것도 있는데. 그건 그냥 service를 이용했을 때이고, systemctl은 그것들을 알아서 잘 해주는것 같습니다. 위 옵션을 보셔도 synergyc를 -f  foreground로 실행시킵니다. –daemon주면 그냥 실행하고 끝나더군요.
혹시 로그 계속 저장하고 싶으신분은 위 옵션에 –log 옵션을 주시면 되겠습니다. synergyc –help해보면 역시 사용법 있으니 보시면 되고요.

실행 상태 확인은

sudo systemctl status synergyc.service가 되겠고요. 좀더 의심이 드시는 분은 ps쓰시면 되겠죠? 근데 생각보다 우선순위가 낮은지 부팅 로그인 화면이 나오고 좀 시간이 지나야 먹히긴 합니다. 그래도 안되는 건 아니니 조금만 기다리세요.

이글 쓰면서 잠깐 참고한 브로그링크 겁니다. 만들때는 참고 안했는데, 막상 글쓰려니 어찌 쓸지 또 찾아보게 되네요.

http://shoaly.tistory.com/46