1.树莓派3安装archlinux通用配置部分

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

 

1.更换源;

编辑 /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

2.新增用户,安装sudo

新增用户及其相应的家目录

#新增用户
useradd -d /home/bysu -m bysu   #使用root用户

#设置密码
passwd bysu         #使用root用户

若是出现使用新增用户登陆提示该用户的家目录拒绝访问,可使用一下命令试一下。

chown -R bysu:root /home/bysu/

 

安装sudo:

# 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命名命令别名

3.设置WiFi

若是以前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

4.设置支持中文显示(该节点设置貌似还有点问题,中文显示为Unicode编码)

要显示中文,须要生成中文语言包和安装中文字体

一、生成中文语言包

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

5.安装vim

pacman -S vim

6.更改时区

设置时区为 Shanghai

sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

7.支持NTFS格式的读写权限

pacman -S ntfs-3g

8.设置自动挂载

先经过命令查看卷标名

[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/

把它写成开机自启动脚本(参考自III)。

经过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

9..安装java、python

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

安装python

安装python3

pacman -S python

安装python2

pacman -S python2

默认是python3.若是须要更改默认为python2.参考我从wiki中摘录过来的。

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

10.ip地址改变后,自动发送邮件

安装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/

安装X窗口系统,QT编程环境(九)


项目展现中,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知识:

开机自启动

树莓派开机自启动程序(Arch 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

相关文章
相关标签/搜索