目录
这里,描述配置和管理系统的基本技巧,大部分在控制台操作。
有一些工具程序来帮助你的控制台活动。
表 9.1. 支持控制台活动的程序列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
mc |
V:57, I:230 | 1508 | 参见 第 1.3 节 “Midnight Commander (MC)” |
bsdutils |
V:646, I:999 | 419 | script 命令来记录终端会话的原始输入输出 |
screen |
V:102, I:268 | 1019 | VT100/ANSI 终端模拟器混合复用的终端 |
tmux |
V:38, I:141 | 1045 | 终端复用的备选方案(使用 “Control-B”代替) |
fzf |
V:3, I:9 | 2442 | 模糊的文本查找器 |
fzy |
V:0, I:0 | 54 | 模糊的文本查找器 |
rlwrap |
V:1, I:19 | 297 | 具备 readline 特征的命令行封装 |
ledit |
V:0, I:14 | 315 | 具备 readline 特征的命令行封装 |
rlfe |
V:0, I:0 | 49 | 具备 readline 特征的命令行封装 |
ripgrep |
V:3, I:12 | 4298 | 在源代码树中快速递归搜索字符串,并自动过滤 |
简单地使用 script
(1) (参见 第 1.4.9 节 “记录 shell 活动”)记录 shell 活动会产生一个有控制字符的文件。这些控制字符可以按下面的方式,使用 col
(1) 去掉。
$ script Script started, file is typescript
做些操作……按 Ctrl-D
退出 script
.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
有替代的方式来记录 shell 活动:
使用 tee
(在 initramfs 的启动过程中可用):
$ sh -i 2>&1 | tee typescript
使用 gnome-terminal
增加行缓冲,用滚动条查看。
使用 screen
和 "^A H
" (参见 第 9.1.2 节 “screen 程序”)来进行控制台记录。
使用 vim
输入 ":terminal
" 进入终端模式。使用 "Ctrl-W N
" 从终端模式退出到普通模式。使用 ":w typescript
" 将缓存写到一个文件。
使用 emacs
和 "M-x shell
", "M-x eshell
", 或 "M-x term
" 来进入记录控制台。使用 "C-x C-w
" 将缓存写到文件。
screen
(1) 不但允许一个终端窗口运行多个进程,还允许远程 shell 进程支持中断的连接.这里是一个典型的 screen
(1) 使用场景.
登录到一个远程机器。
在单个控制台上启动 screen
。
使用 ^A c
("Control-A" 接着 "c")在 screen
中创建的窗口执行多个程序.
按 ^A n
("Control-A" 接着"n")来在多个 screen
窗口间转换.
突然,你需要离开你的终端,但你不想丢掉正在做的工作,而这些工作需要连接来保持。
你可以通过任何方式分离 screen
会话。
残忍地拔掉你的网络连接
输入 ^A d
("Control-A" 接着 "d") 并手工从远程连接退出登录
输入 ^A DD
("Control-A" 接着 "DD") 分离 screen
并退出登录
你重新登录到同一个远处主机(即使从不同的终端)。
使用 "screen -r
" 启动 screen
.
screen
魔术般的重新附上先前所有的 screen
窗口和所有在活动运行的程序.
提示 | |
---|---|
对于拨号或者按包计费的网络连接,你可以通过 |
在 screen
会话里,除了命令按键外的所有键盘输入都会被发送到当前窗口。 screen
所有命令按键是通过 ^A
("Control-A") 加单个键[加任何参数] 来输入.这里有一些重要的命令按键需要记住。
表 9.2. screen 键绑定列表
键绑定功能 | 说明 |
---|---|
^A ? |
显示帮助屏幕(显示键绑定) |
^A c |
创建一个新的窗口并切换到该窗口 |
^A n |
到下一个窗口 |
^A p |
到前一个窗口 |
^A 0 |
到 0 号窗口 |
^A 1 |
到 1 号窗口 |
^A w |
显示窗口列表 |
^A a |
作为键盘输入发送 Ctrl-A 到当前窗口 |
^A h |
把当前窗口的硬拷贝写到一个文件 |
^A H |
开始/结束 当前窗口到文件的记录 |
^A ^X |
锁定终端(密码保护) |
^A d |
从终端分离 screen 会话 |
^A DD |
分离 screen 会话并退出登录 |
细节参见 screen
(1).
参见 tmux
(1) ,了解替代命令的功能。
在 第 1.4.2 节 “定制 bash”, 2 个技巧允许快速在目录间游走,在 $CDPATH
和 mc
描述。
如果你使用模糊文本过滤程序,你能够不输入精准路径。对于fzf
软件包,在 ~/.bashrc
里面包括下列内容。
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash if [ -f $FZF_COMPLETION_PATH ]; then . $FZF_COMPLETION_PATH fi
例如:
你能够最小化的操作跳入非常深的子目录。你首先输入 "cd **
" 后按 Tab
。然后你将被提示候选路径。输入部分路径字符串,比如 s/d/b foo
,将会缩窄候选路径。通过有光标和回车键的 cd
,你选择将要使用的路径。
你可以用最小化的操作,从命令历史里面选择一个命令。在命令行提示符下按 Ctrl-R
。然后你将被提示候选的命令。输入部分命令字符串,比如 vim d
,将会缩窄候选项。使用光标和回车键选择将要使用的命令。
一些命令,比如 /usr/bin/dash
,它缺少命令行历史编辑能力,但在 rlwrap
或它的等价物下运行就能够透明的增加这样的功能。
$ rlwrap dash -i
这提供一个便利平台来测试 dash
的细微之处,使用类似 bash
的友好环境。
在 ripgrep
软件包中的 rg
(1) 命令,在扫描源代码树的典型场景中,提供了一个比 grep
(1) 命令更快速的替代。它充分利用了现代多核 CPU,并自动使用适当的过滤器来忽略一些文件。
在你通过 第 1.4.8 节 “使用 vim” 学习基本的vim
(1) 后,请阅读 Bram Moolenaar 的"Seven habits of effective text editing (2000)" 来理解 vim
应当怎样被使用。
小心 | |
---|---|
没有非常好的理由,请不要尝试改变默认的键绑定。 |
vim
的行为能够被显著的改变,通过 Ex
-模式 的命令,启用它的内部特性,比如 "set ...
" 来设置 vim 选项。
这些 Ex
-模式 的命令,能够在用户的 vimrc 文件里面包括,传统的 "~/.vimrc
" 或 git 友好的 "~/.vim/vimrc
"。这里有一个非常简单的例。[2]:
colorscheme murphy " from /usr/share/vim/vim??/colors/*.vim filetype plugin indent on " filetype aware behavior syntax enable " Syntax highlight "set spelllang=en_us " Spell check language as en_us "set spell " Enable spell check set autoindent " Copy indent from current line set smartindent " More than autoindent (Drop/Pop after {/}) set nosmarttab "-key always inserts blanks set backspace=indent,eol,start " Back space through everything set laststatus=2 " Always show status line set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V
通过简单定制,即安装 vim-scripts 软件包,并附加下面的内容到用户的 vimrc 文件,能够启用 secure-modelines 和传统的 IDE。
packadd! secure-modelines packadd! winmanager let mapleader = ' ' " Toggle paste mode withp set pastetoggle= p " IDE-like UI for files and buffers with w nnoremap w :WMToggle " Use safer keys for moving to another window nnoremap h nnoremap j nnoremap k nnoremap l
为了使上面的按键绑定正确地运行,终端程序需要配置:Backspace
-键产生 "ASCII DEL"、Delete
-键产生 "Escape sequence"。
新的原生 Vim 软件包系统同 "git
" 和 "git submodule
" 顺利的工作。一个这样的配置例子能够在 我的 git 仓库: dot-vim 找到。本质上是这样做的:
通过使用"git
"和"git submodule
",最新的扩展软件包,比如说"name
",会被放到 ~/.vim/pack/*/opt/name
和类似的地方。
通过增加 :packadd! name
行到用户的 vimrc 文件,这些软件包被放到 runtimepath
。
Vim 在它的初始化时加载这些软件包到 runtimepath
。
在它初始化的最后,安装文档的标签被更新,使用 "helptags ALL
"。
更多信息,请使用 "vim --startuptime vimstart.log
" 启动 vim
来检查实际的执行顺序和每一个步骤消耗的时间。
下面能够发现有趣的外部插件软件包:
Vim - 无所不在的文本编辑器 -- Vim 和 vim 脚本的官方上游站点
VimAwsome -- Vim 插件列表
vim-scripts -- Debian 软件包:一个 vim 脚本的收集
是相当迷惑的看到这么多的方式[3] 来管理和加载这些外部的软件包到 vim
。检查原始的信息是最好的方法。
表 9.3. vim
的初始化信息
按键 | 信息 |
---|---|
:help package |
解释 vim 软件包机制 |
:help runtimepath |
解释 runtimepath 机制 |
:version |
内部状态,包括 vimrc 文件的候选 |
:echo $VIM |
环境变量 "$VIM " 用来定位 vimrc 文件的路径 |
:set runtimepath? |
列出用来搜索所有运行时支持文件的目录 |
:echo $VIMRUNTIME |
环境变量 "$VIMRUNTIME " 用来定位大量系统提供的运行时支持文件 |
许多传统的程序在"/var/log/
" 目录下用文本文件格式记录它们的活动.
在一个产生很多日志文件的系统上,用 logrotate
(8)来简化日志文件的管理。
许多新的程序使用 systemd-journald
(8) 日志服务的二进制文件格式来记录它们的活动,在"/var/log/journal
" 目录下。
你能够从 shell 脚本记录数据到 systemd-journald
(8) 日志,使用 systemd-cat
(1) 命令。
参见 第 3.4 节 “系统消息” 和 第 3.3 节 “内核消息”.
这里是主要的日志分析软件 ("~Gsecurity::log-analyzer
" 在 aptitude
(8) 中).
表 9.4. 系统日志分析软件列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
logwatch |
V:14, I:17 | 2276 | 用 Perl 写的日志分析软件,有好的输出 |
fail2ban |
V:109, I:122 | 2091 | 禁用造成多个认证错误的 IP |
analog |
V:3, I:103 | 3584 | web 服务器日志分析 |
awstats |
V:8, I:13 | 6910 | 强大和特性全面的 web 服务器日志分析 |
sarg |
V:2, I:2 | 843 | 生成 squid 分析报告 |
pflogsumm |
V:2, I:4 | 111 | Postfix 日志条目概要 |
syslog-summary |
V:0, I:1 | 30 | 总结 syslog 日志文件内容 |
fwlogwatch |
V:0, I:0 | 478 | 防火墙日志分析软件 |
squidview |
V:0, I:1 | 189 | 监控和分析 squid access.log 文件 |
swatch |
V:0, I:0 | 101 | 有正则表达式、高亮和曲线的日志文件查看器 |
crm114 |
V:0, I:0 | 1119 | Controllable Regex Mutilator 和垃圾邮件过滤 (CRM114) |
icmpinfo |
V:0, I:0 | 44 | 解释 ICMP 信息 |
注意 | |
---|---|
CRM114 提供语言架构来写模糊 过滤器,使用了 TRE 正则表达式库 。它主要在垃圾邮件过滤器中使用,但也能够用于日志分析。 |
尽管例如 more
(1) 和 less
(1) 这样的分页程序(参见 第 1.4.5 节 “分页程序”)和用于高亮和格式的自定义工具(参见 第 11.1.8 节 “高亮并格式化纯文本数据”)可以漂亮地显示文本数据,但通用的编辑器 (参见 第 1.4.6 节 “文本编辑器”)是用途最广的,且可定制性最高。
提示 | |
---|---|
对于 |
“ls -l
” 命令默认的时间和日期显示格式取决于语言环境(相关的值参见 第 1.2.6 节 “时间戳”)。“$LANG
” 变量将被首先考虑,但它会被导出的 “$LC_TIME
” 或 "$LC_ALL
"环境变量覆盖。
每个语言环境实际的默认显示格式取决于所使用的 C 标准库的版本(libc6
软件包),也就是说,不同的 Debian 发行版有不同的默认情况。对于 iso-formates,参见 ISO 8601。
如果你真的想自定义超出语言环境的时间和日期显示格式,你应该通过 “--time-style
” 参数或 “$TIME_STYLE
” 的值来设置时间样式值(参见ls
(1)、date
(1)、“info coreutils 'ls invocation'
”)。
表 9.5. 使用 时间样式值 的"ls -l
" 命令的时间和日期的显示例子
时间样式值 | 语言环境 | 时间和日期显示 |
---|---|---|
iso |
任何值 | 01-19 00:15 |
long-iso |
任何值 | 2009-01-19 00:15 |
full-iso |
任何值 | 2009-01-19 00:15:16.000000000 +0900 |
语言环境 |
C |
Jan 19 00:15 |
语言环境 |
en_US.UTF-8 |
Jan 19 00:15 |
语言环境 |
es_ES.UTF-8 |
ene 19 00:15 |
+%d.%m.%y %H:%M |
任何值 | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C 或 en_US.UTF-8 |
19.Jan.09 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
提示 | |
---|---|
你可以使用命令别名以避免在命令行中输入长的选项,(参见 第 1.5.9 节 “命令别名”): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
大部分现代终端的 shell 中 echo 能够使用 ANSI 转义字符来显示颜色(参见 “/usr/share/doc/xterm/ctlseqs.txt.gz
”)。
尝试下列例子
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
在交互式的环境下,命令的输出带颜色,能够给检查命令的输出带来便利。 我在我的"~/.bashrc
"里加入了下面内容.
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
在交互式命令中,使用别名来限制颜色的影响范围。导出环境变量 "export GREP_OPTIONS='--color=auto'
" 也有好处,这样能够让 less
(1) 之类的页面程序看到颜色。当使用管道到其它命令时,你想去掉颜色,上面列子 "~/.bashrc
" 中的内容,可以使用 "--color=auto
" 代替.
提示 | |
---|---|
在交互式的环境中,通过" |
你能够记录编辑器复杂的重复操作动作。
对于 Vim,请按下面操作。
"qa
": 开始记录输入字符到有名字的寄存器 "a
".
… 编辑器操作
"q
": 结束记录输入的字符。
"@a
":执行寄存器 "a
的内容".
对于 Emacs, 请按下面操作。
"C-x (
": 开始定义一个键盘宏.
… 编辑器操作
"C-x )
":结束定义一个键盘宏.
"C-x e
": 执行一个键盘宏.
有少量方法可以记录 X 应用程序的图像,包括 xterm
显示。
表 9.6. 图形图像处理工具列表
软件包 | 流行度 | 大小 | 屏幕 | 命令 |
---|---|---|---|---|
gnome-screenshot |
V:29, I:281 | 1134 | Wayland | GNOME 下的截屏程序 |
flameshot |
V:7, I:13 | 2590 | Wayland | 强大的截屏程序 |
gimp |
V:61, I:300 | 19827 | Wayland + X | GUI 菜单中的截屏 |
x11-apps |
V:29, I:461 | 2437 | X | xwd (1) |
imagemagick |
I:353 | 221 | X | import (1) |
scrot |
V:7, I:74 | 126 | X | scrot (1) |
有特定的工具可以通过 DVCS 的帮助来记录配置文件的变更和在 Btrfs 上制作系统快照。
表 9.7. 记录配置历史的软件包列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
etckeeper |
V:27, I:31 | 176 | 使用 Git(默认)、Mercurial 或 Bazaar(新)来保存配置文件和它们的元数据 |
timeshift |
V:3, I:5 | 3142 | 使用 rsync 或 BTRFS 快照的系统恢复工具 |
snapper |
V:2, I:3 | 2170 | Linux 文件系统快照管理工具 |
你也可以考虑本地脚本 第 10.2.3 节 “个人备份” 方案。
程序活动能够使用特殊的工具监控和控制。
表 9.8. 监控和控制程序活动工具列表
软件包 | 流行度 | 大小 | 说明 |
---|---|---|---|
coreutils |
V:898, I:999 | 17372 | nice (1): 用指定的调度优先权运行一个程序 |
bsdutils |
V:646, I:999 | 419 | renice (1): 调整一个目前在运行的进程的调度优先权值 |
procps |
V:743, I:999 | 1656 | "/proc " 文件系统工具: ps (1), top (1), kill (1), watch (1), … |
psmisc |
V:412, I:821 | 793 | "/proc " 文件系统工具: killall (1), fuser (1), peekfd (1), pstree (1) |
time |
V:12, I:214 | 129 | time (1):运行一个程序,并从时间消耗方面来报告系统资源的使用 |
sysstat |
V:160, I:182 | 1923 | sar (1), iostat (1), mpstat (1), …: linux 系统性能工具 |
isag |
V:0, I:4 | 117 | sysstat 的交互式的系统活动图 |
lsof |
V:388, I:944 | 451 | lsof (8): 使用 "-p " 选项列出被一个系统进程打开的文件 |
strace |
V:15, I:141 | 2367 | strace (1):跟踪系统调用和信号 |
ltrace |
V:1, I:19 | 363 | ltrace (1): 跟踪库调用 |
xtrace |
V:0, I:0 | 353 | xtrace (1):跟踪 X11 客户端和服务器端之间的通信 |
powertop |
V:11, I:210 | 672 | powertop (1):系统能耗使用信息 |
cron |
V:814, I:996 | 263 | 根据 cron (8) 后台守护进程(daemon)的调度运行一个进程 |
anacron |
V:404, I:475 | 107 | 用于非整天 24 小时运行系统的命令计划,类 cron |
at |
V:136, I:240 | 169 | at (1) 或 batch (1): 在一个特定的时间运行任务或在某一系统负载下运行 |
提示 | |
---|---|
|
显示 命令调用进程的时间消耗。
# time some_command >/dev/null real 0m0.035s # time on wall clock (elapsed real time) user 0m0.000s # time in user mode sys 0m0.020s # time in kernel mode
进程的调度优先级是被一个进程优先级值控制。
表 9.9. 调度优先级值列表
进程优先级值 | 调度优先级 |
---|---|
19 | 最低优先级进程 |
0 | 非常高的普通用户优先级进程 |
-20 | root 用户非常高的优先级进程 |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
在某些情况下,极端的进程优先级值会对系统造成伤害。小心使用这个命令。
在 Debian 系统上的 ps
(1) 命令同时支持 BSD 和 SystemV 特征,有助于识别静态的进程活动。
表 9.10. ps 命令样式列表
样式 | 典型的命令 | 特征 |
---|---|---|
BSD | ps aux |
显示 %CPU %MEM |
System V | ps -efH |
显示 PPID |
对于僵尸(死了的)子进程,你能够通过 "PPID
" 字段的父进程 ID 来杀死它们。
pstree
(1) 命令显示进程树。
Debian 系统上的 top
(1) 拥有丰富的特征,有助于识别进程有趣的动态行为。
它是一个交互式的全屏程序。你可以通过按"h"键来得到它的使用帮助,按"q"键来终止该程序。
你能够通过一个进程 ID(PID)来列出该进程所有打开的文件,例如,PID 为 1 的进程,使用下面的方式。
$ sudo lsof -p 1
PID=1 通常用于 init
程序.
你能够跟踪程序活动,使用strace
(1), ltrace
(1), xtrace
(1) 来跟踪系统调用和信号、库调用、X11 客户端和服务器端之间的通信。
跟踪 ls
命令的系统调用。
$ sudo strace ls
提示 | |
---|---|
使用在 /usr/share/doc/strace/examples/ 中发现的 strace-graph 脚本来生成一个好看的树形视图 |
你可以通过 fuser
(1) 来识别出使用文件的进程,例如,用下面的方式识别出 "/var/log/mail.log
" 由哪个进程打开。
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
你可以看到 "/var/log/mail.log
" 是由 rsyslogd
(8) 命令打开并写入。
你可以通过 fuser
(1) 来识别出使用套接字的进程,例如,用下面的方式识别出 "smtp/tcp
" 由哪个进程打开。
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
现在你知道你的系统运行 exim4
(8) 来处理连接到 SMTP 端口 (25)的 TCP 连接.
watch
(1) 使用固定间隔重新执行一个命令,并全屏显示输出。
$ watch w
显示哪些人登录到系统,每 2 秒钟更新一次。
通过匹配某些条件的文件来循环重复一个命令,有几种方法,例如,匹配全局模式"*.ext
".
Shell 循环方式(参见 第 12.1.4 节 “shell 循环”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
find
(1) 和 xargs
(1) 联合:
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find
(1) 使用 "-exec
" 选项并执行命令:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find
(1) 使用 "-exec
" 选项并执行一个短的 shell 脚本:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
上面的列子确保适当处理怪异的文件名(如包含空格)。 find
(1) 更多高级的用法,参见 第 10.1.5 节 “查找文件的语法”.
对于 命令行界面(command-line interface,CLI),$PATH
环境变量所指定的目录中第一个匹配相应名称的程序会被执行。参见 第 1.5.3 节 “"$PATH
" 变量”。
对于遵从 freedesktop.org 标准的 图形用户界面(graphical user interface,GUI),/usr/share/applications/
目录中的 *.desktop
文件给每个程序的 GUI 菜单显示提供了必要的属性。遵从Freedesktop.org xdg 菜单系统的每一个软件包,通过 "/usr/share/applications/"下 "*.desktop"提供的数据来安装它的菜单。 遵从 Freedesktop.org 标准的现代桌面环境,用 xdg-utils 软件包利用这些数据生成它们的菜单。参见"/usr/share/doc/xdg-utils/README"。
举个例子,chromium.desktop
文件中为 “Chromium 网络浏览器” 定义了相关属性,例如程序名 “Name”,程序执行路径和参数 “Exec”,所使用的图标 “Icon” 等等(参见 桌面配置项规范)。文件内容如下:
[Desktop Entry] Version=1.0 Name=Chromium Web Browser GenericName=Web Browser Comment=Access the Internet Comment[fr]=Explorer le Web Exec=/usr/bin/chromium %U Terminal=false X-MultipleArgs=false Type=Application Icon=chromium Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; StartupWMClass=Chromium StartupNotify=true
这是一个较为简单的说明。*.desktop
文件像下面那样被搜寻。
桌面环境设置 $XDG_DATA_HOME
和 $XDG_DATA_DIR
环境变量。举个例子,在 GNOME 3 中:
未设置 $XDG_DATA_HOME
。(将使用默认值 $HOME/.local/share
。)
$XDG_DATA_DIRS
被设置为 /usr/share/gnome:/usr/local/share/:/usr/share/
。
基准目录(参见 XDG Base Directory Specification)和应用程序
目录如下所示。
$HOME/.local/share/
→ $HOME/.local/share/applications/
/usr/share/gnome/
→ /usr/share/gnome/applications/
/usr/local/share/
→ /usr/local/share/applications/
/usr/share/
→ /usr/share/applications/
*.desktop
文件将按照这个顺序在这些 applications
目录中进行搜寻。
提示 | |
---|---|
要建立一个用户自定义的 GUI 菜单项,需要在 |
提示 | |
---|---|
相似地,如果在这些基准目录下的 |
提示 | |
---|---|
相似地,如果在 |
一些程序会被另一个程序自动启动。下面是自定义该过程的方法。
应用程序配置菜单:
GNOME3 桌面:“设置” → “系统” → “详细信息” → “默认应用程序”
KDE 桌面: "K" → "Control Center 控制中心" → "KDE Components 组件" → "Component Chooser 组件选择器"
Iceweasel 浏览器:“编辑” → “首选项” → “应用程序”
mc
(1):“/etc/mc/mc.ext
”
例如 “$BROWSER
”、“$EDITOR
”、“$VISUAL
” 和 “$PAGER
” 这样的环境变量(参见 environ
(7))
用于例如 “editor
”、“view
”、“x-www-browser
”、“gnome-www-browser
” 和 “www-browser
” 这样的程序的 update-alternatives
(1) 系统(参见 第 1.4.7 节 “设置默认文本编辑器”)
“~/.mailcap
” 和 “/etc/mailcap
” 文件的内容关联了程序的 MIME 类型(参见 mailcap
(5))
“~/.mime.types
” 和 “/etc/mime.types
” 文件的内容关联了 MIME 类型的文件扩展名(参见 run-mailcap
(1))
提示 | |
---|---|
|
提示 | |
---|---|
|
提示 | |
---|---|
为了在 GUI(图形用户界面)下运行例如 # cat /usr/local/bin/mutt-term < |
提示 | |
---|---|
GUI(图形用户界面)应用程序能够很容易的放在特定环境变量下执行,在它相应的 # cat /usr/local/bin/kitty < |
使用 kill
(1) 通过进程 ID 来杀死(发送一个信号)一个进程。
使用 killall
(1) 或 pkill
(1) 通过进程命令的名字或其它属性来做同样的事情。
表 9.11. kill 命令常用信号列表
信号值 | 信号名 | 操作 | 注释 |
---|---|---|---|
0 | --- | 没有信号发送(参见 kill (2)) |
检查进程是否运行 |
1 | SIGHUP | 终止进程 | 从终端断开连接(信号 挂起) |
2 | SIGINT | 终止进程 | 从键盘中断 (CTRL-C ) |
3 | SIGQUIT | 终止进程并触发 dump core | 从键盘退出 (CTRL-\ ) |
9 | SIGKILL | 终止进程 | 不可阻塞的 kill 信号 |
15 | SIGTERM | 终止进程 | 可被阻塞的终止信号 |
运行 at
(1) 命令来安排一次性的工作。
$ echo 'command -args'| at 3:40 monday
使用 cron
(8) 来进行定时任务安排。参见 crontab
(1) 和 crontab
(5).
你能够作为一个普通用户定时运行一个进程,比如, foo
使用 "crontab -e
" 命令创建一个 crontab
(5) 的文件 "/var/spool/cron/crontabs/foo
"。
这里是一个 crontab
(5) 文件的列子。
# use /bin/sh to run commands, no matter what /etc/passwd says SHELL=/bin/sh # mail any output to paul, no matter whose crontab this is MAILTO=paul # Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed) # run at 00:05, every day 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # run at 14:15 on the first of every month -- output mailed to paul 15 14 1 * * $HOME/bin/monthly # run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc: 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%% 23 */2 1 2 * echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1" 5 4 * * sun echo "run at 04:05 every Sunday" # run at 03:40 on the first Monday of each month 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
提示 | |
---|---|
对那些非连续运行的系统,安装 |
提示 | |
---|---|
对于定时系统维护脚本,你能够以root 账户定时运行,把这类脚本放入 " |
cron
后台守护进程(daemon)不存在时,Systemd 也有按时间计划运行程序的低级能力。例如, /lib/systemd/system/apt-daily.timer
和 /lib/systemd/system/apt-daily.service
建立每天的 apt 下载行动。参见 systemd.timer
(5) 。
按 Alt-SysRq (PrtScr)组合键跟一个字母按键,进行不可思议的系统应急控制。
表 9.12. 著名的 SAK 命令键列表
Alt-SysRq 之后的键 | 行为描述 |
---|---|
k |
kill 杀死在当前虚拟控制台上的所有进程 (SAK) |
s |
sync 同步刷新所有已经挂载的文件系统来避免数据损坏 |
u |
重新以只读方式挂载所有已挂载的文件系统 (umount) |
分享名称:【Debian参考手册】第 9 章 系统技巧
标题链接:http://www.shufengxianlan.com/qtweb/news41/339791.html 网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等 声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联 猜你还喜欢下面的内容
|