在放弃之前用到哪学到哪就记录到哪,排名不分先后
1、screen 命令
目标:在后台运行Minecraft服务器
在bash
下测试过,运行Minecraft服务器
后按ctrl+z
切换任务,多等一会再按fg
切换回去,发现Minecraft服务器
就停止运行了
解决方法:
可以使用linux
内置的screen
命令(详细说明参考这里)多窗口运行服务器文件,screen
可以让服务器一直保持在后台运行,并且可以随时切换到服务器运行的窗口
启动服务器
1 |
root@ThinkPad:~/mcserver# screen ./start.sh |
切换窗口
1 2 3 4 |
ctrl+z d (先按住ctrl再按z,然后放开ctrl或者不放开都可以,再按d即可) [detached from 125.tty1.ThinkPad] root@ThinkPad:~/mcserver# |
返回服务器窗口
- 方法一
如果可以确定只创建了一个新窗口的时候使用-x
参数可以直接返回服务器窗口
1 |
root@ThinkPad:~/mcserver# screen -x |
- 方法二
如果创建了多个窗口,可以用-ls
参数列出所有窗口
1 2 3 4 5 6 |
root@ThinkPad:~/mcserver# screen -ls There are screens on: 178.tty1.ThinkPad (01/12/2018 03:21:53 PM) (Detached) 125.tty1.ThinkPad (01/12/2018 10:25:57 AM) (Detached) 2 Sockets in /var/run/screen/S-root. root@ThinkPad:~/mcserver# |
然后使用-r
参数加窗口id,返回服务器窗口(上面的125
即为窗口id)
1 |
root@ThinkPad:~/mcserver# screen -r 125 |
删除窗口
进入窗口后
- 直接结束正在运行的所有程序,即可删除本窗口
- 使用快捷键
ctrl+a k
强行结束正在运行的所有程序,按y
确认后即可删除
1 2 |
[screen is terminating] root@ThinkPad:~/mcserver# |
方便记忆
在打开了很多窗口的情况下,窗口id的数字并不能直观的让你对应到你需要的窗口,那么可以给这个窗口起个名字,则使用下面的方法来启动服务器
1 2 3 4 5 6 7 |
root@ThinkPad:~/mcserver# screen -S mcserver ./start.sh root@ThinkPad:~/mcserver# screen -ls There is a screen on: 239.mcserver (01/12/2018 03:42:09 PM) (Detached) 1 Socket in /var/run/screen/S-root. |
这时候,既可以使用窗口id来返回窗口,也可以使用窗口名称
1 2 3 |
root@ThinkPad:~/mcserver# screen -r 239 root@ThinkPad:~/mcserver# screen -r mcserver |
2、更换阿里源
- 备份
sources.list
源列表文件
1 |
root@ThinkPad:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak |
- 打开文件
1 |
root@ThinkPad:~# apt edit-sources |
- 清空文件
1 |
:%d (vim编辑器普通模式下) |
- 粘贴下列内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties deb http://archive.canonical.com/ubuntu xenial partner deb-src http://archive.canonical.com/ubuntu xenial partner deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse |
- 保存文件并退出vim编辑器
1 2 |
esc (返回vim普通模式) :wq (保存并退出vim) |
- 使用阿里源更新
1 2 3 4 5 6 7 8 9 10 11 12 |
root@ThinkPad:~# apt update Hit:1 http://mirrors.aliyun.com/ubuntu xenial InRelease Hit:2 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease Hit:3 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease Hit:4 http://mirrors.aliyun.com/ubuntu xenial-security InRelease Hit:5 http://archive.ubuntu.com/ubuntu xenial InRelease Hit:6 http://archive.canonical.com/ubuntu xenial InRelease Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date. root@ThinkPad:~# |
- 解决问题
如果出现如下提示
1 2 |
** (appstreamcli:970): CRITICAL **: Error while moving old database out of the way. AppStream cache update failed. |
则使用下面的命令
1 |
root@ThinkPad:~# chmod 777 /var/cache/app-info/xapian/default -R |
3、使用Samba进行局域网共享
目标:让Windows访问Linux用户根目录下的public文件夹
安装Samba
1 2 |
root@ThinkPad:~# sudo apt update && upgrade -y root@ThinkPad:~# sudo apt install samba |
配置Samba
- 修改Samba配置文件smb.conf
1 |
root@ThinkPad:~# sudo vim /etc/samba/smb.conf |
- 在文件最后增加以下内容,设置/home/pi/public为共享文件夹
1 2 3 4 5 6 7 8 |
[public] comment = Public Storage # 共享文件夹说明 path = /home/pi/public # 共享文件夹目录 read only = no # 只读属性 create mask = 0777 # 创建文件的权限 directory mask = 0777 # 创建文件夹的权限 guest ok = yes # guest访问,无需密码 browseable = yes # 文件夹可见 |
- 重启Samba服务,让配置生效
1 |
root@ThinkPad:~# sudo samba restart |
设置Linux文件夹权限
给Samba配置文件设置过权限后,还需要给共享文件夹设置相同的权限
1 |
root@ThinkPad:~# sudo chomod -R 777 /home/pi/public |
4、设置脚本自启动服务
目标:添加脚本自启动项,实现开机后自动以服务方式运行python脚本
首先假设脚本已编写完成保存在/home/pi/python/demo.py
,并且指定使用python3
运行
新建bash脚本文件
先在/etc/init.d
下创建脚本文件demo
1 |
pi@raspberrypi:~ $ sudo vim /etc/init.d/demo |
然后输入脚本内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/bin/bash ### BEGIN INIT INFO # Provides: Walkline # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: A demo program by Python3 ### END INIT INFO start() { echo "Starting Demo service..." /home/pi/python/demo.py & } stop() { echo "Stopping Demo service..." kill $(ps aux | grep -m 1 'python3 /home/pi/python/demo.py' | awk '{ print $2 }') } restart() { stop sleep 1 start } case "$1" in start) start ;; stop) stop ;; status) status demo ;; restart) restart ;; *) echo "Usage: service demo start|stop|status|restart" exit 1 ;; esac exit 0 |
最后赋予文件运行权限,bash脚本新建完成
1 |
pi@raspberrypi:~ $ sudo chmod +x /etc/init.d/demo |
添加服务自启动项
1 |
pi@raspberrypi:~ $ sudo update-rc.d /etc/init.d/demo defaults |
手动启动、停止、重启服务以及查看服务状态
- 启动服务
1 |
pi@raspberrypi:~ $ sudo service demo start |
- 停止服务
1 |
pi@raspberrypi:~ $ sudo service demo stop |
- 重启服务
1 |
pi@raspberrypi:~ $ sudo service demo restart |
- 查看服务状态
1 2 3 4 5 6 7 8 9 10 11 12 13 |
pi@raspberrypi:~ $ service demo status ● demo.service - LSB: A demo program by Python3 Loaded: loaded (/etc/init.d/demo; generated; vendor preset: enabled) Active: active (running) since Sat 2018-02-24 11:51:27 HKT; 2h 4min ago Docs: man:systemd-sysv-generator(8) Process: 363 ExecStart=/etc/init.d/demo start (code=exited, status=0/SUCCESS) CGroup: /system.slice/demo.service └─388 python3 /home/pi/python/demo.py 2月 24 11:51:27 raspberrypi systemd[1]: Starting LSB: A demo program by Python3... 2月 24 11:51:27 raspberrypi demo[363]: Starting Demo service... 2月 24 11:51:27 raspberrypi systemd[1]: Started LSB: A demo program by Python3. |
- 查看python脚本进程信息
1 2 3 |
pi@raspberrypi:~ $ ps aux | grep python3 root 388 0.1 3.7 75188 33668 ? Sl 12:31 0:08 python3 /home/pi/python/demo.py |
修改bash脚本之后
如果服务器自启动项添加完成后发现bash脚本有问题需要修改,修改之后就需要更新自启动项
1 |
pi@raspberrypi:~ $ sudo systemctl daemon-reload |
5、调整树莓派输出音量
树莓派系统默认输出音量只有50%,想要调整需要使用alsamixer
命令
1 |
pi@raspberrypi:~ $ sudo alsamixer |
打开AlsaMixer
文字图形界面后使用上下箭头
可以增加减小系统音量,按esc
退出即可。