分类 linux 下的文章

我们在平常在开发环境使用 MySQL 的过程中,经常需要命令行登录, 比如:

mysql -h localhost -P 3306 -u root -D steel_server -p
******

mysql>
  • -h 服务地址
  • -P 服务端口
  • -u 服务用户
  • -D 默认数据库
  • -p 输入密码

在开发环境每次都输入这么长的内容, 也挺不方便的,于是看了下, mysql 命令是否支持本地配置的功能, man mysql 中有这部分描述

       ·   Use an option file.  You can set the prompt option in the [mysql] group of any MySQL option file, such as /etc/my.cnf or the .my.cnf file in your home directory. For example:

               [mysql]
               prompt=(\\u@\\h) [\\d]>\\_

- 阅读剩余部分 -

一般我们在执行系统安装过程,可能会定制安装ISO, 在ISO中集成我们自定义的一些软件包或者源码代码等等,需要在Kickstart中从cdrom中加载该内容,以便完成后续的系统配置或者软件包的安装.

一般我们会在 %post 部分来定义自定义配置逻辑, 但是在该环节,无法访问cdrom, 因为已经 chroot 到目标OS.

%post --log=/tmp/ks-post.log

yum -y update
yum -y upgrade

%end

- 阅读剩余部分 -

在使用 tmux 来托管我们的工作环境时, 环境如果稍微复杂点点, 导致会话/窗口/Panel会比较多, 如果仅仅是已数字索引来命名的话, 比较不方便, 还是对其重命名, 更容易识别和阅读.
这里汇总下会话/窗口 重命名的快捷键, 便于我们平常工作环境的维护.

会话(Session)重命名

使用快捷键重命名:

Ctrl + B, $

使用指令重命名,按快捷键进入指令模式

Ctrl + B, :

输入下述指令, 指定当前会话名称和新的会话名称

rename-session [-t current-name] [new-name]

- 阅读剩余部分 -

我们在 Windows/Mac OSX经常会使用到回收站,大多数删除操作将文件或目录皆是移动到回收站, 而 Linux 对大多数用户来说更了解 rm 命令, rm 命令是直接将文件或目录直接从硬盘上擦出, 这样就带来一个问题, 如果快速操作错了呢? 想后悔, 可是文件或目录已经从硬盘被擦出,想恢复只能通过一些专业的恢复工具才能完成, 即使是专业的恢复工具,也不是100%能完整恢复.因此, 在 Linux 上使用 rm 命令是个高危操作, 必须非常谨慎. 如果 Linux 上有类似回收站的功能不是就更好了? 即使操作错了,我们还是可以从回收站中快速恢复.

Linux 图形环境,直接使用对应的文件浏览器操作文件或者目录, 对应信息删除时自动会放置到回收站中.

而对于命令行环境, 有比较多的方案, 比如 trash-cli / gio trash等.

trash-cli

trash-cli 是个python实现的命令行工具,用于实现回收站功能. 官方网站是 https://github.com/andreafrancia/trash-cli

删除文件或目录

trash-put example example.txt

- 阅读剩余部分 -

在使用 virt-install 创建虚拟机的过程中,出现下面的错误

ERROR internal error: qemu unexpectedly closed the monitor: 2019-01-23T11:02:36.048859Z qemu-kvm: -chardev pty,id=charserial0: Failed to create PTY: Operation not permitted

日志显示 chardev 设备创建错误, 确认 /dev/pts 设备不存在(也可能是权限错误), 因此解决办法是, 重新构建对应的设备描述文件.
/etc/fstab 配置/dev/pts设备的挂载信息,重新remount /dev/pts 设备.

添加下述内容到 /etc/fstab

devpts /dev/pts devpts gid=5,mode=620 0 0

- 阅读剩余部分 -

我们在使用 virt-install 构建虚拟机需要指定操作系统类型, 在配置之前, 我们需要了解到底有哪些可选值, 查阅了下, 可以使用 osinfo-query 来完成.

这里我们使用到了两个命令, 需要安装 virt-installosinfo-query

安装 virt-install

REHL/CentOS

yum -y install virt-install

Debian/Ubuntu

apt -y install virtinst

- 阅读剩余部分 -

Linux 命令行环境下, 文本终端一般为 Bash Shell, 而在图形环境下, 图形化的终端程序还可以给我们提供一些更加便利的快捷键, 便于我们和终端进程交互:

  • Ctrl + Shift + c 拷贝
  • Ctrl + Shift + v 粘贴
  • Shift + Page Up 终端界面向上滚动, 类似通过鼠标滚轮将终端往上滚动
  • Shift + Page Down 终端界面向下滚动, 类似通过鼠标滚轮将终端往下滚动
  • Shift + Home 跳转到终端历史最顶端
  • Shift + End 跳转熬终端界面最底部
  • Ctrl + Page Up 跳转到前一个终端
  • Ctrl + Page Down 跳转到下一个终端
  • Alt + 1 快速定位到第一个终端, 类似 Firefox/Chrome
  • Alt + 2 快速定位到第二个终端
  • Ctrl + Shift + t 打开新的终端
  • Ctrl + Shift + w 关闭当前终端

- 阅读剩余部分 -

在我们使用 Linux 系统中, 经常需要对机器进程关机/重启/休眠等等操作, 一般都是通过系统的关机/重启/休眠等指令来完成, 这样保证整个过程是系统优雅的关闭,类似编写代码的Graceful Code, 因为这样服务才能完整的走完生命周期, 比如启动后部分数据在内存, 通过系统内关机命令来优雅的关闭, 那进程收到这个信号后, 将内存的数据 flush 到磁盘甚至远端,以便数据安全完整的存储下来.如果强制关闭或者关闭电源, 那这部分为保存的数据就有可能丢失, 影响后续工作的完成.只有在极端情况下, OS 除了极端问题, 硬件除了极端问题,只能通过关闭电源才能进行后续操作, 才建议使用电源重置的模式来重启, 一般情况下, 还是尽量优美的关机吧.

- 阅读剩余部分 -

lsof 含义为 list open files, 可以列出所有被进程所打开的文件列表.在Linux上,一切皆文件, 硬件设备,包括 USB 设备皆是通过文件描述, 网络 socket 也为文件,目录也被描述为特殊类型的文件.因此我们在诊断问题或者调试的过程中,找到对应打开的文件信息将对我们的工作过程很有帮助.

lsof 常用一些命令如下:

  • lsof -h 展示快捷帮助文档
  • lsof fpath 列出所有打开fpath的文件
  • lsof -i 列出所有与网络有关的被打开文件
  • lsof -u {USER} 列出所有用户下被打开的文件
  • lsof -p {PID} 列出对应进程打开的所有文件
  • lsof +d {DIR} 列出所有{DIR}下打开的文件
  • lsof +D {DIR} 递归的列出所有{DIR}下打开的文件
  • lsof -c cmd 列出 cmd 命令打开的所有文件列表

- 阅读剩余部分 -

因为 Linux 环境的命令以及文档及其丰富,我们在介绍一个工具的使用过程中, 主要是希望了解这个命令主要是干什么的, 在什么场景下使用,常用的有哪些使用方式, 更多的信息根据需要逐步上 man page 上去查阅,在查阅 man page 的过程中, 要快速找到我们的目标, 结合man page 的快捷键将极大的提升我们的效率

  • f Page Down, 向下翻一页
  • b Page Up, 向上翻一页
  • h 显示 man 命令使用帮助信息
  • q 退出
  • /{pattern} 向前搜索
  • ?{pattern} 向后搜索
  • n 跳转到下一个搜索结果
  • N 跳转到上一个搜索结果

- 阅读剩余部分 -