ubuntu 設定

      在〈ubuntu 設定〉中尚無留言

系統更新

一開始先更新系統,然後安裝常用套件,尤其是字型安裝特別重要,否則 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

ubuntu_server_1

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. 請注意, 每台電腦都不一樣

ip1

更改設定檔

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 gnometweaks
再按下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, 即可全部安裝完成

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, 啟動網路

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *