사용자가 CLI 인터페이스를 사용하여 로그인할 때마다 자동으로 화면이 실행되도록 설정하려면 어떻게 해야 합니까? 해당 사용자에 대해 이미 실행 중인 스크린 세션이 있는 경우 해당 스크린 세션에 새 로그인을 연결하고 싶습니다. 스크린 세션에 연결할 때마다 새 로그인마다 새 창이 생성된다면 정말 좋을 것입니다.
답변1
먼저, 이 작업을 수행할 사용자에 대해 해당 ~/.screenrc
라인이 있는지 확인하십시오.
shell /bin/bash
(또는 사용자가 현재 사용하는 다른 쉘). 이 설정을 지정하지 않고 우리처럼 쉘을 변경하면 사용자는 로그인할 수 없습니다. 이 줄을 사용하여 화면 시작 메시지를 없애는 것을 고려할 수도 있습니다.
startup_message off
좋아, 이제 이미 실행 중인 첫 번째 화면 세션이 종료되고 이미 실행 중인 화면이 없으면 세션을 시작하는 실행 가능한 스크립트를 만들어 보겠습니다. 터미널에서 실행
sudo nano /bin/screenlogin.sh
다음 두 줄을 입력하세요.
#!/bin/bash
screen -x -r || screen
을 누른 Ctrl x다음 y파일을 저장하세요. 달리다
sudo chmod 755 /bin/screenlogin.sh
chsh
마지막으로 대상 사용자에서 실행 하고 /bin/screenlogin.sh
요청 시 셸에 입력합니다.
답변2
달리기는 screen -xR
기본적으로 달리기와 동일합니다 screen -xr || screen
.
문제는 내가 아는 한 로그인 쉘에 플래그를 전달할 수 없다는 것입니다. 또한 로그인 셸로 화면과 같은 셸이 아닌 것을 사용하면 SFTP와 같은 문제가 발생할 수 있습니다.
따라서 우리가 할 일은 bash를 로그인 쉘로 설정하는 것입니다. 그런 다음 .bashrc(시작할 때 bash가 실행되는 파일) 끝에 screen을 실행하는 코드를 추가합니다. 그러면 Screen은 에 지정된 모든 쉘을 실행합니다 .screenrc
.
우리는 이 명령이 특별한 조건에서만 실행되도록 만들 것입니다: 현재 실행 중인 bash 복사본이 다른 bash 복사본에 의해 (아마도 간접적으로) 시작되지 않은 경우에만. 이렇게 하면 사용자가 bash를 쉘로 원하고 화면이 그 안에서 bash를 시작하는 경우 컴퓨터가 실행될 때까지 사용자는 bash 내부 화면 내부 bash 내부 화면 내부에서 러시아 인형의 폭발적인 bash를 얻지 못하게 됩니다. 메모리가 부족합니다.
먼저 를 실행하여 셸을 /bin/bash로 변경한 chsh
다음 비밀번호를 입력하고 /bin/bash
Enter 키를 누릅니다.
다음으로 홈 폴더의 숨겨진 .bashrc
파일을 편집하여 끝에 다음을 추가합니다.
if [ ${SHLVL} -eq 1 ]; then
((SHLVL+=1)); export SHLVL
exec screen -xR
fi
.screenrc
이제 홈 폴더의 숨겨진 파일을 편집(종료하지 않으면 생성)합니다 . 다음 설정을 추가하거나 편집합니다.
shell /bin/zsh
startup_message off
(물론, Zsh가 아닌 다른 쉘을 원한다면 대신에 넣으십시오. Bash에서도 작동할 것입니다.)