"ls"는 두 개의 서로 다른 터미널에서 동일한 컴퓨터의 동일한 폴더에 있는 서로 다른 파일을 봅니다. 어떻게 이럴 수있어?

"ls"는 두 개의 서로 다른 터미널에서 동일한 컴퓨터의 동일한 폴더에 있는 서로 다른 파일을 봅니다. 어떻게 이럴 수있어?

지금 아주 이상한 상황에 직면했습니다. TMUX 세션에서 SSH를 통해 Ubuntu를 실행하는 클라우드 VM에서 무언가를 관리하고 있습니다. 이제 두 개의 창이 열려 있고 동일한(가상) PC에 있더라도 서로 다른 파일이 표시됩니다.

터미널 1:

pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd                                                                            
/home/pan/shared/Lammps/new-lengths/125                                                                                                 
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de                                                                                                             
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls                                                                             
*****_annotated.in  data.lammps             ******.py  process         rg           run1.restart                                                                                                                                           
SHAKE_10             dump_*****.lammpstrj  lammps.out   process.py      rg.dump      ******.data                                                                                                                                        
SHAKE_7              extract_data.sh         log.lammps   process_all.py  run.restart                                                                                                                                                         
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ 

NO2. 터미널:

pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ pwd
/home/pan/shared/Lammps/new-lengths/125
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ hostname
gergo-skynet-master.desy.de
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ ls
*****_annotated.in  extract_data.sh  *****.py  process  process.py  process_all.py  ******.data
pan@gergo-skynet-master:~/shared/Lammps/new-lengths/125$ 

일부 파일 이름을 검열해야 했지만 이해하실 겁니다.

이봐

내가 확인한 사항:

  • 나는 똑같은 파일 시스템 위치에 있습니다.
  • ls두 터미널 모두 별칭이 없습니다.
  • 나는 동일한 컴퓨터의 두 터미널에서 동일한 사용자입니다.

위의 것이 올바른 것이라고 확신하지만 이것이 어떻게 가능한지 혼란스럽습니다. 하위 터미널에서 CD를 사용해도 상위 터미널에서 보는 파일이 모두 표시되지는 않습니다. 이 상황을 디버깅하려면 어디서부터 시작해야 할지 모르겠습니다. 앞으로도 같은 문제로 중요한 파일들을 못 볼까봐 걱정이 되어서 꼭 터미널을 닫기 전에 무슨 일이 일어났는지 알아보고 싶습니다.

어떤 아이디어가 있나요? 어떤 추가 정보가 유용할까요?

답변1

이 동작에는 여러 가지 이유가 있을 수 있습니다. 다음과 같은 일련의 이벤트를 고려해보세요.

  1. 디렉토리를 생성하고 그 디렉토리로 이동하여 파일을 생성합니다:

    mkdir /tmp/dir1
    cd /tmp/dir1
    touch file{1,2,3}
    
  2. 다른 터미널에서 디렉터리 이름을 바꾸고 원래 이름으로 새 디렉터리를 만든 다음 다른 파일로 채웁니다.

    mv /tmp/dir1 /tmp/dir2
    mkdir /tmp/dir1
    cd /tmp/dir1
    touch file{4,5,6}
    
  3. 이제 원래 터미널에 다음이 표시됩니다.

    $ pwd
    /tmp/dir1
    $ ls
    file1 file2 file3
    

    두 번째 터미널에는 다음이 표시됩니다.

    $ pwd
    /tmp/dir1
    $ ls
    file4 file5 file6
    

이 동작을 일으킬 수 있는 다른 상황이 있습니다(예: 두 터미널에 대해 별도의 설치 네임스페이스에서 실행(아마도 컨테이너에서 실행)). 그러나 위의 설명이 가장 그럴듯한 설명인 것 같습니다.

관련 정보