本文永久地址: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