วิธีการเปลี่ยนค่าเริ่มต้น / tmp เป็น / home / user / tmp


14

มีตัวแปรสภาพแวดล้อมในการตั้งค่าไดเรกทอรีชั่วคราวบนระบบที่ใช้เดเบียนหรือไม่

ฉันมีแอปเพล็ต java ที่ใช้ตัวแปรสภาพแวดล้อมนั้นและมันเริ่มสับสนเมื่อเรียกแอปเพล็ตเดียวกันสองอินสแตนซ์


คำตอบ:


17

ฉันไม่แน่ใจว่าแอปเพล็ต java จะดูตัวแปรสภาพแวดล้อมก่อนที่จะเริ่มจริงหรือไม่ แต่สิ่งที่คุณสามารถทำได้คือแก้ไข / etc / profile และเพิ่มบรรทัดต่อไปนี้:

if [[ -O /home/$USER/tmp && -d /home/$USER/tmp ]]; then
        TMPDIR=/home/$USER/tmp
else
        # You may wish to remove this line, it is there in case
        # a user has put a file 'tmp' in there directory or a
        rm -rf /home/$USER/tmp 2> /dev/null
        mkdir -p /home/$USER/tmp
        TMPDIR=$(mktemp -d /home/$USER/tmp/XXXX)
fi

TMP=$TMPDIR
TEMP=$TMPDIR

export TMPDIR TMP TEMP

ในการทำให้เป็นไดเรกทอรี tmp จริง (เช่นเดียวกับในไฟล์ที่หายไปเมื่อสิ้นสุดเซสชันคุณจะต้องแก้ไข. bash_logout ของผู้ใช้รวมถึงโครงกระดูก. bash_logout (/etc/skel/.bash_logout) เพื่อรวมสิ่งต่อไปนี้ :

if [ -O $TMPDIR && -d $TMPDIR ]; then
        rm -rf $TMPDIR/*
fi

ส่วนการออกจากระบบเป็นสิ่งที่อันตรายคือตัวแปรไม่ได้รับการตั้งค่าและคุณเข้าสู่ระบบในฐานะ root! ฉันจะไม่เพิ่มสิ่งนี้ในบัญชีผู้ใช้รูทหรือใครก็ตามที่เป็นสมาชิกของกลุ่มวงล้อ! ดำเนินการด้วยความระมัดระวังของคุณเอง


3
ฉันจะไม่ล้างข้อมูลลงใน. bash_logout เลย - จะเกิดอะไรขึ้นหากพวกเขาเปิดสองเซสชันและออกจากระบบหนึ่ง ใช้ tmpwatch :)
MikeyB

นั่นเป็นวิธีการล้างข้อมูลที่ดีกว่ามากขอบคุณที่เพิ่มเข้าไป :)
TrueDuality

หมายเหตุ: tmpwatchคำสั่งไม่มีอยู่ในเวอร์ชัน BSD (เช่น OSX) ของยูนิกซ์สำหรับทุกคนที่พกพาสะดวก กล่อง CentOS ของฉันมีไว้ให้ด้วย :)
Cometsong

8

ไฟล์ที่คุณกำลังค้นหาคือ:

/etc/environment

คุณต้องตั้งค่าตัวแปร TEMP เช่น:

TEMP=/home/user/tmp

2
และแม้แต่export TEMP=/home/user/tmp
Fedir RYKHTIK

@Fedir ที่อยู่ในเปลือกใช่
cstamas

2

หากคุณต้องการ/home/user/tmpที่จะทำความสะอาดในการบูตเครื่องผมขอแนะนำให้คุณเพิ่มงานให้กับผู้ใช้มีความเป็นส่วนตัว@rebootcrontab


1

ใน C ฉันจะใช้การเรียกtmpfile ()สำหรับระบบ posix ซึ่งจะหลีกเลี่ยงการชนกัน ดังนั้นฉันจะมองหาการโทร Java ที่คล้ายกันก่อนที่จะพยายามใช้มันด้วยตัวเองหากคุณยังไม่ได้ดำเนินการ


นี่ถือว่าเขาเป็นผู้พัฒนาแอปพลิเคชัน
TrueDuality

TrueDuality: อ้าความผิดพลาดของฉัน
Kyle Brandt

1
Java java.io.File.createTempFileมี ตอนนี้เพิ่ม RNG ที่ปลอดภัยแล้ว
Tom Hawtin - tackline

1

Java ใช้คุณสมบัติระบบjava.io.tmpdirเพื่อกำหนดค่าไดเรกทอรีชั่วคราว JRE ที่เหมาะสมจะตั้งค่าดังกล่าวให้เป็นค่าที่เหมาะสมโดยยึดตามระบบหากไม่ได้ระบุไว้อย่างชัดเจน


1

สำหรับฉันนี้ทำงานเมื่อฉันพยายามติดตั้งไฟล์ jar โดยใช้ java

export _JAVA_OPTIONS="-Djava.io.tmpdir=/apps/prod/tmp"

ฉันใช้ Red Hat Linux /apps/prod/tmpเป็นโฟลเดอร์ใหม่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.