2019年1月25日 星期五

Blazor 在 Ubuntu 一執行就當機的解決方法

Blazor 官方有這個 Bug 回報

Update to SDK 2.2.100 throws "An item with the same key has already been added. Key: .wasm" #5666
https://github.com/aspnet/AspNetCore/issues/5666


看起來,官方 .NET Core 3.0 才有機會修正此問題,
只好另求他法,我自己測試過只要把 Ubuntu 的 .NET Core 版本降到 2.1
Microsoft.AspNetCore.App 2.1.7 或 2.1.2 (AWS EC2 預設版本)
就可以正常執行了。

簡單測試 crontab

輸入 crontab -e






輸入 */2 * * * * date >> ~/time.log





















按 CTRL + X 存檔離開


















這個任務每兩分鐘寫入當前的時間到 time.log 檔案

Windows 10 可以在路徑:
C:\Users\「用戶名稱」\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\ubuntu
找到 time.log

2019年1月24日 星期四

WinSCP 使用 sudo su 權限登入,方便修改系統設定。

最近因為專案的關係,需要用 WinSCP 上傳檔案到 ubuntu 上,卡在權限的關係,有些檔案不能上傳,修改了 WinSCP 的一些設定,現在可以取得 sudo su 權限登入,方法如下:

進入「進階站台設定」如上圖,設定「Shell」為「sudo su」,按下「確定」,下次登入後就能取的 sudo su 權限。


(PS.目前發現只能切換 sudo su 路徑與下載檔案,檔案覆蓋還是有權限不足的問題。)

2019年1月22日 星期二

AWS Ubuntu 的 .pem 檔轉成 .ppk 檔

利用 PuTTYgen 工具
點擊 Load
找到 .pem 檔案
再點擊 Save private key
儲存為 .ppk 檔案


Windows 10 利用 WinSCP 傳輸檔案到 AWS Ubuntu

首先需要 .ppk 憑證檔

點擊 進階


點擊 SSH → 身份核對 → 私鑰檔案 → 開啟 .ppk 憑證檔

點擊 確定

輸入 主機名稱 與 使用者名稱、密碼
點擊 登入
輸入密碼



















點擊 同步 就能開始傳輸檔案。

Windows 10 利用 PuTTY 登入 AWS Ubuntu

首先需要 .ppk 憑證檔

點選 Connection → SSH → Auth → Browse → 開啟 .ppk 憑證檔


點選 Session 輸入 Host Name (or IP address)

































可以在 Save Sessions 取的名字,下次直接點選指定 Session 再 點選 Open 就能直接連線。


































輸入 Ubuntu 的帳號與密碼,就能登入 Ubuntu 了。


supervisor 無法啟動任務的問題解決方法

supervisor 啟動任務
輸入 supervisorctl start task

會出現錯誤:
error: , [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 22

加上 sudo 權限就能運行
sudo supervisorctl start task

Windows 10 WSL 下 Ubuntu 下安裝 mysql

輸入密碼後 sudo apt-get update 一下

首先執行 mysql 安裝指令:
sudo apt-get install mysql-server

完成後要啟動 mysql 服務,不然會提示:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

使用 sudo service mysql start 啟動 mysql 服務

透過下列指令設定 mysql root 密碼:
mysql -u root -p

Ubuntu 常用命令

特別注意的是指令有分大小寫,一般都是小寫。
而指令後面帶 --help 是顯示指令的說明,例如:ls --help

sudo apt-get install 軟體名 安裝軟體指令
sudo apt-get remove 軟體名 移除軟體指令
sudo apt-get autoremove 軟體名 移除軟體指令,包含相依軟體
sudo apt-get clean && sudo apt-get autoclean 清理無用的包
sudo apt-get check 檢查是否有損壞的依賴
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安裝的包
sudo apt-get dist-upgrade 昇級系統
sudo apt-get dselect-upgrade 使用 dselect 昇級
sudo apt-get clean 清理所有軟體緩存(即緩存在/var/cache/apt/archives目錄裡的deb包 )

dpkg -s 軟體名 檢查軟體是否安裝

把所有已安裝套件清單給匯出
dpkg --get-selections > installed_packages.txt

dpkg -l  > installed_packages.txt (詳細資料)

sudo su 切換到'root'

service 軟體名 start 讓軟體執行於後台
service 軟體名 status 查詢軟體是否執行於後台

find 路徑 -name 「字符串」 搜尋路徑所在範圍內滿足字符串匹配的檔案和目錄

ls 列出當前目錄檔案(不包括隱藏檔案)
ls -a 列出當前目錄檔案(包括隱藏檔案)
ls -l 列出當前目錄下檔案的詳細資訊

cd .. 回當前目錄的上一級目錄
cd - 回上一次所在的目錄
cd ~ 或 cd 回當前使用者的宿主目錄

mkdir 目錄名 建立一個目錄
rmdir 空目錄名 刪除一個空目錄

rm 檔案名 檔案名 刪除一個檔案或多個檔案
rm -rf 非空目錄名 刪除一個非空目錄下的一切

mv 路徑/檔案 /路徑/檔案 移動相對路徑下的檔案到絕對路徑下
mv 檔案名 路徑/目錄名/. 檔案複製到目錄內,最後要加上個 /.
mv 檔案名 新名稱 在當前目錄下改名

lsb_release -a 查看版本訊息

uname -a 查看內核版本
cat /etc/issue 查看ubuntu版本
lsusb 查看usb設備
sudo ethtool eth0 查看網卡狀態
cat /proc/cpuinfo 查看cpu資訊
lshw 查看當前硬體資訊
sudo fdisk -l 查看磁盤資訊
df -h 查看硬碟剩餘空間
free -m 查看當前的記憶體使用情況
ps -A 查看當前有哪些進程
kill 進程號(就是ps -A中的第一列的數字)或者 killall 進程名( 殺死一個進程)
kill -9 進程號 強制殺死一個進程

在 Ubuntu 上 Blazor 為安裝 .NET Core 2.1.503 (ASP.NET Core 2.1.7)

因為 Blazor 只支援到 ASP.NET Core 2.1.7
(PS.試過 AWS EC2 預設 ASP.NET Core 2.1.2 也能正常執行 2.1.302 版)
所以不抓最新版 2.1.504
而是抓 2.1.503 版
先執行 sudo su 換 root 權限(輸入 cd $HOME 是否在要安裝的目錄上,不是才需要換 root)
並且 sudo apt-get install 的安裝方式,隨著版本推進,會有很多錯誤發生。
所以採用抓取 .NET Core Binaries 2.1.503 版的檔案,還進行更新,網址如下:
https://dotnet.microsoft.com/download/thank-you/dotnet-sdk-2.1.503-linux-x64-binaries

需要其他版本可以在這邊下載適合的 .NET Core Binaries 檔案,網址如下:
https://dotnet.microsoft.com/download/dotnet-core/2.1

在 dotnet-sdk-2.1.503-linux-x64.tar.gz 目錄下執行下面的指令:

先執行 sudo su 換 root 權限
mkdir -p $HOME/dotnet && tar zxf dotnet-sdk-2.1.503-linux-x64.tar.gz -C $HOME/dotnet
export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

執行 dotnet  --info 驗證是否安裝成功
關閉 Session 後
下次登入如果因為 export 沒有 DOTNET_ROOT
(目前有遇到 WSL 關閉後前面的 export 會消失)
而無法執行 dotnet

可以用 vim /etc/profile(先執行 sudo su 換 root 權限)

修改系統檔案都要用 root 權限
先執行 sudo su 換 root 權限
然後
按下 i (-- INSERT --)
在 profile 檔案末端加上

export DOTNET_ROOT=$HOME/dotnet
export PATH=$PATH:$HOME/dotnet

如果一樣無法執行 dotnet
可以用指令測試一下是否能直接執行 dotnet
通常是 /usr/share/dotnet/dotnet
如果可執行
就可以改成絕對路徑
export DOTNET_ROOT=/usr/share/dotnet
export PATH=$PATH:/usr/share/dotnet
重新登入後,試試看是否能正常執行 dotnet

輸入 :wq
離開 vim 編輯

輸入 . /etc/profile 重新載入  profile 檔案
就能在任何目錄上呼叫 dotnet 了

2019年1月16日 星期三

解決:更新 Windows 10 後,Microsoft Store 與 App 都不見了的問題

使用系統管理員的權限打開 PowerShell。
輸入下列指令執行:

Get-AppXPackage *WindowsStore* -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

就可以安裝 Microsoft Store。
點擊一下「下載與更新」, Microsoft Store 會更新為最新版。

點擊「已擁有的全部項目」,可以再安裝之前安裝過的 App。

2019年1月10日 星期四

解決 WMI Provider Host 占用 CPU 問題

最近電腦沒在操作,CPU 風扇一直高速在運轉,查了一下工作管理員,發現 WMI Provider Host 一直占用著 CPU。

檢查一下「事件檢視器」應用程式及服務紀錄檔\Microsoft\Windows\WMI-Activity\Poerational,發現有錯誤一直在洗紀錄。
看了一下 Log 引起錯誤的是 ProcessID 為 3600 的應用程式,馬上反查一下「工作管理員」PID 為 3600 是 Docker.Service。
把 Docker 關閉後就正常了。

2019年1月1日 星期二

C# Tuples 回傳一個以上的回傳值

C# 7 函式內部回傳兩個回傳值:





(bool retIsError, string retMessage) Request(string request, string returnValue)
{
    // Tuples
    bool retIsError_ = true;
    string retMessage_ = "";
 
    // 處理
 
    retIsError_ = false;
    retMessage_ = "成功";
    return (retIsError_, retMessage_);
}


C# 7 函式外部接兩個回傳值:


// 接兩個回傳值
var (retIsError, retMessage) = Request(request, ref returnValue_);
if (retIsError)
{
   return returnValue_;
}



Visual Studio 2017/2019 推薦的擴充功能與更新

參考文章: 覺得 Google 的 Blogger 不太順手?透過 HTML 的 iframe 移花接木 HackMD