2020年5月24日星期日

Linux-懒人命令

 

常用命令:

#关机重启
shutdown -r now 立即停止然后重新启动系统
halt 最简单的关机命令
reboot 重新启动【reboot命令重启动系统时是删除所有的进程,而不是平 稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot 命令的场合主要是在单用户模式。】
shutdown -r +1 系统在1分钟后关机并且马上重新启动
shutdown -h now 系统马上关机并且不重新启动

更新系统

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

清理系统垃圾:

sudo apt-get autoclean && sudo apt-get clean && sudo apt-get autoremove && history -c && dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge
(按需要安装 sudo apt-get install aptitude )

#curl命令安装
sudo apt-get install curl

#清理系统日志
sudo find /var/log/ -type f -mtime +1 -exec rm -f {} ;
sudo find /var/log -mtime +1 -name "*.log" -exec rm -rf {} ;

#screen简单使用,创建后台窗口,本次以update为窗口名字演示
screen -S update
#恢复后台窗口
screen -r update
#结束后台窗口
screen -S update -X quit

多个同名的screen会话,可以执行:screen -ls 查看对应会话的session_id,然后使用screen -D -r + session_id 进行恢复。
screen -D -r session_id
退出指定会话 screen -X -S + session id quit
screen -X -S session_id quit

#查看端口号
lsof -i
#查看当前所有已经使用的端口情况
netstat -nultp

#创建计划任务
echo "*/30 * * * * root /opt/sh/freemem.sh" >> /etc/crondtab
#大内存专用,关闭swap分区:
swapoff -a

常用磁盘操作命令:

#查看磁盘分区情况
df -lhT
#使用fdisk -l 查看硬盘
fdisk -l
查询硬盘使用情况
df -h
#格式化磁盘分区为ext4
mkfs -t ext4 /dev/sdb
#挂载硬盘 ,mount 硬盘地址 要挂载的地址
示例:

创建待挂载目录:

sudo mkdir /mnt/data    

挂载:

mount /dev/sdb /mnt/data

挂载示例:
mount /dev/mmcblk2p1 /media/boot

mount /dev/mmcblk2p2 /media/system

#实现系统重启后自动挂载该分区
vi /etc/fstab
#/dev/sdb1(磁盘分区) /data1(挂载目录) ext4(文件格式)defaults 0 0
/dev/mapper/nas--vg-buckups /media/imgs ext4 defaults 1 2
#卸载命令为:
umount /dev/mapper/nas--vg-buckups

#在开机状态下新增磁盘
执行下面的命令刷新SCSI设备
echo "- - -" > /sys/class/scsi_host/host0/scan

硬盘工作状态查看:
对于Debian,Ubuntu系统:
apt-get install smartmontools
比如说我的硬盘挂载在/dev/sda,使用如下命令查看:
smartctl --all /dev/sda1
发现并没有读到我们想要的信息,需要把SMART 打开,使用如下命令:
smartctl -s on --all /dev/sda
可以使用管道直接看到上电使用时间:
smartctl -s on --all /dev/sda | grep Power_On_Hours
结果如下:
9 Power_On_Hours 0x0032 094 094 000 Old_age Always - 2648
最后一个数字2648表示用了2648小时了。
如果你读取用USB连接的移动硬盘时,很可能会出现错误,那么可以使用如下命令:
smartctl -d sat --all /dev/sda

软件包安装卸载操作:

#安装软件包:
apt-get install xxxx
#卸载软件包:
sudo apt-get --purge remove xxxxx
sudo apt autoremove xxxxx

文件及目录操作:
#创建tar.gz压缩文件,如把/xxxx文件夹打包到/home/目录中,文件名为xxxx.tar.gz
tar -zcvf /home/xxxx.tar.gz /xxxx
示例:
tar -zcvf /media/system.tar.gz /media/system
tar -zcvf /media/boot.tar.gz /media/boot

#解压tar.gz文件,如解压xxxx.tar.gz到文件所在目录
tar -zxvf xxxx.tar.gz
解压tar.gz文件,如解压xxxx.tar.gz到/home目录
tar -zxvf xxxx.tar.gz.tar.gz -C /home
示例:
tar -zxvf /media/system.tar.gz -C /media/system
tar -zxvf /media/boot.tar.gz -C /media/boot

#创建zip压缩文件,如把/xxxx文件夹打包到当前目录中
zip –q –r xxxx.zip /home/xxxx

解压zip并重命名(可选)
unzip xxxx.zip -d xxx

#新建目录
sudo mkdir /test

#删除目录或文件
rm -rf /test/
rm -rf test

#移动文件,如移动xxxx 到/usr/local/下
mv -rf xxxx /usr/local/

#复制文件,复制xxxx 到/usr/local/下
cp -r xxxxx /usr/local

#建立软链接,如 软链接 /home/test(真实目录)与 /test (软连接目录)
ln -s /home/test /test

#设置目录用户组
chown www:www -R /home/xxxx

#目录下的所有文件与子目录执行相同的权限变更:
chmod -R 777 /home/xxxx/

#目录下的所有文件与子目录执行相同的所有者变更:
chown -R www:www /home/xxxx

#设置文件属性
用chattr命令防止系统中某个关键文件被修改
chattr -i xxxx

#开启BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl -p

#备份还原指定目录
备份/xxx/cc目录到/media/x.tgz
tar -cvpzf /media/x.tgz xx/cc
示例:
tar -cvpzf /media/boot_backup.tgz /media/boot
tar -cvpzf /media/system_backup.tgz /media/system

还原目录,忽略覆盖提示, 指定目录 -C /
示例:
tar xvpfz /media/boot_backup.tgz -C /
tar xvpfz /media/system_backup.tgz -C /

(Debian buster)初始化操作:

非必要情况不应使用root用户,
彻底删除用户(加上-r的选项,在删除用户的同时一起把这个用户的宿主目录和邮件目录删除)
udo userdel -r ubuntu

#设置root用户密码
sudo passwd root

#新建用户
sudo adduser useradmin

#添加sudo权限
sudo vim /etc/sudoers

#修改示例:
root ALL=(ALL:ALL) ALL
useradmin ALL=(ALL:ALL) ALL

修改用户使其属于root组,命令如下:
usermod -g root useradmin

#添加用户到相应的组
sudo adduser useradmin --in group www-data
将用户useradmin添加到www-datap组中

一、修改更新源
清华源:
https://mirrors.tuna.tsinghua.edu.cn/
Armbian:
https://mirrors.tuna.tsinghua.edu.cn/armbian/

华为源:
https://mirrors.huaweicloud.com/

Ubuntu-18.04-bionic:

ARM库 https://mirrors.huaweicloud.com/ubuntu-ports/
https://mirrors.huaweicloud.com/ubuntu/

/etc/apt/sources.list 修改文件内容如下:

deb https://mirrors.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse
deb-src https://mirrors.huaweicloud.com/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse
deb-src https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-security main restricted universe multiverse
deb https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-backports main restricted universe multiverse
##Not recommended
#deb https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse
#deb-src https://mirrors.huaweicloud.com/ubuntu-ports/ bionic-proposed main restricted universe multiverse

Debian buster:
https://mirrors.huaweicloud.com/debian/
https://mirrors.huaweicloud.com/debian-security/

/etc/apt/sources.list 修改文件内容如下:

deb https://mirrors.huaweicloud.com/debian buster main contrib non-free
deb-src https://mirrors.huaweicloud.com/debian buster main contrib non-free

deb https://mirrors.huaweicloud.com/debian buster-updates main contrib non-free
deb-src https://mirrors.huaweicloud.com/debian buster-updates main contrib non-free

deb https://mirrors.huaweicloud.com/debian-security buster/updates main contrib non-free
deb-src https://mirrors.huaweicloud.com/debian-security buster/updates main contrib non-free

deb [arch=arm64] https://mirrors.huaweicloud.com/debian buster-updates main

/etc/apt/sources.list.d/armbian.list 修改文件内容如下:

deb https://mirrors.tuna.tsinghua.edu.cn/armbian/ buster main buster-utils buster-desktop

二、更新系统及设置中文显示
1、更新系统
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
2、设置语言
dpkg-reconfigure locales
3、安装中文字体
apt-get install ttf-wqy-zenhei

4、设置中文显示
vim /etc/default/locale
LANGUAGE=zh_CN.UTF-8
LANG=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
#LC_ALL=zh_CN.UTF-8
三、其他操作,按需要选择

Debian 10 提供的PHP软件包(按需安装)

apt install php-fpm php-json php-cgi php-cli php-mbstring ethtool python3-dialog acl xfsprogs jfsutils ntfs-3g sdparm postfix bsd-mailx cpufrequtils smartmontools uuid nfs-kernel-server proftpd-basic sshpass samba samba-common-bin rsync avahi-daemon libnss-mdns beep php-bcmath gdisk rrdtool collectd anacron cron-apt quota php-xml quotatool lvm2 watchdog libjson-perl liblocale-po-perl proftpd-mod-vroot libjavascript-minifier-xs-perl xmlstarlet socat rrdcached nginx wpasupplicant btrfs-progs samba-vfs-modules python3-pyudev python3-natsort jq chrony python3-netifaces python3-lxml salt-minion php-yaml python-click python3-click

安装OpenMediaVault
#添加OMV官方源:
OMV的少部分依赖,在Debian的官方源中是没有的,因此必须添加OMV源。
首先,将以下代码添加到/etc/apt/sources.list的末尾:
#Openmediavault official repository
deb http://packages.openmediavault.org/public usul main

可使用国内源:

openmediavault.list
#deb http://packages.openmediavault.org/public usul main
deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul main
deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul-proposed main
deb https://mirrors.bfsu.edu.cn/OpenMediaVault/public/ usul partner

omvextras.list
deb https://mirrors.bfsu.edu.cn/OpenMediaVault/openmediavault-plugin-developers/usul buster main
deb [arch=arm64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian buster stable

接着,安装源公钥:
安装OMV源公钥:
curl -fsSL http://packages.openmediavault.org/public/archive.key | sudo apt-key add -
OMV Extrasorg插件源公钥:
curl -fsSL https://bintray.com/user/downloadSubjectPublicKey?username=openmediavault-plugin-developers | sudo apt-key add -

安装docker-ce源公钥:
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

#安装依赖,Debian 10 不提供的软件包,在OMV源中提供,
apt install monit php-pam libjs-extjs6 wsdd

#正式开始安装openmediavault
apt install openmediavault
安装结束后,iP地址登录管理后台 192.168.X.XXX。
账户/密码 默认为 admin/openmediavault

安装omvextrasorg插件
命令行安装:(仅限于国外主机)
wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

安装失败可本地上传安装omvextrasorg插件
包下载地址:
https://github.com/OpenMediaVault-Plugin-Developers/packages/

wget https://raw.githubusercontent.com/OpenMediaVault-Plugin-Developers/packages/master/openmediavault-omvextrasorg_latest_all5.deb

dpkg -i openmediavault-omvextrasorg_latest_all5.deb

安装PHP

(查看版本 php -v )
更新系统
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Debian下(系统自带的包版本一般比较旧)
sudo apt install php-fpm php-curl php-gd php-intl php-mbstring php-mysql php-imap php-opcache php-sqlite3 php-xml php-xmlrpc php-zip php-apcu php-redis php-imagick -y

sudo apt install php7.3-fpm php7.3-curl php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-imap php7.3-opcache php7.3-sqlite3 php7.3-xml php7.3-xmlrpc php7.3-zip php7.3-apcu php7.3-redis php7.3-imagick -y

安装完成后重启
systemctl restart php7.3-fpm

Ubuntu18.04下,安装php7.3需添加第三方PHP源,自带软件包较旧
sudo sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

#重启PHP服务
systemctl restart php-fpm

#安装PHP7.4
安装add-apt-repository后增加PHP PPA存储库
apt -y install lsb-release apt-transport-https ca-certificates
安装PHP PPA存储库
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
#更新系统
sudo apt-get update

#开始安装
sudo apt install php7.4-fpm

重启PHP7.4 & php -v
systemctl restart php7.4-fpm

#安装exfat支持
sudo apt install exfat-fuse exfat-utils

安装mariadb数据库

apt install mariadb-server
启动mariadb数据库
sudo systemctl status mariadb
初始设置
mysql_secure_installation

1、Enter current password for root (enter for none):(设置数据库root密码)
2、Change the root password? [Y/n] n
3、Remove anonymous users? [Y/n] y
4、Disallow root login remotely? [Y/n] n
5、Remove test database and access to it? [Y/n] y
6、Reload privilege tables now? [Y/n] y

命令行登录(输入数据库root密码登录)
mysql -uroot -p

输入密码成功登录后,建立一个新的用户,并给予最大的权限:
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON . TO '用户名'@'%' WITH GRANT OPTION;

安装nginx

apt install nginx
重新加载配置并重启
nginx -s reload
/etc/init.d/nginx restart

需要停止或者重启nginx的管理命令如下:
/etc/init.d/nginx restart
/etc/init.d/nginx start
/etc/init.d/nginx stop
/etc/init.d/nginx reload

nginx.pid" failed 修复:
/usr/sbin/nginx -c /etc/nginx/nginx.conf
#安装redis-server
sudo apt install redis-server

FRP客户端

程序路径/usr/local/app/frpc

程序路径/usr/local/app/frpd
#更新配置
systemctl daemon-reload
#启动服务
systemctl enable frpc.service
systemctl enable frpd.service
#设置开机启动
systemctl start frpc.service
systemctl start frpd.service
#查看状态
systemctl status frpc.service
systemctl status frpd.service
#重启服务
systemctl restart frpc.service
systemctl restart frpd.service
删除启动项
systemctl disable frpc.service
systemctl disable frpd.service

安装Cloudreve

#更新配置
systemctl daemon-reload
#启动服务
systemctl start cloudreve
#设置开机启动
systemctl enable cloudrev
#停止服务
systemctl stop cloudreve
#重启服务
systemctl restart cloudreve
#查看状态
systemctl status cloudreve
删除启动项
systemctl disable cloudreve.service

安装DDNS

sudo apt-get install python
cd /usr/local/app/ddns
./task.sh

安装Nextcloud

1、从nextcloud 获取程序并上传程序至站点指定目录
2、解压程序,cd /var/www ,unzip nextcloud-19.0.0.zip
3、设置目录权限 chmod -R 777 /var/www/nextcloud
4、安装必要依赖 sudo apt install php-zip php-gd php-curl PHP7.3-intl PHP7.3-gmp php-memcached php-apcu php-bcmath
5、配置PHP.ini文件,修改上传限制、执行超时限制、内存限制等
6、进入引导页面进行初始化
7、打开/etc/php/7.3/fpm/php-fpm.conf,在其尾部添加一行
env[PATH] = /usr/local/bin:/usr/bin:/bin:/usr/local/php/bin
8、创建定时任务
www-data为网页服务器的用户
执行,选择编辑器
crontab -u www-data -e
输入下列内容并保存
*/5 * * * * php -f /var/www/nextcloud/cron.php
执行,查看定时任务列表
crontab -u www-data -l
回显 含以上写入内容即为成功
*/5 * * * * php -f /var/www/nextcloud/cron.php
9、手动给nextcloud的配置文件中添加设置,打开/config.php指定使用Redis作为缓存,添加(推荐选项)

'memcache.distributed' => '\OC\Memcache\Redis',
'redis' => [
'host' => '127.0.0.1',
'port' => 6379,
],

启用APCu本地缓存(推荐选项),将此行添加到config.php文件中:
'memcache.local' => '\OC\Memcache\APCu',

启用Memcached缓存(可选项)
手动给nextcloud的配置文件中添加设置,打开/config.php,手动给nextcloud的配置文件中
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcached_servers' => array(
array('localhost', 11211),
),

10、启用外部储存插件
11、加载NTFS格式硬盘,手动给nextcloud的配置文件中添加设置,打开/config.php,手动给nextcloud的配置文件中添加设置(关闭数据目录的权限检查)
'check_data_directory_permissions' => false,

就可以关闭数据目录的权限检查,错误随即消失
#armbian关闭swap分区方法
vim /etc/default/armbian-zram-config
#ENABLED=true
ENABLED=false

安装docker

快速安装
apt install docker.io
apt install docker-compose

常规安装
先添加源及公钥后更新索引
apt install docker-ce
apt install docker-ce-cli
apt install docker-compose

设置硬盘休眠

修改/etc/hdparm.conf
文件内容末尾加上下面的配置 (请修改为自己的目录)

/dev/disk/by-id/usb-ST1000LM_024_0000000000000033-0:0

然后执行
sudo /usr/lib/pm-utils/power.d/95hdparm-apm resume
重启后生效

在5分没使用硬盘的情况下, 硬盘会自动休眠

ps :
/dev/disk/by-id/* 自己去看下这个目录下自己的文件名
spindown_time 60 计算参考
0 = disabled
1..240 = multiples of 5 seconds (5 seconds to 20 minutes)
241..251 = 1..11 x 30 mins
252 = 21 mins
253 = vendor defined (8..12 hours)
254 = reserved
255 = 21 mins + 15 secs
write_cache 写缓存自己决定是否要开启,可以使用off

方法二
在日常使用中机械盘的使用频率是非常低的,尤其是安装了很多块硬盘的Nas,本文介绍如何自动关闭机械盘节电。
我们使用的命令是hdparm。详细说明可在命令行中执行

man hdparm
-S参数可以设置磁盘进入待命状态 (Standby/Spindown)的超时时间。该值用以确定磁盘在处于无活动状态多长时间后关闭旋转电机。

-B为磁盘的电源管理参数。它的取值用于平衡磁盘的性能与电耗。当取值大于127(除255)时磁盘将不会断电。取值255意味着关闭电源管理功能。为了让磁盘能自动断电,我们将该值127.

1.设置硬盘省电策略

无访问一定时间后自动停转待机(/dev/sda为硬盘地址)

hdparm -S 60 /dev/sda
这里-S取值设定逻辑比较奇怪,本处列出部分常见取值供选:
30 = 2 min 30 sec
60 = 5 minutes
120 = 10 minutes
180 = 15 minutes
241 = 30 minutes
242 = 1 hour
243 = 1.5 hours
244 = 2 hours

2.使硬盘立马进入省电状态

hdparm -Y /dev/sda
策略可以是编辑定时任务列表

sudo vi /etc/crontab

加入如下一行(10分钟一次使硬盘进入休眠状态)

*/10 * * * * root hdparm -Y /dev/sda
3.检查硬盘当前省电状态

sudo hdparm -C /dev/sda

设置缓存优先级

优先物理内存使用
vim /etc/sysctl.conf
-添加:
vm.swappiness=10
-到末行,需要重启生效。

#boot内核更新错误处理
sudo apt autoremove linux-image-aml-g12
sudo apt-get install linux-image-aml-g12

#安装armbian到EMMC
写入:./install.sh
完成后断电拔下SD卡,插入电源重启。

#系统备份还原
备份:

tar -P -cvpzf /media/backup.tgz --exclude=/media/backup.tgz --exclude=/media/* --exclude=/boot --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/dev --exclude=/tmp --exclude=/var/log/* --exclude=/root/.bash_history /

还原:

恢复前清理准备
cd /
rm -rf /tmp/root/*
rm -rf /usr/*
rm -rf /home/useradmin/*
rm -rf /var/*
rm -rf /sbin/*

正式还原命令
tar -P -xpzvf /media/backup.tgz -C /

新建备份目录示例
sudo mkdir /run//backup
删除备份文件示例
rm /run/backup.tgz
移动文件示例
mv /home/backup.tgz /run/backup/

最后讲一下第三条命令的注意事项,(总结他人输入失误的命令提取而来)
1、tar的用法:tar -参数 创建的文档 被压缩的目录或文档
由于被压缩的是根目录,很容易忽略掉 ”/“
2、exclude前面是两个连字符”--“,不是破折号也不是下划线,
3、exclude后面是”=“ ,用”-“符号又是其他意思
4、exclude后面接的是文档或者目录,如果要表示某个目录下面的全部文件,就用“"符号,例子:--exclude=/home/ 如果写成--exclude=/home/ 就错了
5、最后,请在enter之前检查一遍命令是否有输入失误。

恢复命令结束时,你的工作还没完成,别忘了重新创建那些在备份时被排除在外的目录:
mkdir dev lost+found media mnt proc run sys tmp

mkdir proc && mkdir lost+found && mkdir mnt && mkdir sys && mkdir media && mkdir dev && mkdir /tmp && mkdir /var/log/

#自动挂载USB设备

记录使用udev自动挂载SD卡和U盘的方法。方法适用于各种linux带udev的系统。
usb挂载,sd卡挂载,udev使用,debian udev自动挂载,ubuntu自动挂载,嵌入式自动挂载,arm自动挂载,开发板自动挂载

一、添加udev规则

确认你系统有udev,然后,创建自动挂载的udev规则文件,具体规则参照上面的链接,位置: /etc/udev/rules.d/

cd /etc/udev/rules.d/
sudo touch 11-add-usb.rules
sudo touch 11-add-remove.rules

上面的规则,一个是自动挂着的规则,里面包含自动挂载usb和自动挂载sd卡的规则。命名方式要注意:

我们只需要创建了rules文件就好了,只要命名规则对了,udev会自动生效。
udev 是按照规则文件的字母顺序来解析各规则文件的,并根据匹配上的规则创建对应的设备文件或链接。所以,解析的顺序很重要,为了使自定义的规则生效,可以把规则写入较前的规则文件中,例如20-names.rules

二、SD卡自动挂载 在上述的规则文件11-add-usb.rules中,加入如下内容,就是如何挂着的方法,有严格的规则,详细 百度/必应/谷歌/ 一下“udev规则”,这里不叙述。
ACTION=="add",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/mount-sd.sh %k", LABEL="farsight"


这个意思是如果发现sd卡插入,那么运行/etc/mount-sd.sh这个脚本!这个脚本后面还带一个参数 %K,这个%k就是linux内核发现的新的设备名字。

三、U盘自动挂载

接着, 还是11-add-usb.rules, 继续在下一行,或者隔一行,加入如下内容:
ACTION=="add",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/mount-usb.sh %k",LABEL="farsight"

这个意思是如果发现USB卡插入,那么运行/etc/mount-usb.sh这个脚本!这个脚本后面还带一个参数 %K,这个%k就是linux内核发现的新的设备名字。

最后,整个/etc/udev/rules/11-add-usb.rules:
ACTION=="add",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/mount-sd.sh %k", LABEL="farsight"

ACTION=="add",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/mount-usb.sh %k",LABEL="farsight"
 四、卸载SD卡 在上述的规则文件11-add-remove.rules(这个是移除u盘和sd卡的规则,上面是加载的规则,不一样)中,加入如下内容:
ACTION=="remove",GOTO="farsight", SUBSYSTEM=="block",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/etc/umount-sd.sh", LABEL="farsight"
五、卸载U盘 接着上一步,在同一个文件里面,隔行,继续加入如下内容:
ACTION=="remove",GOTO="farsight",SUBSYSTEM=="block",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/umount-usb.sh",LABEL="farsight"
最后,整个/etc/udev/rules/11-add-remove.rules文件如下:
CTION=="remove",GOTO="farsight", SUBSYSTEM=="block",GOTO="farsight", KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/etc/umount-sd.sh", LABEL="farsight"

ACTION=="remove",GOTO="farsight",SUBSYSTEM=="block",GOTO="farsight",KERNEL=="sd[a-z][0-9]",RUN+="/etc/umount-usb.sh",LABEL="farsight"


六、创建挂载的目录 mkdir /mnt/sd -p
mkdir /mnt/usb -p
上面两个目录的路径和命名,要根据你自己的需要求来创建。我这里是随便写的。

七、添加脚本 ---->创建脚本 /etc/mount-sd.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于挂载sd卡的脚本,创建后,填入如下内容并保存: #!/bin/sh /bin/mount -t vfat /dev/$1 /mnt/sd sync 保存后,记得添加可执行权限: chmod +x /etc/mount-sd.sh ----> 创建脚本 /etc/umount-sd.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于umount sd卡的脚本,创建后,填入如下内容并保存: #!/bin/sh sync umount /mnt/sd 保存后,记得添加可执行权限: chmod +x /etc/umount-sd.sh

----> 创建脚本 /etc/mount-usb.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于挂载usb的脚本,创建后,填入如下内容并保存: #!/bin/sh mount -t vfat /dev/$1 /mnt/usb sync 为此文件添加可执行权限,切记。 chmod +x /etc/mount-usb.sh

----> 创建脚本 /etc/umount-usb.sh, 这个脚本对应上面的udev规则里面的脚本,是一个专门用于umount usb的脚本,创建后,填入如下内容并保存: #!/bin/sh sync umount /mnt/usb 为此文件添加可执行权限,切记。 chmod +x /etc/umount-usb.sh

八、完成,重启设备/电脑, 插入usb或者sd卡,对应的usb和sd卡,会自动挂载在/mnt/usb 和 /mnt/sd中!

armbian自动挂载usb设备脚本

vim /etc/udev/rules.d/10-usb-mount.rules

KERNEL!="sd*", GOTO="exit"
SUBSYSTEM!="block", GOTO="exit"

IMPORT{builtin}="blkid"
ENV{ID_FS_LABEL}=="EFI|BOOT|Recovery|RECOVERY|SETTINGS|boot|root0|share0", GOTO="exit"

ENV{DEVTYPE}!="partition", GOTO="exit"
ENV{ID_FS_USAGE}!="filesystem", GOTO="exit"

ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"
ENV{ID_FS_LABEL}=="", ENV{dir_name}="USB-%k"
ACTION=="add", PROGRAM="/bin/sh -c '/bin/grep -E ^/dev/%k\  /proc/mounts || true'", RESULT=="", RUN+="/usr/bin/systemd-mount --no-block --automount=yes --collect /dev/%k /mnt/%E{dir_name}"
ACTION=="remove", ENV{dir_name}!="", RUN+="/usr/bin/systemd-mount --umount /mnt/%E{dir_name}", RUN+="/bin/rmdir /mnt/%E{dir_name}"
GOTO="exit"
LABEL="exit"
执行命令重新加载配置   udevadm control --reload