วันอังคาร, กรกฎาคม 13, 2564

Ubuntu มี CPU สูงทุกวันเวลาเดิมๆ


เจอปัญหาเครื่อง Ubuntu ที่ใช้ทุกวันตอนเวลาประมาณ 6 โมงครึ่ง เครื่องที่ใช้จะมี load สูงโดยไม่ได้มีการใช้งานอย่างอื่น พยายามหาสาเหตุว่าเกิดจากอะไร ลองเข้าไปดูใน /var/log/syslog ก็เลยเจอว่า

systemd[1]: Starting Daily apt upgrade and clean activities...

ซึ่งเกิดจาก service Unattended Upgrades ของ Ubuntu ซึ่งทำหน้าที่ update package บนเครื่อง และ restart service ให้โดยอัตโนมัติ ซึ่งอาจทำให้กระทบบริการอื่นได้ ดังนั้นเลยตัดสินใจยกเลิก โดยการลบ package นี้และยกเลิก timer และบริการของ systemd ด้วยคำสั่งนี้

sudo apt-get remove unattended-upgrades

sudo systemctl stop apt-daily.timer

sudo systemctl disable apt-daily.timer

sudo systemctl disable apt-daily.service

sudo systemctl daemon-reload

จบปัญหาไป 


วันพุธ, ตุลาคม 30, 2562

แก้ไขปัญหา "cannot change locale"

เจอปัญหาเมื่อเข้า docker แล้วจะเจอ error "cannot change locale" ซึ่งแม้จะไม่กระทบกับการทำงานแต่ก็ทำให้รำคาญ
# docker exec -it container /bin/bash
bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory
สำหรับการแก้ปัญหา ทำได้โดยใช้คำสั่ง

localedef -i en_US -f UTF-8 en_US.UTF-8

เพื่อคอมไพล์ไฟล์ charmap และไฟล์ input เป็น binary หลังจากรันเสร็จก็ logout login ใหม่ก็ไม่มีปัญหาแล้ว :)

วันอังคาร, พฤษภาคม 16, 2560

ติดตั้ง DELL OpenManage

DELL OpenManage (OSMA) คือ ซอร์ฟแวร์สำหรับจัดการเกี่ยวกับฮาร์ดแวร์ของ DELL เช่นการจัดการ RAID หรือจะใช้ดูข้อมูลเกี่ยวกับฮาร์ดแวร์ โดยจะสามารถดูข้อมูลได้มากกว่า IDRAC

ติดตั้ง DELL repository
wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bash
yum update
ติดตั้ง meta package
yum install srvadmin-all
จัดเตรียมไฟลฺ์ config ที่เกี่ยวข้อง
cd /opt/dell/srvadmin/etc
./autoconf_cim_component.sh
รันบริการ
/opt/dell/srvadmin/sbin/srvadmin-services.sh restart
/opt/dell/srvadmin/sbin/omreport storage controller

Create a new git repository

เมื่อต้องการเก็บไฟล์สคริปต์ไว้บน git repository ส่วนตัวผ่านทาง SSH ทำได้โดยมีขั้นตอนดังนี้

สำหรับฝั่งเซิร์ฟเวอร์

mkdir srcrepo.git
cd srcrepo.git
git init --bare
ถ้าต้องการ clone ผ่าน HTTP/HTTPS จะต้องเปิด hook เพื่อรัน  git update-server-info
cp hooks/post-update.sample hooks/post-update 

สำหรับฝั่งไคลเอนต์

cd srcrepo
git init
 
เพิ่มไฟล์เข้าไปยัง local repository
git remote add
git commit
เพิ่มข้อมูล remote repository ชื่อ origin
git remote add origin user@server:srcrepo.git
push ไฟล์ไปยัง remote  repository ชื่อ origin ไปยัง master branch
git push -u origin master
 

วันเสาร์, มกราคม 10, 2558

เวลามาตรฐานโลก

ถ้าพูดถึงเวลามาตรฐานที่เกี่ยวข้องกับเรามีอยู่ 4 ตัว (ตั้งใจตามดีๆ)


  • UT1 (Universal Time) เวลาตามการหมุนของโลกจริงๆ
  • TAI (International Atomic Time) ตัวย่อมันเป็นภาษาฝรั่งเศส  เป็นเวลาที่ใช้ค่าจาก atomic clock ทั่วโลกมาคำนวณ เมื่อ 1 ม.ค. 1958 มัน(เกือบๆ) เท่ากับ UT1 
  • UTC (Coordinated Universal Time) เป็นเวลา TAI ที่ปรับ leap second แล้ว และเราใช้เวลานี้อ้างอิงในชิวิตประจำวันทุกอย่างทั่วโลก ตอนนี้ช้ากว่า TAI 35 วินาที ถ้า UT1 ต่างกับ TAI >= 0.9 วินาที จะมีการพิจารณาปรับ leap second โดยเริ่มมีการปรับตั้งแต่ 30 มิ.ย. 1972
  • GPS (Global Positioning System) เป็นเวลาที่ใช้ในดาวเทียมและเครื่องรับทั่วโลก เมื่อ 6 ม.ค. 1980 นาฬิกาของ GPS มัน sync กับเวลา UTC (แต่หลังจากนั้นไม่ถูกปรับ leap second) ตอนนีช้ากว่า TAI 19 วินาที (และจะห่างเท่านี้ไปเรื่อยๆ) แต่เร็วกว่า UTC 16 วินาที และในอนาคตจะเปลี่ยนไปเรื่อยๆ ตาม leap second ซึ่ง GPS-UTC offset (เก็บได้สูงสุด 255 ถ้าถึงวันนั้นก็...) โดยมันถูกส่งลงมาจากดาวเทียม ดังนั้นเวลาที่แสดงในเครื่องรับจึงถูกปรับเป็น UTC (แต่การทำงานเบื้องหลังใช้เวลา GPS ทั้งหมด)

วันพฤหัสบดี, สิงหาคม 16, 2555

แก้ปัญหา Apache ไม่สามารถติดต่อ MySQL ได้

ใช้ RHCL 6 อยู่แล้วมันมีโมดูล PHP ที่ต้องไปคิวรีข้อมูลจากฐานข้อมูล แต่ทำยังไงก็ไม่ได้ค่าสักที จึงได้เปิด debug ถึงเห็นว่ามัน connection refused ทั้งที่ลองเชื่อมต่อผ่าน command line ได้ ก็สงสัยว่าเป็นเพราะ SELinux หรือเปล่า ก็ลองดึงค่าทั้งหมดออกมาดู

getsebool -a | grep httpd
เห็นค่า httpd_can_network_connect เป็น off อยู่ อืม... น่าสนๆ ก็เลยเปิดมันซะ ทำได้โดย
setsebool -P httpd_can_network_connect=1
โดยคำสั่ง setsebool จะเป็นการตั้งค่าของ SELinux และ -P จะทำให้ค่านี้ยังคงอยู่เมื่อเริ่มต้นบูตครั้งต่อไปด้วย พอ restart apache ก็ใช้ฐานข้อมูลได้ละ

วันพุธ, สิงหาคม 15, 2555

แก้ปัญหา IRQ ของการ์ด PCMCIA


จดเก็บไว้นานละ แต่ลืม publish -_"

นานมาแล้ว หลังพยายามปล้ำให้การ์ด PCMCIA to PCI ใำห้ทำงานกับชิปเซ็ต SiS 5597 ก็พบวิธีแก้ไข โดยการเพิ่ม option นี้เข้าไปใน boot parameter ของ grub เป็นอันเสร็จพิธี เพื่อ force ให้มันไปใช้ค่า IRQ จาก BIOS แทน

acpi=on acpi=force lapic pci=usepirqmask pci=biosirq

วันพุธ, เมษายน 18, 2555

Perl Library Path

ในกรณีที่ต้องการติดตั้ง Perl library ในโฮมของเราเอง เพราะต้องการทดสอบหรือเพราะว่าไม่มีสิทธิ์ root ก็ตาม หลังจากติดตั้งโดยใช้

perl Makefile.PL PREFIX=PERL_LIB_PATH
make
make test
make install

ซึ่งเมื่อกำหนดให้ไปไว้ที่ไหนไปมันก็จะเอา lib/perl5/site_perl/PERL_VERSION ไปต่อท้าย เวลาจะอ้างก็ต้องใส่ให้ครบ

จริงๆ นอกจาก PREFIX ก็ยังมี INSTALLBIN, INSTALLPRIVLIB, INSTALLSITELIB, INSTALLSCRIPT, INSTALLMAN1DIR และ INSTALLMAN3DIR อยากปรับละเอียดก็ตามสบาย

แล้วสำหรับสคริปท์เดิม ถ้าไม่ทำอะไรเลยเวลารันมันก็จะด่าเรา วิธีแก้ปัญหามี 3 แบบ แล้วแต่จะชอบแบบไหน


  1. เพิ่ม -I เข้าไปที่ shebang
    #!/usr/bin/perl -I PERL_LIB_PATH
  2. เพิ่ม environment variable PERL5LIB
    export 
    PERL5LIB=PERL_LIB_PATH
    หรือ

    setenv 
    PERL5LIB PERL_LIB_PATH
  3. ใช้โมดูล lib
    use lib 
    PERL_LIB_PATH;