跳到主要內容

發表文章

Docker for Windows執行Container錯誤:No hypervisor is present on this system

在Windows 10 安裝完 Docker後,下載一個測試用的映象檔,在產生Container時出現下列的錯誤:

C:\> docker run hello-world bash
docker: Error response from daemon:
container 7d97d673d8f080a7a97da1272710f17f065594c330a7e95828aa7459d664252d
encountered an error during CreateContainer: failure in a Windows system call:
No hypervisor is present on this system. (0xc0351000)
...

其原因是未啟用Hyper-V的綠故,以系統管理員開啟powershell,並輸入下列指令
PS c:\> bcdedit /set hypervisorlaunchtype auto

成功執行上述指令後將電腦重開機再測試一次,這次就沒有問題了,但是啟用Hyper-V後,Oracle VirtualBox就不能用了。

如果同時有Docker與VirtualBox的需求,每次都要切換一次還挺麻煩的。

Linux。讓alias支援輸入參數

alias別名指令是無法支援參數的輸入,例如下列的設定是無效的,會產生錯誤:
alias rm='cd $1'

但是可以利用自訂函數的方式讓alias支援參數,範例程式如下,當使用者輸入cd /bin時,執行函數checkdir並帶入參數/bin:
alias cd='checkdir'
function checkdir() {
    ldir=`pwd`
    if [ $1 == ".." ] && [ $ldir == "/export/home/test" ]
        then
          echo "Limit command"
        else
          #builtin cd /export/home/test/$1
          /export/home/test/bin/ cd /export/home/test/$1
        fi
}

Solaris 10。利用alias限制rm、vi指令的使用

為了讓一般使用者以ssh登入到solaris後,可以限制rm、vi指令的使用,找了不少的文章。

而最簡單的方式是利用alias指令別名的方式來限制指令的使用,當然這個方法是有漏洞的。

修改User家目錄中的.bash_profile或.profile檔案,加入下列指令並將權限改成只有root才能寫入:
alias rm='ls -l'
alias vi='ls -l'

這樣當使用者登入時,系統套用.bash_profile或.profile時就會生效了,之後使用者在輸入rm或vi時就會變成指令ls

不過如果使用者切換目錄到/bin、寫在Script、利用perl程式、指令builtin與command…等使用到bash內建rm、vi指令時,這個方式就會失效。

現代 matrix 1.8 空氣濾清器濾芯

車主手冊有提到有兩個空氣濾芯可以自行拆下清理

引擎的濾芯位置如下圖,把卡榫拆開就可以拿出來清理了。




空調的濾芯在副駕駛座的置物箱後方,置物箱兩側有卡榫,可以往前推開卡榫,就可以把打開置物箱


接者把裝置濾芯的前蓋打開(下方有卡榫),就可以取出濾芯


打開前蓋後,抽出濾芯即可




取出濾芯後,就可以看見鼓風機葉扇


現代 matrix 1.8 拆車前大燈

十年的車子沒有換過大燈,燈光已經昏暗一段時間了,因為試了好幾次才成功把燈泡拆下來,所以將過程記錄下來。

要拆下整個車燈座,共有三顆螺絲與三條電線需要拆除。


就是這顆螺絲需要拆掉才能把燈座拿出來,只拆掉上面兩顆螺絲是拿不出來的。


下圖是主要燈泡的供電線座,用手在兩側往內壓再拔出,兩側有卡榫,防塵罩兩側上有「Push」的字樣,一開始我是直接拔,很緊拔不出來,很怕拔壞了,最後看到字樣後往內壓再拔,試了好幾次終於拔下來了。
其他兩條線也是有卡榫,正確按下後很容易就可以拿下來。



燈泡是H4,12V 60/55W,買一顆一模一樣換上去就可以了。

Solaris 10 啟用 FTP Server Log記錄

因為資訊安全之故,所以想要記錄使用者在FTP上執行的指令,預設值是不會記錄。

啟用Log記錄需要多個步驟,測試多次成功後,記錄下來以免自己忘記。

要啟用Log記錄,必須先啟用FTP Debug模式,再設定System Log,步驟如下:

1、修改in.ftpd的參數,啟用log模式)
# inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a -v -L"

2、修改/etc/ftpd/ftpaccess,加入下列的語法以記錄操作的指令(只記錄帳號test):
log commands test

3、在/etc/syslog.conf加入下面一列,指定log的位置(中間使用TAB做為間隔):
daemon.info /var/log/ftp.log

4、手動產生一個log檔案
# touch the file /var/log/ftp.log

5、執行下列指令,讓System log更新配置
# svcadm refresh system-log

6、讓FTP Server更新配置
# svcadm refresh ftp

完成步驟之後,就可以到 /var/log/ftp.log查看是否有記錄寫入

EBS 清除 FND_LOBS 過大的附件空間

測試的DB是9.2.0.7,而EBS則是11i,因為上傳檔案佔用太多空間,而且都只是使用一次就不再更新,
因此想縮小FND_LOBS的大小

找出 FND_LOBS 的欄位 FILE_DATA 的 Segment Name
select * from dba_lobs where table_name =  'FND_LOBS';

FND_LOBS 與 FILE_DATA 的大小並一樣,上傳的文件資料顯然是放在SYS_LOB0000066009C00004$$
select round(sum(bytes)/1024/1024) Mb from dba_segments where segment_name='FND_LOBS';
select round(sum(bytes)/1024/1024) Mb from dba_segments where segment_name='SYS_LOB0000066009C00004$$';

因為這次想要清除的是上傳的csv檔,所以先找出符合條件的資料來確認。
select * from fnd_lobs where program_name <> 'FND_HELP'
    and (file_name like '%.csv' or file_name like '%.CSV' );

填上這些資料的過期日,在下一個步驟就可以只刪除過期的資料
update fnd_lobs set expiration_date = to_date('20060101','yyyyMMdd')  where file_id in
    ( select file_id from fnd_lobs where program_name <> 'FND_HELP'
     and (file_name like '%.csv' or file_name like '%.CSV' ));

接著以sysadmin登入到EBS,執行Request「Purge Obsolete Generic File Manager Data」,
參數的部份只…