![디스크 대신 RAM에 heredoc를 만드는 방법은 무엇입니까?](https://linux55.com/image/207286/%EB%94%94%EC%8A%A4%ED%81%AC%20%EB%8C%80%EC%8B%A0%20RAM%EC%97%90%20heredoc%EB%A5%BC%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 스크립트를 파일에 저장합니다.
cat <<EOF | wc -l
$HOME
abc
$(hostname)
EOF
실행하면 다음 오류가 발생합니다.
$ ./a.sh
./a.sh: line 1: cannot create temp file for here-document: No space left on device
내 데비안은 장치에 남은 공간이 없다고 생각합니다(이것은 사실이 아니지만 우리의 맥락을 벗어납니다). 하지만 RAM 공간은 충분합니다. 내 도구(스크립트)도 이 오류로 인해 작동을 거부하므로 실제 "남은 공간 없음" 문제를 해결할 수 없습니다. 실제 문제를 해결하기 위해 도구를 계속 사용할 수 있도록 스크립트가 "heredoc" 처리에 RAM을 사용하도록 하려면 어떻게 해야 합니까?
답변1
$TMPDIR
변수가 RAM 디스크 /tmpfs의 디렉토리를 가리 키도록 합니다 . 이 변수는 bash
(적어도) 쉘이 임시 파일을 생성하는 위치를 결정하기 때문입니다.
답변2
tmpfs
파일 시스템의 마운트 지점 찾기
grep tmpfs /etc/mtab
내 경우에는 줄 중 하나가
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=808468k,nr_inodes=202117,mode=700,uid=1000,gid=1000 0 0
그런 다음 @telcoM이 언급했듯이
export TMPDIR=/run/user/1000
(또는 예를 들어 파일에 사용 wc -l $(hostname) >> /run/user/1000/myexample
)
그건 그렇고, 이것은 $(hostname)
단지 예일 뿐입니까, 아니면 이것을 기대하고 있습니까?