分类: Linux

  • Linux获取内网IP地址

    Linux 获取内网 IP 地址
    hostname -I

    结果示例

    192.168.31.47 172.18.0.1 172.17.0.1

    共有3个IP地址

    参考资料:
  • ThinkPad 笔记本安装 Ubuntu 22.04 LTS 散记

    前因

    家里有一台安装了 Windows 10 操作系统的 ThinkPad 笔记本,

    由于使用年限较长,启动后有屏幕闪烁的问题,

    这台机器安装有两块硬盘,

    一块是128GB 的固态硬盘,安装了操作系统,剩余空间不到5GB,

    另外一块是1TB的机械硬盘,剩余空间还有400GB,

    闲置比较浪费,想利用起来,

    于是使用 DiskGenius 将剩余空间划分出 200GB

    用来安装 Ubuntu 操作系统,这样可以通过 SSH 远程访问继续使用,

    原 Windows 系统 NTFS 格式的分区可以挂载在 Ubuntu 系统下面来访问。

    准备

    U盘一个,镜像制作工具  https://rufus.ie/zh/

    分区类型选择 GPT,之前选择 MBR 一直无法进入安装界面,

    文件系统选择 NTFS,

    Ubuntu 22.04 LTS 操作系统下载地址:

    https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/22.04.4/

    个人使用建议选择桌面版 ubuntu-22.04.4-desktop-amd64.iso

    安装

    讲U盘插入电脑,制作完毕后将U盘插入电脑,

    系统启动时进入 BIOS 界面,

    选择从 USB Disk 启动,保存后重启即进入 Ubuntu 安装流程,

    接下来就是选择键盘布局、语言、时区、配置WiFi、设置用户名密码等步骤。

    远程访问

    安装完成后的一些初始化操作:

    安装时只能添加普通权限的用户,

    修改 root 用户密码

    sudo passwd root

    修改完后 使用命令 su 切换到 root 用户 就拥有了最高权限。

    安装 openssh-server

    apt install openssh-server

    再将 /etc/ssh/sshd_config 中的 PermitRootLogin 的值修改为 yes

    PermitRootLogin yes

    删除行首 # 字符才能生效,

    重新启动 sshd

    service sshd start

    重新启动 ssh

    service sshd restart

    查看 22 端口状态

    lsof -i:22

  • Linux系统下使用 less +F 替代 tail -f 监视文件

    在Linux系统下通常使用 tail -f 监视文件的变化,
    如果需要具体分析某些文件内容,
    此时需要按下 Ctrl + c 退出后,再去编辑这个文件。
    如果使用 less +F 命令,
    当需要回顾文件时,按下 Ctrl + c ,然后使用 j k 键滚动查看,
    此时文件如果有写入,但视图暂时不会更新,
    需要继续监视文件时,按下 shift + f 【大写F】,则恢复监视状态。
    总结起来,如果监视的文件持续写入内容很多,并且有回顾需求时,
    可以考虑使用 less +F 替代 tail -f

     参考文章:

    https://www.linux.com/training-tutorials/tail-f-vs-less-f/

    https://github.com/gwsw/less

  • Linux 操作系统设置时区

    timedatectl set-timezone Asia/Shanghai

  • 命令行json数据格式化工具json_reformat

    Linux 命令行显示未格式化的 json 数据
    使用 json_reformat 格式化 json 后
    这样显示非常便于数据分析,
    只需要输出时使用管道重定向给 json_reformat 命令,
    json_reformat 是 yajl 提供的一个工具,
    yajl 是使用 C 开发的 JSON 分析库,
    这个库可以用来分析和验证 json 数据,
    另外一个特色是支持 stream 方式处理数据。
     
    使用 apt show yajl-tools 查看包的详情如下:
    Package: yajl-tools
    Version: 2.1.0-3
    Priority: extra
    Section: universe/utils
    Source: yajl
    Origin: Ubuntu
    Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
    Original-Maintainer: John Stamp <jstamp@users.sourceforge.net>
    Installed-Size: 49.2 kB
    Depends: libc6 (>= 2.4), libyajl2 (>= 2.1.0)
    Homepage: yajl
    Download-Size: 7,792 B
    APT-Manual-Installed: yes
    APT-Sources: Index of /ubuntu groovy/universe amd64 Packages
    Description: Yet Another JSON Library – tools
    A small collection of tools that use the yajl library.
    .
    Current tools are:
    json_reformat – beautifies or minimizes format of JSON data
    json_verify – validates JSON data
  • 使用 root 登录 Ubuntu系统

    以 Ubuntu 操作系统为例,

    默认是不允许 root  登录的,

    如果希望以  root 身份登录操作系统,

    需要修改 ssh 的配置文件 /etc/ssh/sshd_config

    修改 PermitRootLogin 值为 yes

    修改 PasswordAuthentication 值为 yes

    然后重新启动 ssh 服务即可

    systemctl restart ssh.service

    或者

    service ssh restart

  • Linux系统命令行快捷键

    https://www.bilibili.com/video/BV1k541177Sn/

    Linux命令行操作时使用快捷键,

    手不用离开键盘基本位F/J,

    比使用方向键/退格键等更加快捷,

    推荐日常开发时,映射 CapsLock 键为 Ctrl,

    这样按 Ctrl 键的时候会很方便,

    修改工具: Windows 可以用 PowerToys 或者 SharpKeys

    MacOS 自带映射设置

    工欲善其事必先利其器,一次学习,受用一生。

    导航快捷键
    ctrl +a 快速移动到命令行行首
    ctrl +e 快速移动到命令行行尾
    ctrl +f 将光标向右移动一个字符
    ctrl +b 将光标向左移动一个字符
    ctrl +xx 将光标在当前位置和行首来回切换
    alt +b 将光标向左移动一个单词
    alt +f 将光标向右移动一个单词

    编辑快捷键
    ctrl +l 清除屏幕内容
    ctrl +d 删除当前光标所在位置的字符
    ctrl +h 删除当前光标左侧的一个字符,相当于退格键
    alt +d 向右删除一个单词
    ctrl +w 向左删除一个单词
    ctrl +k 删除当前位置到行尾的所有内容
    ctrl +u 删除当前位置到行首的所有内容
    alt +t 将光标当前所处位置的单词和左侧的单词交换
    ctrl +t 将光标当前所处位置的字符和左侧的字符交换
    esc +t 将光标当前所处位置的字符和左侧的字符交换
    ctrl +y 粘贴之前剪切的字符
    alt +u 将光标右侧的一个单词全部变换为大写
    alt +l 将光标右侧的一个单词全部变换为小写
    alt +c 以光标所处位置开始,将右侧的一个单词变换为首字母大写
    alt +r 撤销修改
    ctrl +j 新的一行
    ctrl +m 回车
    ctrl +[ Escape

    历史命令快捷键
    ctrl +r 历史命令检索,需要输入检索关键词
    ctrl +s 历史命令检索,需要输入检索关键词,搜索顺序与 ctrl + r 相反
    ctrl +o 执行ctrl + r /ctrl + s 搜索到的命令
    ctrl +g 退出历史命令检索模式
    ctrl +p 倒序调用历史命令
    ctrl +n 正序调用历史命令
    !! 重复上次执行的命令
    !git 执行上次以 git 开始的命令
    !$ 上次执行的命令的最后一个参数
    !* 上次执行的命令的所有参数
    alt + . 上次执行的命令的最后一个参数,和 !$ 作用相同
    ^abc^def 将上次执行的命令中的abc替换为def

    进程管理
    ctrl+c 终止当前运行的命令
    ctrl + z 将当前运行的任务转移到后台,
    可以使用 jobs 查看,
    使用 fg % 1 调至前台。

  • 免密码登录Linux服务器

    https://www.bilibili.com/video/BV1BA411u7DJ/

    Linux用户密码太简单不安全,

    太复杂不好记忆,

    但是安全性比便利性更重要,

    所以使用密钥登录Linux比较常见,

    如今非对称公钥私钥授权最为流行,

    以OpenSSH为例,具体的操作步骤:

    1.生成公钥私钥对

    ssh-keygen -t ed25519  -b 2048 -C "user@mail.com"

    参数说明:
    -t 可选算法  dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa

    -b  密钥长度,rsa建议密钥长度大于1024

    -C  助于区分多对密钥的标记

    2.将公钥发布到服务器

    ssh-copy-id -i id_ed25519.pub  user@serverip

    此时需要输入一次密码,

    发布成功后,用户的公钥存储于目标服务器文件~/.ssh/authorized_keys

    也可以手动复制 id_ed25519.pub 文件的内容追加到~/.ssh/authorized_keys

    之后使用user登录server便不再需要输入密码

    此时可以禁止密码方式登录:

    修改 /etc/ssh/sshd_config 参数 PasswordAuthentication 为 no

    然后执行 systemctl restart ssh 重启ssh服务即可。

    https://www.bilibili.com/video/BV1BA411u7DJ/

     

  • Linux 命令 cd 的用法

    cd 是 Linux 操作系统最为基础的命令,它是 Change Directory 的缩写,意思是变更目录。

    切换目录

    cd /etc

    cd /tmp

    在 Linux 操作系统中,

    .    [一个点] 代表当前目录,

    ..     [两个点] 代表上级目录,

    切换到上级目录:cd ..

    切换到上两级目录  cd ../..

    切换到上次访问的目录 cd –

    家目录

    当用户首次登陆系统后,所在的目录称为家目录,

    如果是 root 用户,家目录路径是 /root ,

    如果是 非root 用户,家目录路径是 /home/用户名/

    要切到家目录使用  cd ~ 命令

    或者直接输入 cd ,后面不加参数,也是切换到家目录。

    参数 P 的作用

    例如,当前目录是 /root ,此目录下面有一个链接文件 tmp 指向 /tmp ,

    cd  tmp  后的路径是  /root/tmp ,

    如果想切换到链接文件指向的目录,加上参数 -P 就可以了。

    cd -P tmp

    用 pwd 查看,切换后的路径是 /tmp

  • 查看Linux系统基本参数命令

    首次登陆Linux服务器,这些命令可以帮助了解系统概况。

    cat /etc/os-release

    查看操作系统类型,版本号,开发代号等信息。

    lscpu

    显示CPU的制造商、架构、数量、型号、主频以及 L1/L2/L3 缓存等信息。

    free -ht

    了解内存和交换区的大小和使用量。

    lsblk

    查看系统所有可用块设备的大小等属性。

    arch

    查看CPU架构

    curl ifconfig.me

    查看分配的公网IP地址。

    reboot

    重新启动系统。