本文永久地址:https://my.oschina.net/bysu/blog/1560594php
安裝過程請參考:https://my.oschina.net/bysu/blog/1557801html
樹莓派3安裝archlinux配置web、samba和aria2請參考java
買了個樹莓派3主要是想用來當家用NAS和學習編程。因爲樹莓派性能有限,故此分兩種環境配置。如今先配置通用環境部分。python
交換文件能夠在物理內存不足的時候將部份內存暫存到交換文件中,避免系統因爲內存不足而徹底中止工做。linux
以前咱們一般採用單獨一個分區的方式做爲交換分區,如今更推薦採用交換文件的方式,更便於咱們的管理。web
分配一塊空間用於交換文件,執行:shell
fallocate -l 512M /swapfile (請將512M換成須要的大小,只能以M或G爲單位)
更改權限,執行:交換文件的大小能夠本身決定,推薦4G如下的物理內存,交換文件與物理內存一致,4G以上的物理內存,交換文件4-8G。apache
chmod 600 /swapfile mkswap /swapfile
設置交換文件,執行:編程
啓用交換文件,執行:vim
swapon /swapfile
vim /etc/fstab
最後咱們須要編輯/etc/fstab
爲交換文件設置一個入口,使用vim
打開文件:
注意編輯fstab
文件的時候要格外注意不要修改以前的內容,直接在最後新起一行加入如下內容:
/swapfile none swap defaults 0 0
編輯 /etc/pacman.d/mirrorlist
在文件頭部添加:
清華軟件源:
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo
中科大軟件源:
Server = http://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo
pacman -Syyu
#新增用戶 useradd -d /home/bysu -m bysu #使用root用戶 #設置密碼 passwd bysu #使用root用戶
若是出現使用新增用戶登陸提示該用戶的家目錄拒絕訪問,可使用一下命令試一下。
chown -R bysu:root /home/bysu/
# pacman -S sudo
輸入 vi /etc/sudoers
root ALL=(ALL) ALL #找到這一行,加入下面內容 bysu爲你新增的用戶 bysu ALL=(ALL) NOPASSWD:ALL
或者
去掉 #%wheel ALL=(ALL) ALL 此行註釋,使wheel用戶組能夠臨時使用sudo 提升權限。
這裏插一個配置
在Archlinux裏,常常 使用ls等相關命令,可是Archlinux默認是黑白界面,超級醜,爲此對其修改,使得其結果帶有顏色
修改/etc/profile文件,在文件尾部增長
export LS_OPTIONS="--color=auto -N -T 0" alias ls="ls $LS_OPTIONS" #也能夠經過alias命名命令別名
若是以前systemctl enable dhcpcd.service
systemctl stop dhcpcd.service #停住服務 systemctl disable dhcpcd.service #取消開機啓動 systemctl status dhcpcd.service #查看狀態
# 而後
cd /etc/netctl cp examples/wireless-wpa . # 後面有一個i點,表示當前目錄 A simple WPA encrypted wireless connection vi wireless-wpa # Modify Interface=wlan0 # iw dev查看, 或ip link 或ifconfig Connection=wireless Security=wpa IP=dhcp ESSID='wifi-name' #這個是你須要鏈接WiFi的名字 Key='wifi-passwd' #WiFi密碼
注意,必須先完成以上才能進行一下,不然有一系列問題
netctl enable wireless-wpa netctl start wireless-wpa reboot
要顯示中文,須要生成中文語言包和安裝中文字體
一、生成中文語言包
archlinux使用locale-gen腳本生產相應的語言包,locale-gen路徑 /usr/bin/locale-gen,使用less打開該腳本。
less /usr/bin/locale-gen
找到下面代碼
LOCALEGEN=/etc/locale.gen LOCALES=/usr/share/i18n/locales
上面第一行是語言包的配置路徑;第二行是一些本地化(區域)習慣的配置文件路徑,例如貨幣符號,時間格式,日期格式等等。
按照上面代碼,找到 /etc/locale.gen,打開編輯,選擇相應的語言(取消行首的註釋)。推薦使用UTF-8的那個,兼容性強。
en_us.UTF-8 UTF8 zh_CN.GB18030 GB18030 zh_CN.UTF-8 UTF8
執行命令,生成語言包
locale-gen
設置系統語言爲 zh_CN.UTF-8
,編輯 /etc/locale.conf
,寫入如下內容
LANG="zh_CN.UTF-8"
(以上方法只能解決ssh中文顯示問題,本機直接字符界面啓動,中文仍是方塊)
安裝中文字體,推薦使用文泉驛。(最新系統非必要,2017年11月1日)
pacman -S wqy-zenhei #或者 pacman -S wqy-microhei ttf-dejavu
pacman -S vim
設置時區爲 Shanghai
sudo rm /etc/localtime sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
pacman -S ntfs-3g
先經過命令查看卷標名
[bysu@alarm ~]$ sudo blkid -s LABEL /dev/sda1: LABEL="guest" /dev/sda2: LABEL="share-rw" /dev/sda3: LABEL="lifuli" /dev/sda5: LABEL="bysu"
而後建立掛載點
sudo mkdir -p /media/samba/{guest,share-rw,lifuli,bysu}
掛載點建立好以後,對各個分區進行掛載
[bysu@alarm ~]$ sudo mount /dev/sda1 /media/samba/guest/ [bysu@alarm ~]$ sudo mount /dev/sda2 /media/samba/share-rw/ [bysu@alarm ~]$ sudo mount /dev/sda3 /media/samba/lifuli/ [bysu@alarm ~]$ sudo mount /dev/sda5 /media/samba/bysu/
掛載好以後,設置開機自動掛載
[bysu@alarm ~]$ sudo vi /etc/fstab # 看最後4行就是我添加的內容 # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> /dev/mmcblk0p1 /boot vfat defaults 0 0 /dev/sda1 /media/samba/guest/ ntfs-3g defaults 0 0 /dev/sda2 /media/samba/share-rw/ ntfs-3g defaults 0 0 /dev/sda3 /media/samba/lifuli/ ntfs-3g defaults 0 0 /dev/sda5 /media/samba/bysu/ ntfs-3g defaults 0 0
保存退出後,記得先運行一遍 mount -a,不然報錯的話,系統啓動不了.以前在raspberry上面栽過一次.
此處針對archlinux系統(2017年11月5日此時最新版本)還有一個巨坑。被坑了無數次,系統重裝了N遍。就是自動掛載移動硬盤後,若是這個時候沒有鏈接須要掛載的硬盤,或者若是硬盤須要額外供電,可是沒有開啓電源,那麼系統啓動後,將沒法經過ssh鏈接。想爆粗口了,媽了個雞...
Linux版本信息
[bysu@alarm mdisk.sh]$ cat /proc/version Linux version 4.13.11-1-ARCH (builduser@leming) (gcc version 7.2.0 (GCC)) #1 SMP Thu Nov 2 19:01:07 MDT 2017
爲此,我在/home/bysu/tools/mdisk.sh寫了掛載的腳本
sudo mount /dev/sda1 /media/samba/guest/ sudo mount /dev/sda2 /media/samba/share-rw/ sudo mount /dev/sda3 /media/samba/lifuli/ sudo mount /dev/sda5 /media/samba/bysu/ #卸載umdisk.sh sudo umount /media/samba/guest/ sudo umount /media/samba/share-rw/ sudo umount /media/samba/lifuli/ sudo umount /media/samba/bysu/
經過vi 建立/etc/mdisk.d
#!/bin/bash for loop in 1 2 3 4 5 do sleep 1s done is_sshd=`ps -ef | grep -c ssh` is_mount=`fdisk -l | grep -c sda` if [ $is_sshd -gt 1 ] && [ $is_mount -gt 2 ] then mount /dev/sda1 /media/samba/guest/ mount /dev/sda2 /media/samba/share-rw/ mount /dev/sda3 /media/samba/lifuli/ mount /dev/sda5 /media/samba/bysu/ fi ###############通過優化,以上面這段爲準,本人不懂shell腳本,胡亂拼湊,請勿拍磚########################3 #!/bin/bash is_sshd = `ps -ef | grep -c ssh` is_mount = `fdisk -l | grep -c sda` while true do if [($is_sshd -gt 1) -a ($is_mount -gt 2)] then sudo mount /dev/sda1 /media/samba/guest/ sudo mount /dev/sda2 /media/samba/share-rw/ sudo mount /dev/sda3 /media/samba/lifuli/ sudo mount /dev/sda5 /media/samba/bysu/ break else echo "not connect sh, wait..." > /var/log/mdisk.log sleep 1s fi done 或者 #!/bin/bash is_ssh = `netstat -tl|grep ssh|sed -n '1p'|awk '{print $4}'|awk -F . '{print $4}'|awk -F : '{print $2}'` while true do if [ $(ps -ef | grep -c "ssh") -gt 1 ] if[$is_ssh="ssh"] then sudo mount /dev/sda1 /media/samba/guest/ sudo mount /dev/sda2 /media/samba/share-rw/ sudo mount /dev/sda3 /media/samba/lifuli/ sudo mount /dev/sda5 /media/samba/bysu/
給/etc/mdisk.d加可執行權限
chmod +x /etc/mdisk.d
經過vi,建立/usr/lib/systemd/system/mdisk.service文件
[Unit] Description="/etc/mdisk.d Compatibility" ConditionPathExists=/etc/mdisk.d [Service] Type=forking ExecStart=/etc/mdisk.d TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target #######分割線######## 以上注意相關文件路徑便可
設爲開機啓動
systemctl enable mdisk
啓動服務
systemctl start mdisk
查看啓動狀態
sytemctl status mdisk
java安裝(參考自)
jdk下載:http://download.csdn.net/download/gdzjsubaoya/10103442
在usr下面建立tool文件夾,解壓jdk-8u152-linux-arm64-vfp-hflt.tar.gz到tool文件夾
編輯 /etc/profile 加入下面內容,注意/usr/tool/jdk1.8是和當前解壓的jdk對應的
vi /etc/profile 按住Shift+g,調到文末,而後按小寫英文字母o 添加如下5行內容 JAVA_HOME=/usr/tool/jdk1.8 JRE_HOME=/usr/tool/jdk1.8/jre PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH #而後按Esc鍵,冒號: #接在輸入wq 回車就能夠了 添加後,整個文件的內容以下: # /etc/profile #Set our umask umask 022 # Set our default path PATH="/usr/local/sbin:/usr/local/bin:/usr/bin" export PATH # Load profiles from /etc/profile.d if test -d /etc/profile.d/; then for profile in /etc/profile.d/*.sh; do test -r "$profile" && . "$profile" done unset profile fi # Source global bash config if test "$PS1" && test "$BASH" && test -z ${POSIXLY_CORRECT+x} && test -r /etc/bash.bashrc; then . /etc/bash.bashrc fi # Termcap is outdated, old, and crusty, kill it. unset TERMCAP # Man is much better than us at figuring this out unset MANPATH JAVA_HOME=/usr/tool/jdk1.8 JRE_HOME=/usr/tool/jdk1.8/jre PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib export JAVA_HOME JRE_HOME PATH CLASSPATH
使環境變量當即生效,輸入命令
source /etc/profile
測試
vi Test.java
public class Test{ public static void main(String[] args){ System.out.println("Hello,archlinux"); } }
保存退出。而後輸入javac Test.java進行編譯。輸入java Test 運行。
[root@alarm java]# java Test Hello,archlinux
安裝python3
pacman -S python
安裝python2
pacman -S python2
Python 2 能夠和 Python 3 同時運行,須要指定成python2
纔會運行此版本。
默認的/usr/bin/python
是連接到 python 3 的,因此全部要求使用 python 2 的軟件包應該用 /usr/bin/python2
替換 /usr/bin/python
.
用文本編輯器打開程序或腳本,將第一行:
#!/usr/bin/env python
或
#!/usr/bin/python
中的 python
替換爲 python2
。
另外一種強制使用 python2 而不修改腳本的方法是明確地使用 python2 調用它,即
python2 myScript.py
最後,你可能沒法控制腳本調用哪個,但還有一種方法。它僅在腳本使用 #!/usr/bin/env python
時有效,在用 #!/usr/bin/python
時無效。這種手法依賴於 env
在 PATH 變量中搜索第一個對應的條目。 首先建立一個目錄。
$ mkdir ~/bin
而後添加一個名爲 'python' 的連接指向 python2 以及一個名爲 'python-config' 的連接指向 python2-config 。
$ ln -s /usr/bin/python2 ~/bin/python $ ln -s /usr/bin/python2-config ~/bin/python-config
最後把新的目錄添加到你的 PATH 變量的 最前面。
$ export PATH=~/bin:$PATH
注意到這個修改不是永久的,僅在當前終端會話中有效。 要檢查 env
使用的是哪一個 python 解釋器,使用如下命令:
$ which python
另外一個解決這個問題的方法是經過 Python/Virtualenv (簡體中文) 來僞造一個腳本的運行環境。
安裝pip
#若是須要安裝pip2 sudo pacman -S python2-pip #安裝pip3 sudo pacman -S pip
使用pip進行python庫管理
sudo pip install 包名 #使用pip2 sudo pip2 install 包名 #若是隻安裝pip2,只需pip便可 #查看pip安裝路徑 sudo whereis pip
安裝mutt和msmtp
pacman -S msmtp pacman -S mutt
配置msmtp。在你用戶的根目錄下建立文件 .msmtprc,內容以下:
account default host smtp.163.com port 25 from xxx@163.com auth plain user xxx@163.com password your_password tls off tls_starttls off logfile /var/log/msmtp.log
其中,smtp.163.com是我使用的郵箱的SMTP服務器地址,xxx@163.com是我用於發送郵件的郵箱,your_password是郵箱的受權碼(譬如我在163申請了一串受權碼,就是該受權碼,不少教程說是郵箱密碼,具體請另行測試),你要根據你的狀況修改。
而後配置mutt。在你用戶的根目錄下建立文件 .muttrc,內容以下:
set realname='shumeipai3' #這個在郵箱中顯示爲發件人 set sendmail="/usr/bin/msmtp" set edit_headers=yes set folder=~/mail set mbox=+mbox set spoolfile=+inbox set record="/home/bysu/sent" #set record=+sent,這樣子會報Couldn't lock /mail/sent的錯誤 set postponed=+drafts set mbox_type=Maildir mailboxes +inbox +lovey-dovey +happy-kangaroos
新增一個sent文件
touch /home/bysu/sent
以上的文件都須要注意權限
sudo chmod 600 /home/bysu/{.muttrc,.msmtprc,sent} #這個命令隨手寫的,沒有試過,反正就是這3個文件須要改爲600權限
配置完後,能夠採用以下的命令進行郵件發送功能的驗證,具體以下:其中,realname是發件人的名字,接收到的郵件中會顯示出來。
echo 「helloworld」 | mutt –s 「test mutt sent mail」 xxxx01873@qq.com
-------------如下是安裝配置過程當中的各類報錯-----------------------------------------------
報錯
sions Error sending message, child exited 78 (). Could not send the message.
查看文件權限
[bysu@alarm ~]$ ls -la /home/bysu/.msmtprc -rw-r--r-- 1 bysu root 134 Nov 7 20:37 /home/bysu/.msmtprc
修改權限
sudo chmod 600 /home/bysu/.msmtprc #查看該文件權限,改編爲 [bysu@alarm ~]$ ls -la /home/bysu/.msmtprc -rw------- 1 bysu root 134 Nov 7 20:37 /home/bysu/.msmtprc
繼續測試
echo 「helloworld」 | mutt –s 「test subject」 657501873@qq.com
報錯以下:
msmtp: authentication failed (method PLAIN) msmtp: server message: 530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28 msmtp: could not send mail (account default from /home/bysu/.msmtprc) msmtp: cannot log to /var/log/msmtp.log: cannot open: Permission denied msmtp: log info was: host=smtp.qq.com tls=off auth=on user=657501873@qq.com from=657501873@qq.com recipients=���s@alarm,���test@alarm,subject���@alarm,657501873@qq.com smtpstatus=530 smtpmsg='530 Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28' errormsg='authentication failed (method PLAIN)' exitcode=EX_NOPERM Error sending message, child exited 77 (Insufficient permission.). Could not send the message.
不知道什麼鬼,聽說是服務器拒絕了。改配置,轉163繼續。又報錯,
/home/bysu/mail you account is not a mailbox
緣由是我建立了一個mail 的文件夾,刪掉,經過touch建立一個mail空白文件,付600權限。
繼續測試,繼續報錯。
Couldn't lock /home/bysu/sent
文件存在,權限沒問題。百度了各類解決方法,別人的方法,不適用。搞了一個晚上沒搞好,終於無奈地睡覺去了。早上上班繼續鼓搗,終於看到有一我的的配置是絕對路徑,鬼使神差地改爲絕對路徑,問題得以解決。
----------------------------------------郵件發送設置完畢-----------------------------------------
開機自動發送郵件,不知道怎麼老是啓動不成功。只能退一步,經過用戶登陸後,發送ip。可能有人會想,若是我能登陸了,幹嗎還有發送ip?有道理,我開始一瞬間也是這麼想的。繼續一想,我可讓它開機自動登陸,不就會發送ip郵件了嗎?嗯,但是有一個弊端,就是每鏈接一個ssh上來,都會發送一份關於ip的郵件給你,讓你不得不懷疑本身的智商。姑且算了,沒那麼多精力糾結這個問題,後續再優化。
那就先來一個開機自動登陸用戶(bysu)吧
建立文件
sudo vi /etc/systemd/system/getty@tty1.service.d/override.conf
寫入以下內容,下面的username替換成你須要的登陸名便可。
[Service] ExecStart= ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
自動登陸搞定。那麼就在/etc/profile.d/目錄下建立一個發送ip郵件的腳本sendip.sh
#!/bin/bash # check network availability echo `date` > /home/bysu/profile.sendip while true do TIMEOUT=5 SITE_TO_CHECK="www.163.com" RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1` if [ $RET_CODE==200 ]; then echo "Network OK, will send mail..." break else echo "Network not ready, wait..." sleep 1s fi done # get the IP address of eth0, e.g. "192.168.16.5" ETH0_IP_ADDR=`curl ifconfig.me` # send the Email echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxxx01873@qq.com
獲取本機公網ip
編寫實現以下功能的腳本:
1.獲取公網ip;
curl ifconfig.me
2.聯網後,發送郵件;
#!/bin/bash # check network availability while true do TIMEOUT=5 SITE_TO_CHECK="www.163.com" RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1` if [ $RET_CODE==200 ]; then echo "Network OK, will send mail..." break else echo "Network not ready, wait..." sleep 1s fi done # get the IP address of eth0, e.g. "192.168.16.5" ETH0_IP_ADDR=`curl ifconfig.me` # send the Email echo "Current time: `date '+%F %T'`. Enjoy it" | mutt -s "IP Address of Raspberry Pi: $ETH0_IP_ADDR" xxxx01873@qq.com
3.10分鐘以後,不能聯網,自動重啓電腦。
4.開機後,自動執行以上腳本
========請忽略後面內容=====桌面安裝=====請忽略後面內容=====================
https://wiki.archlinux.org/index.php/Desktop_environment#List_of_desktop_environments
https://wiki.archlinux.org/index.php/Enlightenment_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
http://www.viseator.com/2017/05/19/arch_setup/
項目展現中,ArchLinux系統的字符界面,有點寒磣,安裝圖像界面也是必不可少的。
ArchLinux中安裝X窗口系統比較簡單:
[root@alarmpi ~]# pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils
安裝顯示卡驅動
[root@alarmpi ~]# pacman -S xf86-video-fbdev
這樣你能夠在終端用startx啓動X窗口系統了:
[root@alarmpi ~]# startx
啓動之後發現一片空白,只有一個光標,這是由於尚未安裝桌面系統,咱們能夠安裝openbox 等軟件。
咱們的項目中不須要這些,就不安裝了。
咱們還須要一個圖形界面的軟件環境,如今QT比較流行,就使用它了:
[root@alarmpi ~]# pacman -S qt
有了QT咱們能夠開發項目須要的圖形界面了!
vnc:
https://wiki.archlinux.org/index.php/TigerVNC
package sendEmail; /** * @author 蘇寶伢 E-mail:by.su@qq.com * @version 建立時間: 2017年11月3日 上午10:52:49 */ public class Mail { public static final String ENCODEING = "UTF-8"; private String host = "smtp.163.com"; // 服務器地址 private String sender = "xuda27@163.com"; // 發件人的郵箱 private String receiver = "xuda27@qq.com"; // 收件人的郵箱 private String name = "達達軟件團隊"; // 發件人暱稱 private String username = "xuda27@163.com"; // 帳號 private String password = "客戶端受權碼"; // 客戶端受權碼密碼 private String subject = "[達達軟件]找回您的賬戶密碼"; // 主題 private String message = "你的驗證碼是:8988"; // 信息(支持HTML) public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getSender() { return sender; } public void setSender(String sender) { this.sender = sender; } public String getReceiver() { return receiver; } public void setReceiver(String receiver) { this.receiver = receiver; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
package sendEmail; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.HtmlEmail; /** * @author 蘇寶伢 E-mail:by.su@qq.com * @version 建立時間: 2017年11月3日 上午10:53:44 */ public class MailUtil { public boolean send(Mail mail) { // 發送email HtmlEmail email = new HtmlEmail(); try { // 這裏是SMTP發送服務器的名字:163的以下:"smtp.163.com" email.setHostName(mail.getHost()); // 字符編碼集的設置 email.setCharset(Mail.ENCODEING); // 收件人的郵箱 email.addTo(mail.getReceiver()); // 發送人的郵箱 email.setFrom(mail.getSender(), mail.getName()); // 若是須要認證信息的話,設置認證:用戶名-密碼。分別爲發件人在郵件服務器上的註冊名稱和密碼 email.setAuthentication(mail.getUsername(), mail.getPassword()); // 要發送的郵件主題 email.setSubject(mail.getSubject()); // 要發送的信息,因爲使用了HtmlEmail,能夠在郵件內容中使用HTML標籤 email.setMsg(mail.getMessage()); // 發送 email.send(); return true; } catch (EmailException e) { e.printStackTrace(); return false; } } public static void main(String[] args) { Mail mail = new Mail(); new MailUtil().send(mail); } }
http://download.oracle.com/otn-pub/java/javamail/1.4.7/javamail1_4_7.zip?AuthParam=1509692636_d575cf8989d8b2505af4928cf5fca06d
http://mirror.bit.edu.cn/apache//commons/email/binaries/commons-email-1.5-bin.tar.gz
http://mirror.bit.edu.cn/apache//commons/email/source/commons-email-1.5-src.tar.gz
須要用到的Linux知識:
開機自啓動
如何讓樹莓派開機後自動啓動用戶的程序或者執行腳本?
不一樣的Linux發行版有不一樣的自啓動機制,如RedHat有 /etc/rc.local 文件,在裏面寫上要執行的命令就能夠開機執行。 Arch Linux 採用的是守護進程的機制(daemon)。 在Arch Linux中, 守護進程是用systemd管理的. 用戶用systemctl命令來管理. systemctl讀取.service文件中包含怎麼和何時啓動相關的進程. Service的文件保存在/{etc,usr/lib,run}/systemd/system中. 看看systemd#Using units 有關怎麼使用systemctl管理守護進程的完整信息.
開機時自動啓動
在啓動的時候添加,刪除服務使用 systemctl enable|disable service_name命令
手動啓動
在系統運行時啓動,中止服務, 使用 systemctl start|stop service_name命令.
重啓服務
爲了重啓服務, 使用 systemctl restart service_name命令.
查看運行狀態
查看當前服務的運行狀態, 使用 systemctl status service_name命令.
檢查服務是否開機啓動
檢查服務是否開機啓動,使用 systemctl is-enabled service_name; echo $?命令.
手動添加開機運行的服務
ln -sf /lib/systemd/system/ /etc/systemd/system/
demo:
1 將腳本寫入/etc/rc.local
++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/bash
# this file defines the commands that will be executed at system startup
echo "exect the application /home/pi/hello" > /dev/ttyAMA0
./home/hello
++++++++++++++++++++++++++++++++++++++++
2 添加可執行權限
chmod +x /etc/rc.local
3 建立服務文件 /usr/lib/systemd/system/rc-local.service
++++++++++++++++++
[Unit] Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
+++++++++++++++++++++++++
4 添加軟連接
cd /etc/systemd/system/multi-user.target.wants
ln -s /usr/lib/systemd/system/rc-local.service rc-local.service
5 啓用服務
systemctl enable rc-local.service
6測試效果
重啓
reboot
或者 直接啓動服務
systemctl start rc-local.service
若是系統啓動後,程序確實執行了,則表示自啓動設置成功
http://www.linuxidc.com/Linux/2013-05/84748.htm