基础操作
树莓派无屏幕连接
ssh连接ip
sudo raspi-config开启vnc服务
登陆提示无屏幕
ssh连接进入设置,改变分辨率大小,重启
vnc连接,显示不完全1 2 3 4 5 cd ~/.config/lxpanel/LXDE-pi/panels curl -O https://gist.githubusercontent.com/ColinNg/9ed317308a9a0f75824f828e75c8469c/raw/a72176416201a0e6ebbce30608e6f7eceb379e0e/panel sudo reboot
修正时间
开启ssh
boot目录下创建ssh文件,默认ssh账户pi密码为raspberry
修改pi用户的ssh密码:sudo passwd pi
配置Wifi连接及网络 使用nano修改/etc/wpa_supplicant/wpa_supplicant.conf
文件,仿照原配置继续写
1 2 3 4 sudo iwlist wlan0 scan --扫描周围wifi sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
例如配置,其中priority=5
值越高等级越高,优先连接权更高
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ ssid="Three-Body" psk="qwertyuiop" priority=5 } network={ ssid="360 N7 Lite" psk="zxcvbnml" priority=2 } network={ ssid="SXYYC" key_mgmt=NONE priority=1 }
首次烧录镜像的话,在boot目录下创建wpa_supplicant.conf
即可
定时执行任务 1 2 crontab -e 编辑命令,首次选择nano crontab -l 查看任务
取消了秒
P.
1 */1 * * * * python3 /home/pi/nrhs_pi/pi_py/ip.py 每分钟执行一次py脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sudo apt-get install nginx php7.4-fpm php7.4-cli php7.4-curl php7.4-gd php7.4-cgi # 由于教程过时,在2022年应该使用php7.4 # 若提示无法找到包,请换成7.3 location / { index index.html index.htm index.php default.html default.htm default.php; } location ~\.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
重启nginx:sudo service nginx restart
git克隆:
1 2 3 4 5 sudo apt-get install git cd /var/www/html sudo git clone https://github.com/nxez/pi-dashboard.git
重新安装chromium浏览器 1 2 3 4 5 sudo apt update/sudo apt full-upgrade 升级与完整包升级 sudo apt install chromium-browser -y 安装chromium-browser chromium-browser 启动
ftp服务安装 1 2 3 4 5 sudo apt-get install vsftpd 安装vstfpd sudo service vsftpd start 启动服务 sudo nano /etc/vsftpd.conf 编辑vsftdp的配置文件
编辑:
1 2 3 4 5 6 7 anonymous_enable=NO 不允许匿名访问 local_enable=YES 设定本地用户可以访问。 write_enable=YES 设定可以进行写操作 local_umask=022 设定上传后文件的权限掩码。
重启:
1 sudo service vsftpd restart
上传文件名包含中文时可能会乱码,在linux下无法正常显示。这是因为windows文件名默认GBK编码,而linux是UTF—8。
1 2 3 sudo apt-get install convmv -y --安装convmv文件转码工具 convmv -f gbk -t utf-8 -r --notest /home/要操作的文件或者文件夹
转码完成即解决
文件夹及文件操作
移动复制删除文件夹
1 2 3 4 5 6 7 8 9 sudo mv FMmp3 /home/pi/nrhs_pi/pi_web/ 将当前目录下的FMmp3移动到指定目录 sudo mv /usr/xu/* . 将/usr/xu中的所有文件移到当前目录(.表示当前) sudo cp dir1/a.doc dir2 表示将dir1下的a.doc文件复制到dir2目录下 sudo rm -rf mp3 删除了当前目录下mp3文件夹,可跟目录。 sudo rm -f /var/log/httpd/access.log 强制删除/var/log/httpd/access.log文件
文件及文件夹更名:
1 sudo mv FMmp3 mp3 将FMmp3改名为mp3
权限设置
修改密码
1 2 3 4 sudo passwd pi #修改 pi 密码 sudo passwd root #设置 root 密码 su root #切换到 root 用户 su pi #切换到 pi 用户
find寻找
1 find / -iname "sshd_config" # 寻找文件夹
调整时区
1 2 3 4 5 6 7 8 9 sudo dpkg-reconfigure tzdata 打开设置 选择Asia亚洲shanghai时间 sudo ntpd -s -d 矫正时间 //sudo date --s="2017-07-25 10:43:00" 强制设置时间 date 显示时间
更换源 编辑/etc/apt/sources.list
文件
1 2 3 4 5 6 sudo nano /etc/apt/sources.list 注释原来源,换为清华大学源 deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
编辑/etc/apt/sources.list.d/raspi.list
文件
1 2 3 4 5 sudo nano /etc/apt/sources.list.d/raspi.list 注释原来源,换为清华大学源 deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
更新软件库及依赖
1 2 3 4 sudo apt-get update --更新软件源 apt list --upgradable --更新了哪些内容 sudo apt upgrade --升级所有软件,时间漫长,慎重
1 2 3 4 5 sudo raspi-config # 打开设置 boot options # boot设置 # 选择console Autologin Text console
进阶应用 由于树莓派内存较小,mysql
有点大,我的学习资料都跑不起来了。
安装SQLite 一般来讲,Linux一般已内置SQLite 示例教程
检查”SQLite3
“
未安装
1 2 3 sudo apt-get update sudo apt install sqlite3
启动
命令行下SQLite3会出现版本号和sql命令行
创建数据库 1 2 3 4 5 6 7 8 9 sqlite3 SQLite-name.db 在外命令行下直接创建 sqlite>.open SQLite-name.db SQLite命令行下创建,标识为(sqlite>) //.open会检查数据库时候存在,存在就打开,不存在就创建 sqlite>.databases 查看数据库列表 sqlite>.quit 退出数据库操作 //CTRL+D一样
请参阅PHP_SQLite菜鸟教程 ,PHP菜鸟教程
PHP中连接数据库并遍历数据按html模板输出
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 <?php class MyDB extends SQLite3 { function __construct ( ) { $this ->open ('../pi_sql_web.db' ); } } $db = new MyDB (); if (!$db ) { echo $db ->lastErrorMsg (); } else { } $sql = <<<EOF SELECT * from desk_project; EOF ; $ret = $db ->query ($sql ); while ($row = $ret ->fetchArray (SQLITE3_ASSOC)) { echo '<div class="shortcut" onclick="Win10.openUrl(\'' .$row ['url' ].'\', \'<img class=\\\'icon\\\' src=\\\'' .$row ['ico' ].'\\\'/>终端操作\')">' ; echo '<img class="icon" src="' .$row ['ico' ].'" />' ; echo '<div class="title">' .$row ['name' ].'</div>' ; echo '</div>' ; } ?>
PHP执行一段SQL并拿到值
1 2 3 4 5 6 7 <?php $sql = "SELECT * FROM pi_cyan ORDER BY RANDOM() limit 1;" ; $ret = $db ->query ($sql ); while ($row = $ret ->fetchArray (SQLITE3_ASSOC)) { echo '<div class="title">' .$row ['cyan' ].' __@' .$row ['name' ].'</div>' ; } ?>
Pytho调用
读,查数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import sqlite3conn = sqlite3.connect('----||test.db' ) c = conn.cursor() print ("数据库打开成功" )cursor = c.execute("SELECT id, name, address, salary from COMPANY" ) for row in cursor: print "ID = " , row[0 ] print "NAME = " , row[1 ] print "ADDRESS = " , row[2 ] print "SALARY = " , row[3 ], "\n" print ("数据操作成功" )conn.close()
python一键换源
1 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
树莓派进程守护
树莓派进程守护systemd
在/usr/lib/systemd/system/
目录下新建service
文件
1 sudo nano /usr/lib/systemd/system/alist.service
写入配置
1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description=alist --名称 After=network.target [Service] Type=simple WorkingDirectory=path_alist --alist安装目录,下同 ExecStart=path_alist/alist-xxxx -conf data/config.json -- Restart=on-failure [Install] WantedBy=multi-user.target
启动: systemctl start alist
关闭: systemctl stop alist
自启: systemctl enable alist
状态: systemctl status alist
重启: systemctl restart alist
screen
1 2 3 4 5 6 7 8 9 screen -S project_name 创建 screen -r project_name 进入已有的窗口 screen -ls CTRL+A 选中 d隐藏 kill name_or_id 杀死进程
内网穿透 frp:
1.尝试破解邻居wifi—-失败5,成功1 (1).房屋内信号奇差,遂开始研究无线中继
[1].尝试esp8266开发板中继
1).因淘宝买到崴货失败
[2].尝试树莓派搭建中继服务---树莓派2楼掉下干碎,维修¥15
[3].中继搭建成功
1).WiFi芯片功率较低而速度极慢,放弃
[4].开始研究无线网卡作为AP中继
1).因无线网卡芯片不支持Linux失败。。。
[5].开始研究USB网络共享
1).因拼多多买到崴货数据线失败
2.尝试钓鱼执法偷密码—-因技术原因失败
安装docker
首先查看树莓派是否已自带docker
卸载与重装
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #卸载docker sudo apt-get remove docker sudo apt-get remove docker-engine docker.io #卸载docker-ce sudo apt-get remove docker-ce #卸载安装依赖 sudo apt-get autoremove --purge docker-ce 上面的命令不会移除镜像、容器、卷或者是用户创建的配置文件,如果想卸载所有的镜像、容器、卷,可运行 rm -rf /var/lib/docker -------------------------------------------------- 首先安装依赖 sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common 信任 Docker 的 GPG 公钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 对于 amd64 架构的计算机,添加软件仓库 sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) \ stable" 最后安装 sudo apt-get update sudo apt-get install docker-ce 把当前用户加到docker用户组中 添加docker用户组 sudo groupadd docker 把自己加到docker用户组中 #myusername 是你自己的用户名 sudo gpasswd -a myusername docker 重启docker后台服务 sudo service docker restart 切换当前用户到新group newgrp - docker 确定docker可以非sudo运行 docker ps --查看所有项目 sudo docker run hello-world --测试docker是否成功安装 将会输出`Hello from Docker!` -------------------------------------------------- #下载 Docker 图形化界面 portainer sudo docker pull portainer/portainer #创建 portainer 容器 sudo docker volume create portainer_data #运行 portainer sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer -------------------------------------------------- #重启 systemctl 守护进程 sudo systemctl daemon-reload #设置 Docker 开机启动 sudo systemctl enable docker #开启 Docker 服务 sudo systemctl start docker # 重启 systemctl daemon-reload systemctl restart docker # sudo systemctl disable docker 取消开机自启
进入容器虚拟目录
docker container exec -it 容器id /bin/bash
部署alist 官方文档,docker安装
部分问题
apt-get安装中的E: Sub-process /usr/bin/dpkg returned an error code (1)问题
1 2 3 4 5 6 7 8 cd /var/lib/dpkg/ sudo mv info/ info_bak # 现将info文件夹更名 sudo mkdir info # 再新建一个新的info文件夹 sudo apt-get update # 更新 sudo apt-get -f install # 修复 sudo mv info/* info_bak/ # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_bak文件夹下 sudo rm -rf info # 把自己新建的info文件夹删掉 sudo mv info_bak info # 把以前的info文件夹重新改回名