0%

【Linux】Linux知识小贴士

同一局域网下,Linux远程执行Windows主机下的批处理文件(.bat文件)

Linux主机使用SSH远程登录到Windows主机
ssh username@windows_ip_address

操控进入到Windows下的目标目录:
cd path_to_bat_file_directory

使用plink命令执行.bat批处理文件:
plink -ssh -l username -pw password windows_ip_address “path_to_bat_file.bat”

Linux与Windows通过samba服务共享文件夹

Linux主机操作:

  • 安装Samba服务:sudo apt install samba

  • 创建私有目录,并赋予可权限

    1
    2
    sudo mkdir -p /srv/samba/share
    sudo chmod -R 755 /srv/samba/share
  • 配置Samba服务
    sudo vim /etc/samba/smb.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 在文件末尾添加如下:
    [shared]
    path = /srv/samba/share
    available = yes
    valid users = chenjd
    browsable = yes
    read only = no
    writable = yes
    guest ok = yes
    create mask = 0777
    directory mask = 0777
  • 重启Samba服务

    1
    2
    sudo systemctl restart smbd
    sudo systemctl enable smbd
  • 设置防火墙规则:sudo ufw allow 'Samba'

Windows主机操作:

  • 在文件资源管理器的地址栏中输入\\192.168.112.240\share,其中192.168.112.240为Windows主机的IP地址,share为共享文件夹的名称
  • 可以添加网络驱动器,添加映射文件夹到盘符,如Z:

同一局域网环境下开启NFS服务

  • 在Linux主机和Windows主机之间开启NFS服务 之 Windows10通过NFS挂载Linux目录
    • 在Linux主机上配置NFS服务器
      • 输入命令sudo apt-get install nfs-kernel-server rpcbind安装NFS服务器和PRCBIND
      • 创建共享目录:sudo mkdir /home/jd_chen/nfs_share,其中/home/jd_chen/nfs_share为想要共享的目录
        • chmod -R 777 /home/jd_chen/nfs_share将所有权限递归应用于目标目录的所有文件和子目录
      • 配置NFS服务:sudo vim /etc/exports
        • 在文件中添加/home/jd_chen/nfs_share *(rw,sync,no_root_squash)
        • 其中*表示允许所有的网络段访问,rw表示访问者具有可读写权限,sync表示将缓存写入设备中,表示同步缓存,no_root_squash表示访问者具有root权限
      • 启动NFS服务:sudo service nfs-kernel-server start或者systemctl start nfs-kernel-server
        • systemctl status nfs-kernel-server验证NFS服务是否已启动
        • systemctl enable nfs-kernel-server配置在系统启动时自动启动NFS服务
        • showmount -e查看NFS共享目录

  • 在Windows下配置NFS客户湍服务

    • 打开控制面板\程序\程序和功能,点击启用或关闭Windows功能,找到NFS服务,勾选NFS客户端管理工具
    • 重启电脑
  • 在Windows下挂载NFS目录

    • 按下Win+R组合键打开运行对话框
    • 输入mount 192.168.112.240:/home/jd_chen/nfs_share X:
      • 其中192.168.112.240为Linux主机的ip地址,/home/jd_chen/nfs_share为需要共享的目录,X:为映射到Windows本地的盘符
  • 将命令mount改为umount即可卸载挂载,或者右键盘符->断开连接


  • 在Linux主机使用挂载Linux服务器的NFS共享目录
    • 客户端执行yum install -y nfs-utils
    • 执行mount <服务器IP>:<share_path> <挂载点>
      • 如:mount 192.168.1.1:/mnt/nfs /mnt/share
        • 表示将服务器 192.168.1.1 上的 /mnt/nfs 目录挂载到客户端 /mnt/share 目录
      • 如:mount -t nfs -o nolock,nfsvers=3 192.168.1.1:/mnt/nfs /mnt/share
        • 其中-t nfs指定文件系统类型为NFS,-o nolock表示禁用文件锁定功能,nfsvers=3指定使用NFS版本3
    • 执行df -h验证NFS共享是否可用

  • 嵌入式Linux开发中,配置NFS挂载根文件系统

远程端口流量通过SSH映射到本地

在本地 Windows 打开 PowerShell,输入:ssh -L 4000:localhost:4000 jd_chen@192.168.112.240

  • 其中,4000是要转发的端口以及映射到本地的端口,jd_chen为远程主机用户名
  • 另外,如果为VSCode + SSH开发环境,可以在VSCode的终端界面PORTS直接添加转发/预览

Linux给根目录扩容

软件资源获取、下载、安装相关

知道.tar.gz文件的URL,则可以使用wget命令直接从网站上下载该文件*


  • 下载了*.tar.gz文件后,键入tar -xzvf file.tar.gz命令,解压文件到当前目录
  • 而后进入其目录cd file,输入如下命令安装,当然以下只是方式之一。或者通常目录下或有安装脚本,使用sudo权限执行其脚本即可
  • 安装完毕后,可以通过运行其可执行程序,如:xxx –version,检查是否安装成功,提示缺少依赖,则sudo apt-get install xxx安装对应库即可,或者sudo apt --fix-broken install安装缺失的软件包依赖

通过源代码编译安装的方式:

1
2
3
./configure
make
sudo make install

基于.deb文件安装:

  • 使用dpkg命令,如:sudo dpkg -i file.deb
  • 解决安装过程中的依赖:暂略,sudo apt --fix-broken install

命令行操作相关

在shell脚本中,#!/bin/bash通常放在第一行,当然也可以放在其它行,也可以去掉该行,或者也可以在该行之前放置其它如注释部分

  • #!/bin/bash用于告诉系统使用何种shell解释器来解释此脚本,若不指定,则会使用默认shell解释器
  • 但通常系统默认的解释器即为bash shell

./xxx.sh和sh xxx.sh

直接使用./xx.sh会在当前shell中执行shell脚本,而使用sh xx.sh会在一个新的子shell中执行shell脚本。

  • 在当前shell中执行shell脚本时,shell脚本中的变量和环境会影响当前shell
  • 在子shell中执行shell脚本时,shell脚本中的变量和环境不会影响当前shell

以下复述自Brad:

  • 如果shell脚本中定义了一个变量,但没有使用export命令将其导出到环境中,则该变量只在shell脚本中有效,在shell脚本执行完毕后,该变量就会被删除。

    当使用export命令将变量导出到环境中时,该变量会被添加到环境变量列表中。环境变量列表是所有shell共享的,包括父shell和子shell

  • 如果shell脚本中定义了一个变量,并使用export命令将其导出到环境中,则该变量会一直存在,直到shell退出。
  • 如果shell脚本中使用unset命令删除了一个变量,则该变量会立即被删除,无论该变量是否被导出到环境中

    使用unset命令删除一个变量,只会在当前shell中删除该变量。如果该变量被导出到环境中,则该变量会从环境变量列表中删除,但不会从其他shell中删除

  • 如果shell使用exit命令退出,则shell脚本中的所有变量和环境都会被删除,无论该变量是否被导出到环境中

Linux常用命令

解压缩相关

将 /home/user/test.tar.gz 解压到 /home/user/ 目录:tar -zxvf /home/user/test.tar.gz -C /home/user/