Linux基本命令
1)配置网口地址
nano /etc/netplan/00-installer-config.yamlnetwork: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] enp2s0: dhcp4: no addresses: [192.168.1.10/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4] routes: - to: 192.168.168.0/24 via: 192.168.12.254 wifis: wlan0: dhcp4: true access-points: "TP-LINK_1111": password: "12345678"netplan apply2)开启ssh root登录
sudo nano /etc/ssh/sshd_configPermitRootLogin yessudo systemctl restart ssh sudo passwd root3)nano 搜索
CTRL+Q
4)crontab
编辑cron任务列表 crontab -e 例子: minute hour day month day_of_week command_to_run 0 3 * * * systemctl restart apache2 查看cron任务列表 crontab -l5)查看服务日志
journalctl -u TP2DBAdapter journalctl -u TP2DBAdapter -e //跳转到日志末尾6)设置时区
timedatectl set-timezone Asia/Shanghai timedatectl //查看时间7)systemd配置
[Unit] After=network-online.target //网络就绪后启动 [Service] ExecStartPre=/bin/sleep 30 //服务延时30秒启动 Restart=always //总是重启8)添加用户
添加用户、设置用户home目录、设置shell、设置用户组 useradd -m -d /home/newuser -s /bin/bash newuser -G sudo -m:创建用户的 home 目录。 -d:指定用户的 home 目录路径。 -s:指定用户的 shell。 -G:将用户添加到一个或多个附加组中。 设置用户密码: passwd newuser 需改用户组,将其添加到sudo组 usermod -aG sudo newuser 删除用户: userdel newuser9)iperf3测速工具
apt install iperf3 服务器:iperf3 -s 客户端:iperf3 -c serverip10)格式化文件系统
mkfs.ext4 /dev/sdb4 mkfs.ntfs /dev/sdX1 #快速格式 mkfs.ntfs -f /dev/sdX1 #安装ntfs文件系统 apt install ntfs-3g11)设置代理
git
export HTTP_PROXY=http://proxy_server:proxy_port export HTTPS_PROXY=http://proxy_server:proxy_port export ALL_PROXY=socks5://proxy_server:proxy_portapt
nano /etc/apt/apt.conf.d/50nanopi
# Proxy Acquire::http::Proxy "http://proxy.server.com:port/"; Acquire::https::Proxy "http://proxy.server.com:port/";12)设置默认编码
1.查看默认编码:locale 这个表示已经是utf8编码了:LANG=en_US.UTF-8 2.设置默认编码 sudo locale-gen en_US.UTF-8 sudo update-locale LANG=en_US.UTF-8 3.重新登陆系统13)读写磁盘镜像
将镜像写入磁盘:
#恢复镜像到磁盘 sudo dd if=your_image.img of=/dev/mmcblk1 bs=4M status=progress #备份磁盘到镜像 sudo dd if=/dev/mmcblk1 of=your_image.img bs=4M status=progress if: 输入镜像文件。 of: 输出设备(eMMC 设备)。 bs: 块大小,建议 4M 提高速度。 status=progress: 显示实时进度。 count: 指定读取大小。nG * 1024 / bs #同步数据,确保缓存数据写入磁盘。 sync14)连接WIFI
su root --使用管理员 nmcli dev --查看网络设备 nmcli r wifi on --开启WiFi nmcli dev wifi --扫描附近WiFi nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0 --连接WiFi ping www.baidu.com --检查WiFi nmcli connection delete <连接的名称或UUID> --断开连接 nmcli connection --列出所有历史连接 nmcli device disconnect wlan0 --断开连接 nmcli dev wifi rescan --重新扫描 nmcli dev wifi list --列出扫描到的wifi15)虚拟串口
sudo apt-get install socat socat -d -d pty,raw,echo=0 pty,raw,echo=0 #2023/10/10 12:34:56 socat[1234] N PTY is /dev/pts/2 #2023/10/10 12:34:56 socat[1234] N PTY is /dev/pts/3 1.使用 socat 创建两个伪终端(PTY)。 2.将这两个伪终端连接在一起,形成一个虚拟串口对。 3.每个伪终端都设置为原始模式(raw),并禁用回显(echo=0)。 4.输出详细的调试信息(-d -d)。16)本机端口重定向
iptables -t nat -A PREROUTING -p tcp --dport <本机端口> -j DNAT --to-destination <重定向IP:端口> iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.8:80 iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE #/etc/sysctl.conf 开启IP转发(必须要开,要不然不通) net.ipv4.ip_forward=1 #sysctl -p 生效配置17)使用pkg-config查询版本
apt安装的软件库可通过pkg-config工具查看版本信息 pkg-config --modversion libwebsockets18)创建软链接
ln -s [目标文件或目录] [链接名称] 例:ln -s /home/user/data.txt /home/user/data_link.txt 创建一个名为 data_link.txt 的软链接,指向原始文件 data.txt。19)git
#首次提交 cd SignalServer git init git branch -m master main git checkout -b main git remote add origin http://192.168.0.170:8082/zyy/SignalServer.git git add . git commit -m "v1.0.0" git push -u origin main #修改后提交 git add . git commit -m "v1.0.0" git push -u origin main #设置代理 git config --global http.proxy http://192.168.0.40:10811 git config --global https.proxy https://192.168.0.40:10811 #取消代理 git config --global --unset http.proxy git config --global --unset https.proxy20)压缩和解压
#压缩命令 tar -czvf archive-name.tar.gz file-or-directory #参数说明: -c:创建新的归档文件 -z:通过 gzip 压缩 -v:显示压缩过程(可省略) -f:指定文件名(后面紧跟压缩包名) #解压命令 tar -xzvf archive-name.tar.gz tar -xzvf archive-name.tar.gz -C /dest_dir/ #参数说明: -x:解压(extract) -z:通过 gzip 解压 -v:显示过程(可省略) -f:指定压缩包文件名 -C:指定目录21)ARP命令
LINUX系统(root) #查看arp表 ip neigh ->192.168.0.40 dev eth0 lladdr f8:e4:3b:53:63:82 REACHABLE #添加条目 ip neigh add 192.168.0.1 lladdr 50:da:00:41:aa:44 dev eth0 nud permanent #删除条目 ip neigh del 192.168.0.1 lladdr 50:da:00:41:aa:44 dev eth0 nud permanent 参数说明: 192.168.0.1:目标 IP 地址 lladdr 50:da:00:41:aa:44:指定 MAC 地址 dev eth0:本地网络接口(根据你实际网卡名修改) nud permanent:设置为永久静态条目 常见 NUD 状态含义: PERMANENT 手动添加的永久项,不会过期 REACHABLE 最近刚通信成功(约30秒内有效),系统认为对端是可达的 STALE 超过 REACHABLE 超时时间,尚未确认是否可达,但不立即重试 DELAY 系统在等待数据包传输确认对端是否仍然可达(很短的状态) PROBE 正在通过 ARP 或 ND 探测对方可达性 FAILED 多次重试未果,判定不可达 INCOMPLETE 正在解析 MAC 地址,ARP 请求发出但未收到回应 ----------------------------------------------------------------------------------------- Window系统(管理员权限) 查看接口索引: netsh interface ipv4 show interfaces 查看ARP表: netsh interface ipv4 show neighbors 添加Arp条目: netsh interface ipv4 add neighbors <接口索引> <IP地址> <MAC地址> [store=active] netsh interface ipv4 add neighbors 2 192.168.0.1 50-da-00-41-aa-44 store 参数可选值 active 将条目添加到活动 ARP 缓存中(默认值) 临时(重启丢失) persistent 将条目永久保存到注册表中 永久 both 同时添加到活动缓存和永久存储 永久 删除Arp条目: netsh interface ipv4 delete neighbors <接口索引> <IP地址> <MAC地址> netsh interface ipv4 delete neighbors 2 192.168.0.1 50-da-00-41-aa-44 修改Arp条目: netsh interface ipv4 set neighbors <接口索引> <IP地址> <MAC地址> netsh interface ipv4 set neighbors 2 192.168.0.1 50-da-00-41-aa-4422)IP转发
nano /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p23)arecord
arecord -f cd -D hw:2,0 -r 48000 -c 2 -t wav output.wav24)ffmpeg
#格式转换 ffmpeg -f s16le -ar 8000 -ac 1 -i input.pcm -ar 48000 -ac 2 -f wav output.wav #放大音量 ffmpeg -i input.wav -af "volumedetect" -f null /dev/null -> [max_volume] @ 0x7feb5c00f200] max_volume: -5.0 dB ffmpeg -i input.wav -af "volume=4.9dB" output.wav25)apt卸载
#卸载 osm2pgsql sudo apt remove osm2pgsql #卸载并清理配置文件 sudo apt purge osm2pgsql #删除不再需要的依赖 sudo apt autoremove #检查是否卸载成功 which osm2pgsql26)修改文件系统
#修复文件系统 e2fsck /dev/sdb3 #压缩文件系统(先e2fsck) resize2fs /dev/sdb3 4G #扩展文件系统(先e2fsck) resize2fs /dev/sdb3 #修改磁盘 fdisk /dev/sdb27)SCP命令
# 将本地文件 file.txt 复制到远程服务器 192.168.1.100 的 /home/username/ 目录下 scp /path/to/local/file.txt username@192.168.1.100:~/ # 将远程服务器上的 /path/to/remote/file.txt 复制到本地当前目录 scp username@host:/path/to/remote/file.txt . #可以从一个远程主机直接复制到另一个远程主机。 scp user1@host1:/path/to/file user2@host2:/path/to/destination28)挂载磁盘文件系统
#挂载 mkdir /mnt/lower mount -o ro /dev/mmcblk1p2 /mnt/lower mkdir /mnt/upper_root mount /dev/mmcblk1p3 /mnt/upper_root mkdir /mnt/merged mount -t overlay overlay -o lowerdir=/mnt/lower,upperdir=/mnt/upper_root/root,workdir=/mnt/upper_root/work /mnt/merged #卸载 umount /mnt/merged umount /mnt/upper_root umount /mnt/lower rmdir /mnt/merged /mnt/upper_root /mnt/lower29)挂载磁盘镜像文件
# 查看当前所有的循环设备 losetup -a # 删除所有关联的循环设备 losetup -D # 删除特定的循环设备(如果知道设备名) losetup -d /dev/loop0 # 替换为实际的设备名 #查找分区偏移量 fdisk -l hht_nanopi.img ---------------------------------------------------------------- Disk hht_nanopi.img: 5 GiB, 5368709120 bytes, 10485760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xab881b06 Device Boot Start End Sectors Size Id Type hht_nanopi.img1 49152 131071 81920 40M 83 Linux hht_nanopi.img2 131072 2621439 2490368 1.2G 83 Linux hht_nanopi.img3 2621440 62333951 59712512 28.5G 83 Linux ---------------------------------------------------------------- #计算分区偏移量 偏移量 = Start扇区号 × 扇区大小(通常是512字节) 从上面的例子: 分区1偏移量:49152 × 512 = 25165824 分区2偏移量:131072 × 512 = 67108864 分区3偏移量:2621440 × 512 = 1342177280 #创建挂载点并挂载 mkdir -p /mnt/img/{boot,root,data,merged} losetup -o 25165824 /dev/loop0 hht_nanopi.img losetup -o 67108864 /dev/loop1 hht_nanopi.img losetup -o 1342177280 /dev/loop2 hht_nanopi.img mount /dev/loop0 /mnt/img/boot mount /dev/loop1 /mnt/img/root mount /dev/loop2 /mnt/img/data mount -t overlay overlay -o lowerdir=/mnt/img/root,upperdir=/mnt/img/data/root,workdir=/mnt/img/data/work /mnt/img/merged #卸载 umount /mnt/img/merged umount /mnt/img/boot umount /mnt/img/root umount /mnt/img/data losetup -d /dev/loop0 losetup -d /dev/loop1 losetup -d /dev/loop230)nanopi系统磁盘自动扩容
控制脚本路径:/boot/rootfs.cpio.gz/scripts/local 函数:local_resize_ext4() 删除磁盘镜像文件(*.img)中第三个分区下的 “.ext4.resized” 文件,然后烧写镜像到磁盘。31)wmware虚拟机扩容(非LVM)
#Ubuntu22.04-无LVM sudo apt update sudo apt install cloud-guest-utils sudo growpart /dev/sda 3 sudo resize2fs /dev/sda3 df -h32) Linux创建共享目录
##安装 Samba sudo apt update sudo apt install samba -y ##创建共享目录 mkdir -p ~/share chmod 777 ~/share ##配置 Samba sudo nano /etc/samba/smb.conf [myshare] path = /home/你的用户名/share browseable = yes read only = no guest ok = yes force user = 你的用户名 ##重启服务 sudo systemctl restart smbd ##Windows访问 \\Ubuntu的IP地址\myshare33) Certbot
#安装 Certbot sudo apt update sudo apt install certbot python3-certbot-nginx #自动申请证书(Nginx) sudo certbot --nginx #证书路径通常是: /etc/letsencrypt/live/你的域名/ #包含: fullchain.pem privkey.pem #只申请证书(不改 Nginx) sudo certbot certonly --nginx -d example.com #自动续期(Let's Encrypt 证书 有效期 90 天) certbot renew --dry-run /etc/cron.d/certbot #Nginx HTTPS配置示例 server { listen 443 ssl; server_name example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:8080; } }34)Nginx
#去掉/chatwoot 前缀后再传给后端 #这样请求 /chatwoot/packs/js/sdk.js 会被代理为 http://127.0.0.1:18136/packs/js/sdk.js location /chatwoot/ { proxy_pass http://127.0.0.1:18136/; # 注意末尾的斜杠 } #这样请求 /chatwoot/packs/js/sdk.js 会被代理为 http://127.0.0.1:18136/chatwoot/packs/js/sdk.js location /chatwoot/ { proxy_pass http://127.0.0.1:18136; # 注意末尾没有斜杠 }35) Nanopi刷机
固件: h3_eflasher_friendlycore-focal_4.14_armhf_20210618.img IP: 192.168.1.23136) configure 工具
#配置交叉编译环境: #指定交叉编译工具host目录 export SDK=/home/wst/T113/host #指定交叉编译工具bin目录 export PATH=$SDK/bin:$PATH #配置交叉编译器前缀 export CROSS=arm-linux-gnueabi #配置安装目录 export PREFIX=$PWD/install ./configure \ --host=$CROSS \ --prefix=$PREFIX \