Evince는 Evince가 먼저 시작된 경우에만 안정적으로 PDF를 열 수 있습니다. 중단된 Evince 인스턴스로 인해 클릭하면 시스템이 정지될 수 있습니다.

Evince는 Evince가 먼저 시작된 경우에만 안정적으로 PDF를 열 수 있습니다. 중단된 Evince 인스턴스로 인해 클릭하면 시스템이 정지될 수 있습니다.

내 컴퓨터에서(아래 세부정보 참조) Evince가 예상대로 문서를 열지 않았지만 이는 사용된 방법에 따라 다릅니다. 제가 언급하는 두 가지 방법은 다음과 같습니다.

  • (A) 문서를 대상으로 Evince를 시작합니다(예: 문서를 클릭하고 Open With 및 Evince 사용).또는evince <target doc>터미널에서 실행);
  • (B) 먼저 문서 없이 Evince를 시작한 다음 Evince 창에서 "열기..."를 클릭합니다.또는열려 있는 Evince 창의 상단으로 문서를 드래그합니다(이렇게 하면 새 문서가 포함된 다른 Evince 창이 열립니다).

방법 A는 작동하지 않습니다(대부분의 경우). 이로 인해 프로세스가 중단되며, pgrep이는 도크의 아이콘을 통해 볼 수 있습니다. htop이러한 프로세스가 CPU와 메모리를 거의 사용하지 않음을 나타냅니다. 이러한 프로세스를 정상적으로 종료할 수 있습니다. 그러나 도크에서 이러한 Evince 인스턴스의 아이콘을 클릭하면 시스템이 즉시 완전히 정지됩니다(켤 수 없음 tty). 해결 방법은 전원 버튼을 통해 강제로 다시 시작하는 것입니다.

예외: 방법 A가 작동하는 경우도 있습니다. 찾았습니다(대개는 그렇지만아마도항상은 아니지? 지금은 잘 모르겠습니다) 작은(0.5MB) PDF에 적합합니다.이미지만 있고 텍스트는 없습니다. 그럴 줄 알았어때때로이미지와 텍스트가 포함된 중간 크기(4MB) PDF도 처리할 수 있습니다. 이 경우 PDF를 보기 위한 UI가 포함된 창이 나타나는데 PDF가 나타나지 않는 경우가 있습니다. 다른 경우에는 프로세스가 중단되거나 PDF가 정상적으로 열립니다. 이미지와 텍스트가 포함된 큰 PDF(6MB)에서는 작동하지 않으며, 이미지가 없고 텍스트만 포함된 작은 PDF(0.2MB)에서는 작동하지 않는다는 것을 알았습니다. 또한 작은(0.2MB) .ps 이미지를 시도했지만 방법 A로는 열 수 없습니다.

방법 B는 (대부분) 잘 작동합니다.

예외: 정지된 프로세스가 이미 실행 중인 경우 방법 B가 작동하지 않는 경우가 있습니다. 즉, 정지된 프로세스가 실행 중인 경우 빈 Evince 창을 열 수 있지만 "열기..."를 사용하거나 문서를 창으로 드래그하면 문서가 열릴 때도 있고 열리지 않을 때도 있습니다.

내 컴퓨터:

  • 우분투 20.04.6, 64비트
  • 창문 시스템: Wayland
  • 64GiB 메모리
  • 11세대 Intel 프로세서
  • 일부 온보드 그래픽 카드: Mesa Intel XE(TGL GT2)
  • 2TB SSD 공간, 가득 차지 않음

또한 이것이 항상 문제가 되는 것은 아니라는 점을 덧붙이고 싶습니다. 나는 Evince를 완벽하게 사용할 수 있었습니다. 그러나 과거 어느 시점부터 이런 현상이 나타나기 시작했고, 무엇이 바뀌었을지 알 수 없어 Evince 사용을 피했습니다.

추가 진단:

strace중단된 Evince 프로세스에서 실행을 시도했습니다 . 이것이 도움이 될 수 있다는 내용을 읽었지만 결과는 전혀 이해되지 않습니다.

strace: Process 12102 attached
restart_syscall(<... resuming interrupted read ...>) = 1
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(11, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\4\1\1\21\0\0\0\373\5\0\0\205\0\0\0\1\1o\0\30\0\0\0/org/a11"..., iov_len=2048}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 169
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(11, {msg_namelen=0}, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}], 3, 0) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\3\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}], 3, -1) = 1 ([{fd=11, revents=POLLIN}])
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(11, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\4\1\1\21\0\0\0\375\5\0\0\205\0\0\0\1\1o\0\30\0\0\0/org/a11"..., iov_len=2048}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 169
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(11, {msg_namelen=0}, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
write(5, "\1\0\0\0\0\0\0\0", 8)         = 8
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}], 3, 0) = 1 ([{fd=5, revents=POLLIN}])
read(5, "\3\0\0\0\0\0\0\0", 16)         = 8
poll([{fd=3, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}], 3, -1

몇 분 정도 기다렸는데 추가 출력이 기록되지 않았습니다. 이 내용을 읽는 것이 도움이 될 수 있기 때문에 이 내용을 실행했지만 netstat여전히 출력을 이해하지 못합니다.

$ netstat -p | grep 12102
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
unix  3      [ ]         STREAM     CONNECTED     150817   12102/evince         
unix  3      [ ]         STREAM     CONNECTED     149214   12102/evince         
unix  3      [ ]         STREAM     CONNECTED     149075   12102/evince         
unix  3      [ ]         STREAM     CONNECTED     149074   12102/evince         
unix  3      [ ]         STREAM     CONNECTED     149213   12102/evince         
unix  3      [ ]         STREAM     CONNECTED     151902   12102/evince

ls -l /proc/<proc id>/fd읽어보니 도움이 될 것 같아서 다시 달려갑니다 . 중단된 프로세스(12102)에서 프로세스를 종료하고 동일한 PDF(프로세스 15795)에서 메서드 B를 사용한 후:

<me>@<my computre>:~$ ls -l /proc/12102/fd
total 0
lr-x------ 1 <me> <me> 64 Okt 11 18:37 0 -> /dev/null
lrwx------ 1 <me> <me> 64 Okt 11 18:37 1 -> 'socket:[149074]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 10 -> 'socket:[149214]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 11 -> 'socket:[151902]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 12 -> 'anon_inode:[eventfd]'
lr-x------ 1 <me> <me> 64 Okt 11 18:37 13 -> anon_inode:inotify
lr-x------ 1 <me> <me> 64 Okt 11 18:37 14 -> '/home/<me>/.local/share/gvfs-metadata/home (deleted)'
lr-x------ 1 <me> <me> 64 Okt 11 18:37 15 -> '/home/<me>/.local/share/gvfs-metadata/home-a9b0a1cb.log (deleted)'
lr-x------ 1 <me> <me> 64 Okt 11 18:37 16 -> /home/<me>/Downloads/<my document>.pdf
lrwx------ 1 <me> <me> 64 Okt 11 18:37 2 -> 'socket:[149075]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 3 -> 'socket:[149213]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 4 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 5 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 6 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 7 -> '/memfd:wayland-cursor (deleted)'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 8 -> 'socket:[150817]'
lrwx------ 1 <me> <me> 64 Okt 11 18:37 9 -> 'anon_inode:[eventfd]'
<me>@<my computer>:~$ ls -l /proc/15795/fd
total 0
lr-x------ 1 <me> <me> 64 Okt 11 18:58 0 -> /dev/null
lrwx------ 1 <me> <me> 64 Okt 11 18:58 1 -> 'socket:[174829]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 10 -> 'socket:[177581]'
lr-x------ 1 <me> <me> 64 Okt 11 18:58 102 -> '/home/<me>/.local/share/gvfs-metadata/root-5357d137.log (deleted)'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 11 -> 'socket:[174831]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 12 -> 'anon_inode:[eventfd]'
lr-x------ 1 <me> <me> 64 Okt 11 18:58 13 -> anon_inode:inotify
lr-x------ 1 <me> <me> 64 Okt 11 18:58 14 -> '/home/<me>/.local/share/gvfs-metadata/home (deleted)'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 15 -> '/memfd:wayland-cursor (deleted)'
lr-x------ 1 <me> <me> 64 Okt 11 18:58 16 -> '/home/<me>/.local/share/gvfs-metadata/home-41fe52fb.log (deleted)'
lr-x------ 1 <me> <me> 64 Okt 11 18:58 17 -> /home/<me>/Downloads/<my document>.pdf
lrwx------ 1 <me> <me> 64 Okt 11 18:58 2 -> 'socket:[174829]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 3 -> 'socket:[177580]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 4 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 5 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 6 -> 'socket:[179272]'
lr-x------ 1 <me> <me> 64 Okt 11 18:58 60 -> '/home/<me>/.local/share/gvfs-metadata/root (deleted)'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 7 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 8 -> 'anon_inode:[eventfd]'
lrwx------ 1 <me> <me> 64 Okt 11 18:58 9 -> '/memfd:wayland-cursor (deleted)'

후자의 프로세스에 두 개의 "wayland 커서" 줄이 있다는 점을 제외하면 이것은 나에게 동일해 보입니다.

이 문제를 진단하는 방법에 대한 제안을 주시면 감사하겠습니다. 나는 보통 PDF에 Okular를 사용하지만 Evince는 큰 이미지가 포함된 PDF에 더 적합하다는 것을 알았고 이러한 PDF를 더 많이 보기 시작했습니다. 또한 이 문제는 저를 매우 혼란스럽게 하며 해결하고 싶습니다.

관련 정보