มีตัวแปรสภาพแวดล้อมในการตั้งค่าไดเรกทอรีชั่วคราวบนระบบที่ใช้เดเบียนหรือไม่
ฉันมีแอปเพล็ต java ที่ใช้ตัวแปรสภาพแวดล้อมนั้นและมันเริ่มสับสนเมื่อเรียกแอปเพล็ตเดียวกันสองอินสแตนซ์
มีตัวแปรสภาพแวดล้อมในการตั้งค่าไดเรกทอรีชั่วคราวบนระบบที่ใช้เดเบียนหรือไม่
ฉันมีแอปเพล็ต java ที่ใช้ตัวแปรสภาพแวดล้อมนั้นและมันเริ่มสับสนเมื่อเรียกแอปเพล็ตเดียวกันสองอินสแตนซ์
คำตอบ:
ฉันไม่แน่ใจว่าแอปเพล็ต 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! ฉันจะไม่เพิ่มสิ่งนี้ในบัญชีผู้ใช้รูทหรือใครก็ตามที่เป็นสมาชิกของกลุ่มวงล้อ! ดำเนินการด้วยความระมัดระวังของคุณเอง
tmpwatch
คำสั่งไม่มีอยู่ในเวอร์ชัน BSD (เช่น OSX) ของยูนิกซ์สำหรับทุกคนที่พกพาสะดวก กล่อง CentOS ของฉันมีไว้ให้ด้วย :)
ไฟล์ที่คุณกำลังค้นหาคือ:
/etc/environment
คุณต้องตั้งค่าตัวแปร TEMP เช่น:
TEMP=/home/user/tmp
export TEMP=/home/user/tmp
หากคุณต้องการ/home/user/tmp
ที่จะทำความสะอาดในการบูตเครื่องผมขอแนะนำให้คุณเพิ่มงานให้กับผู้ใช้มีความเป็นส่วนตัว@reboot
crontab
ใน C ฉันจะใช้การเรียกtmpfile ()สำหรับระบบ posix ซึ่งจะหลีกเลี่ยงการชนกัน ดังนั้นฉันจะมองหาการโทร Java ที่คล้ายกันก่อนที่จะพยายามใช้มันด้วยตัวเองหากคุณยังไม่ได้ดำเนินการ
java.io.File.createTempFile
มี ตอนนี้เพิ่ม RNG ที่ปลอดภัยแล้ว
Java ใช้คุณสมบัติระบบjava.io.tmpdir
เพื่อกำหนดค่าไดเรกทอรีชั่วคราว JRE ที่เหมาะสมจะตั้งค่าดังกล่าวให้เป็นค่าที่เหมาะสมโดยยึดตามระบบหากไม่ได้ระบุไว้อย่างชัดเจน
สำหรับฉันนี้ทำงานเมื่อฉันพยายามติดตั้งไฟล์ jar โดยใช้ java
export _JAVA_OPTIONS="-Djava.io.tmpdir=/apps/prod/tmp"
ฉันใช้ Red Hat Linux /apps/prod/tmp
เป็นโฟลเดอร์ใหม่
export _JAVA_OPTIONS="-Djava.io.tmpdir=<local path>"
เช่น:
export _JAVA_OPTIONS="-Djava.io.tmpdir=/home/user/tmp"