在放弃之前用到哪学到哪就记录到哪,排名不分先后

1、screen 命令

目标:在后台运行Minecraft服务器

bash下测试过,运行Minecraft服务器后按ctrl+z切换任务,多等一会再按fg切换回去,发现Minecraft服务器就停止运行了

镇楼图

解决方法:

可以使用linux内置的screen命令(详细说明参考这里)多窗口运行服务器文件,screen可以让服务器一直保持在后台运行,并且可以随时切换到服务器运行的窗口

启动服务器

root@ThinkPad:~/mcserver# screen ./start.sh

切换窗口

ctrl+z d (先按住ctrl再按z,然后放开ctrl或者不放开都可以,再按d即可)

[detached from 125.tty1.ThinkPad]
root@ThinkPad:~/mcserver#

返回服务器窗口

  • 方法一

如果可以确定只创建了一个新窗口的时候使用-x参数可以直接返回服务器窗口

root@ThinkPad:~/mcserver# screen -x
  • 方法二

如果创建了多个窗口,可以用-ls参数列出所有窗口

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)

root@ThinkPad:~/mcserver# screen -r 125

删除窗口

进入窗口后

  1. 直接结束正在运行的所有程序,即可删除本窗口
  2. 使用快捷键ctrl+a k强行结束正在运行的所有程序,按y确认后即可删除
[screen is terminating]
root@ThinkPad:~/mcserver#

方便记忆

在打开了很多窗口的情况下,窗口id的数字并不能直观的让你对应到你需要的窗口,那么可以给这个窗口起个名字,则使用下面的方法来启动服务器

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来返回窗口,也可以使用窗口名称

root@ThinkPad:~/mcserver# screen -r 239

root@ThinkPad:~/mcserver# screen -r mcserver

2、更换阿里源

  • 备份sources.list源列表文件
root@ThinkPad:~# cp /etc/apt/sources.list /etc/apt/sources.list.bak
  • 打开文件
root@ThinkPad:~# apt edit-sources
  • 清空文件
:%d (vim编辑器普通模式下)
  • 粘贴下列内容
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编辑器
esc (返回vim普通模式)
:wq (保存并退出vim)
  • 使用阿里源更新
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:~#
  • 解决问题

如果出现如下提示

** (appstreamcli:970): CRITICAL **: Error while moving old database out of the way.
AppStream cache update failed.

则使用下面的命令

root@ThinkPad:~# chmod 777 /var/cache/app-info/xapian/default -R

3、使用Samba进行局域网共享

目标:让Windows访问Linux用户根目录下的public文件夹

安装Samba

root@ThinkPad:~# sudo apt update && upgrade -y
root@ThinkPad:~# sudo apt install samba

配置Samba

  • 修改Samba配置文件smb.conf
root@ThinkPad:~# sudo vim /etc/samba/smb.conf
  • 在文件最后增加以下内容,设置/home/pi/public为共享文件夹
[public]
    comment = Public Storage  # 共享文件夹说明
    path = /home/pi/public # 共享文件夹目录
    read only = no # 只读属性
    create mask = 0777 # 创建文件的权限
    directory mask = 0777 # 创建文件夹的权限
    guest ok = yes # guest访问,无需密码
    browseable = yes # 文件夹可见
  • 重启Samba服务,让配置生效
root@ThinkPad:~# sudo samba restart

设置Linux文件夹权限

给Samba配置文件设置过权限后,还需要给共享文件夹设置相同的权限

root@ThinkPad:~# sudo chomod -R 777 /home/pi/public

4、设置脚本自启动服务

目标:添加脚本自启动项,实现开机后自动以服务方式运行python脚本

首先假设脚本已编写完成保存在/home/pi/python/demo.py,并且指定使用python3运行

新建bash脚本文件

先在/etc/init.d下创建脚本文件demo

pi@raspberrypi:~ $ sudo vim /etc/init.d/demo

然后输入脚本内容

#!/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脚本新建完成

pi@raspberrypi:~ $ sudo chmod +x /etc/init.d/demo

添加服务自启动项

pi@raspberrypi:~ $ sudo update-rc.d /etc/init.d/demo defaults

手动启动、停止、重启服务以及查看服务状态

  • 启动服务
pi@raspberrypi:~ $ sudo service demo start
  • 停止服务
pi@raspberrypi:~ $ sudo service demo stop
  • 重启服务
pi@raspberrypi:~ $ sudo service demo restart
  • 查看服务状态
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脚本进程信息
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脚本有问题需要修改,修改之后就需要更新自启动项

pi@raspberrypi:~ $ sudo systemctl daemon-reload

5、调整树莓派输出音量

树莓派系统默认输出音量只有50%,想要调整需要使用alsamixer命令

pi@raspberrypi:~ $ sudo alsamixer

打开AlsaMixer文字图形界面后使用上下箭头可以增加减小系统音量,按esc退出即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注