Linux从入门到放弃

目录
  1. 1、screen 命令
    1. 启动服务器
    2. 切换窗口
    3. 返回服务器窗口
    4. 删除窗口
    5. 方便记忆
  2. 2、更换阿里源
  3. 3、使用Samba进行局域网共享
    1. 安装Samba
    2. 配置Samba
    3. 设置Linux文件夹权限
  4. 4、设置脚本自启动服务
    1. 新建bash脚本文件
    2. 添加服务自启动项
    3. 手动启动、停止、重启服务以及查看服务状态
    4. 修改bash脚本之后
  5. 5、调整树莓派输出音量

镇楼图

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

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脚本

首先假设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退出即可。


欢迎转载,转载时请注明出处并保持转载后文章内容的完整性