系統更新
一開始先更新系統,然後安裝常用套件,尤其是字型安裝特別重要,否則 Python 顯示中文時會出現例外。
sudo apt update
sudo apt upgrade
sudo apt install net-tools ffmpeg ttf-wqy-zenhei meld qtcreator git-core filezilla rar
Server 版安裝 chrome 瀏覽器
在 Python 中如果要使用 selenium 爬蟲,需先安裝 chrome 覽瀏器,但 Server 並沒有視窗介面,所以安裝一般的 chrome 瀏覽器是無法執行的,因此在 Server 中要安裝特殊的 chrome 版本,安裝指令如下。
sudo su curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add echo "deb http://dl.google.comlinux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list exit sudo apt-get -y update sudo apt-get -y install google-chrome-stable
sudo 免密碼
sudo visudo,加入如下設定
thomas ALL=(ALL) NOPASSWD: ALL
然後按 ctrl+o 儲存,ctrl+x 離開
帳號管理
新增帳號
sudo useradd -m -s /bin/bash thomas : 新增帳號, 新增家目錄, 並指定bash(如此才會有提示符號及歷史記錄) sudo passwd thomas : 設定密碼 sudo adduser thomas sudo : 帳號加入sudo Group, 可以使用sudo指令
刪除帳號
sudo userdel -r thomas : 刪除帳號, -r 是連家目錄一起刪除
加入群組
sudo usermod -a -G www-data thomas
ip設定
輸入如下指令更改設定檔
sudo vim /etc/netplan/50-cloud-init.yaml
sudo netplan apply : 啟動剛剛的設定 ifconfig : 查詢ip ip addr : 查詢ip
掛載share folder
此說明是在VmWare裏啟動Ubuntu Server時, 掛載 share folder的方法
VmWare需先enabled folder
cd /media
sudo mkdir cdrom
sudo mount /dev/cdrom cdrom
cd
mkdir tmp && cd tmp
#將cdrom裏的所有檔案 copy 到 ~/tmp內再執行
cp -r /media/cdrom/. .
tar zxvf VMwareTools-10.3.22-15902021.tar.gz
cd vmware-tools-distrib
#sudo ./vmware-install.pl
然後一直按enter
sudo reboot
重新開機後, 就可以在/mnt/hgfs看到share folder了
變更時區
預設時區為 US,可使用底下比較麻煩的方式變更時區
sudo dpkg-reconfigure tzdata
也可以使用底下更簡易的方法變更
sudo timedatectl set-timezone Asia/Taipei
啟動ntp : network time protocol
啟動系統就與 ntp 伺服器校正時間的指令
sudo apt-get install ntp sudo service ntp restart
系統監控
持續監控系統資源狀況的指令如下
top
dd壓縮
sudo dd if=/dev/sda | gzip > sdadisk.img.gz gzip -dc sdadisk.img.gz | sudo dd of=/dev/sda
清除cache
ubuntu 執行久了,都會佔用 cache。而此 cache 都是位於記譩体中,所以會導致沒重新開機,可用記憶体愈來愈少,此時可以定期執行如下指令,讓cache釋放掉。
sudo -i sync;echo 1 > /proc/sys/vm/drop_caches exit
測試網路速度
安裝 speedtest-cli 套件
sudo apt-get install speedtest-cli
執行 speedtest-cli 的結果
thomas@mahaljsp:~$ speedtest-cli Retrieving speedtest.net configuration... Testing from Chunghwa Telecom (59.126.186.195)... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by Chief Telecom (Changhua) [16.19 km]: 12.48 ms Testing download speed............... Download: 514.51 Mbit/s Testing upload speed................. Upload: 491.25 Mbit/s
嘸蝦米安裝
sudo apt-get install fcitx
sudo apt-get install fcitx-table-boshiamy
sudo apt-get install fcitx-chewing
git 設定
sudo apt-get install git-core
vim ~/.gitconfig, 加入如下設定
[user] name = Thomas email = mahaljsp@gmail.com [color] ui = auto [core] editor = vim
GRUB設定
cd /etc/grub.d/
sudo chmod 444 20_* 30_*
sudo mv 40_custom 06_custom
cat /boot/grub/grub.cfg 將Windows 開機設定copy 到 /etc/grub.d/06_custom
sudo update-grub
GRUB等待問題
sudo vim /etc/default/grub 將 GRUB_TIMEOUT=0 改為 GRUB_TIMEOUT=0.01 然後更新grub設定 :sudo update-grub
Openjdk-7
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
開機自動連線wifi
在網路設定的圖型介面中, 除了設定IP外, 要切換到General, 然後勾選 All user may connect to this internet
如此才能在開機且未登入前, 就連上wifi, 也才能透過wifi, 使用ssh連線進去
使用指令更改IP
有人可能會問, 直接點選右上角的圖示, 就可以改IP了, 為什麼還要自找麻煩使用指令更改IP呢! 因為ubuntu Server版, 是沒有圖型介面的
安裝套件
等一下會使用到 ifupdown 及network-manager二個套件, 所以先進行安裝
sudo apt-get install net-tools ifupdown network-manager
查詢網路介面名稱
使用 ifconfig , 如下所示, 本人的網路介面名稱為ens33. 請注意, 每台電腦都不一樣
更改設定檔
sudo vim /etc/network/interfaces, 然後加入如下 auto ens33 //要更改的網路介面 iface ens33 inet static //改成靜態IP address 192.168.1.10 //指定的IP netmask 255.255.255.0 //子網路遮罩 gateway 192.168.1.1 //匣道 dns-nameservers 168.95.1.1 //DNS
刷新IP
sudo ip addr flush ens33
sudo systemctl restart networking.service
修改設置
本人測試, 1804不用此步驟, 1604以前需操作此步驟
sudo vim /etc/NetworkManager/NetworkManager.conf
將 managed=false改為true, 允許手動設定
然後重啟manager
sudo service network-manager restart
更改系統字型大小
此方法可調整整体畫面的字型大小及比例. 適用於ubuntu系統, 但不能用於 raspbian系統.
sudo apt install gnome–tweaks
再按下Alt-F2, 然後輸入gnome-tweaks, 再選擇字型大小及縮放比例
支援exFat, NTFS
sudo apt-get install exfat-utils exfat-fuse ntfs-3g
開機自動啟動 Web Server
在 /etc/init.d/ 下新增 django 檔案,檔案內容如下
#!/bin/sh /data/server/pyweb/.venv/bin/python3 /data/server/pyweb/manage.py runserver 0.0.0.0:7000
要注意的是,一定要用 ./.venv/bin 裏的 python3,這樣才能啟動虛擬環境的所有設定,如果使用 /usr/bin/python3,會因為系統沒有安裝套件,無法啟動成功。
然後更改django權限
sudo chmod 755 django
最後在 rc3.d 目錄下新增軟連結
cd /etc/rc3.d sudo ln -s ../init.d/django S99django
重新開機後即可自動啟動。
開機自動推播 ffmpeg
使用 /etc/systemd/system 的方式啟動 ffmpeg 推播,請在 /etc/systemd/system 新增 ffmpeg.service,內容如下
[Unit]
Description=ffmpeg1
Requisite=network-online.target
After=network-online.target nss-lookup.target
[Service]
Type=simple
ExecStart=ffmpeg -i "rtsp://帳號:密碼@192.168.1.108/cam/realmonitor?channel=1&subtype=0" -vcodec copy -acodec copy -f flv rtmp://localhost/live/monitor1 -loglevel quiet
Restart=always
[Install]
WantedBy= multi-user.target
然後執行如下指令啟動 systemd
sudo systemctl daemon-reload sudo systemctl enable ffmpeg sudo systemctl start ffmpeg
如果使用 crontab 開機後自動執行,請先執行如下執行
sudo crontab -e
在最後加入如下設定
@reboot bash /data/server/auto/ffmpeg.sh >> /home/thomas/ffmpeg.txt
然後在 /data/server/auto/新增 ffmpeg.sh
#!/bin/bash ffmpeg -i "rtsp://帳號:密碼@xxx.com.tw/cam/realmonitor?channel=1&subtype=0" -vcodec copy -acodec copy -f flv rtmp://xxx.ddns.net/live/monitor1 -loglevel quiet & ffmpeg -i "rtsp://帳號:密碼@xxx.com.tw/cam/realmonitor?channel=2&subtype=0" -vcodec copy -acodec copy -f flv rtmp://xxx.ddns.net/live/monitor2 -loglevel quiet & ffmpeg -i "rtsp://帳號:密碼@xxx.com.tw/cam/realmonitor?channel=3&subtype=0" -vcodec copy -acodec copy -f flv rtmp://xxx.ddns.net/live/monitor3 -loglevel quiet & ffmpeg -i "rtsp://帳號:密碼@xxx.com.tw/cam/realmonitor?channel=4&subtype=0" -vcodec copy -acodec copy -f flv rtmp://xxx.ddns.net/live/monitor4 -loglevel quiet &
最後更變 ffmpeg.sh 權限
sudo chmod 755 ffmpeg.sh
當系統重新開機後,推播時所產生的 .tmp 無法轉成 .mp4,所以需在關機前把所有的 ffmpeg 停止,轉成 .mp4 後才關機。請開啟 /etc/systemd/system 底下新增 stopffmpeg.service,內容如下
[Unit] Description=stop ffmpeg DefaultDependencies=no Before=shutdown.target reboot.target halt.target [Service] Type=oneshot #ps -A|grep ffmpeg|awk '{print $1}'|xargs kill -9 ExecStart=killall ffmpeg [Install] WantedBy=halt.target reboot.target shutdown.target
再執行底下指令啟動 systemd
sudo systemctl daemon-reload sudo systemctl enable stopffmpeg
ffmpeg 在推播時,會持續佔用 buffer/cache,漸漸佔滿系統所有記憶体,造成記憶体不足而中斷 ffmpeg 推播,所以必需定時將 cache 清除,本例預計每小時清一次,請在 /etc/cron.d 下新增 cleancache 檔案,並設定如下。
0 * * * * root sync;echo 1 > /proc/sys/vm/drop_caches
最後重新載入 cron 並執行
sudo service cron reload sudo service cron restart
推播 ffmpeg
使用如下指令推播 webcam 到 srs
Windows 成功 ffmpeg -f dshow -i video="c922 Pro Stream Webcam" -c:v libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -vf scale=1920:1080 -f flv rtmp://mahalbot.ddns.net/live/video4 #Linux 成功 ffmpeg -f video4linux2 -video_size 1920x1080 -framerate 30 -i /dev/video0 -c:v libx264 -preset:v ultrafast -tune:v zerolatency -rtsp_transport tcp -vf scale=1920:1080 -f flv rtmp://mahalbot.ddns.net/live/video4 ffmpeg -thread_queue_size 512 -s 1920x1080 -i /dev/video0 -thread_queue_size 1024 -f alsa -ac 4 -i hw:3,0 -codec:v h264_v4l2m2m -b:v 8096k -af "pan=stereo|FL=0.5*FC+0.5*FL+0.5*BL|FR=0.5*FC+0.5*FR+0.5*BR" -c:a aac -b:a 128k -r 30 -f flv rtmp://mahalbot.ddns.net/live/video4
懶人包
下載 init.sh後, sudo chmod 777 init.sh, 再執行 ./init.sh, 即可全部安裝完成
ubuntu Server 1804 修改ip
修改 /etc/netplan/*.yaml
啟動 : sudo netplan apply
常用指令
grep -ir “abc” : 搜尋目錄下所有檔案的內容是否有abc
find ./|grep “abc.txt” 搜尋目錄下是否有abc.txt檔案
apt-cache search openjdk : 搜尋套件
apt-get install openjdk-7-jdk : 安裝套件
ifconfig 可查看網路狀況
sudo ifconfig eno1 down, 關閉網路
sudo ifconfig eno1 up, 啟動網路