警告!!
Linux是一个非常敏感的操作系统,若删除文件错误,很容易造成系统崩溃。
fedora23没有/var/log/messages
不是没有messages这个文件,而是 从 fc core 23开始系统已经做了调整和改变:
不再使用/var/log/messages这个文件, 而是专门用一个 命令: journalctl 来控制/显示 日志信息:
这里要注意区别两个英文单词:
- journal: 是 "杂志/ 日志, 日记 log/notation等的意思
- journey: 才是 旅途旅行 的意思
两个单词 的前面都是 journ- , 所以容易混淆, journal, journey...
所以, journalctl: journal -control, 就是 日志控制的意思!
关于 journalctl 日志控制的 过滤选项?? 可以通过查看journal -h 命令来仔细查看!!
-u : 要只是查看指定的服务 日志 journalctl -u mariadb.service
-f: fresh, 查看最新更新的日志信息;
-n : 指定最后的n行日志: 默认的是最后的10行, -n 20 最后的20行
--since HHHH-MM-DD hh:mm:ss
--until : 指定 日志的起止 时间
-r: 反序, 最新的在前面
-k: 只显示 内核的日志信息
top命令中 可以 接受 从 a 到 z的 单字符命令: top和ps的区别是: ps是静态的, 当前这一瞬间的进程状态, 而top是 动态的, 动态地查看进程的情况, 包括用户user, cpu和mem, 是哪个命令的使用情况等.
- f: 表示 fields 字段, 用来 描述可以 top 显示 的字段, 可以自定义 要显示的字段和顺序
- k: 可以直接在top下查看到pid, 从而可以直接kill掉, 发送的信号有 -9, -15
- u或U: 查看 哪个用户的
- 在启动top命令的时候, 使用 -d 表示 延迟多长时间, 默认的是每打印一次 延时 1秒; -n是 top打印使用情况 多少次, 默认的是1000次.
- 这个top命令, 类似于win下的"性能监视器"
- 1: 数字1, 可以显示多核cpu的每个cpu的使用情况
- 启动时使用 top -p pids 使用-p选项将显示指定pid的进程的动态使用情况.
top命令将独占前台, 其他命令将不能使用前台, 除非用户退出top命令
top命令的负载?
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。
重要的是要搞懂 top命令显示的名行的意思:
%Cpu(s) 表示的是 cpu占用的百分比情况: 其中: us表示 user space用户空间, 即用户所使用的cpu百分比; sy 表示 内核占用的cpu,
ni : nice表示 改变了优先级的进程 所占用的cpu百分比, 主要看id: idle表示 空闲剩余cpu百分比;
hi和si: 表示 hardware interrupts 硬件中断, si表示 software 软件中断 (软中断)
wa 表示 I/O 等待的cpu百分比
参考: https://blog.csdn.net/gxiaop/article/details/55096686
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心,
对于内存监控,在top里我们要时刻监控第五行 swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
关于nice值的理解?
- 是和 优先级PR: priority 有关的一个值: pr表示 进程被执行的优先级, 可能有多个进程都要执行 那么谁先谁后呢? 根据PR 吧: PR越小, 优先级越高, 也就是 进程越先被执行, 就像我们买票 排队派次序一样, 排在第一位的肯定优先级最高, 最先买.
但是, pr也不是一直不变的, 是可以被调整的, 这个调整值就由 nice来调整. 系统内核 是可以 根据实际情况来作调整的吧! - Nice值的大小从 -20 到19, 而调整后的优先级: PR(new) = PR(old) + Nice值, 因此, nice值越小, 越为负, 那么 新的PR值就越小, 那么优先级就越高! 越先!
Nice值表示一个人的 品格的高低, 如果这个值越高, 就说明这个进程的 "品格" 越高, 那么它的优先级就越低, 就是把宝贵的cpu都无私地让给其他进程了
在LINUX系统中,Nice值的范围从-20到+19(不同系统的值范围是不一样的),正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。
参考:https://blog.csdn.net/longdel/article/details/7317511
在通常情况下,子进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。 对nice值一个形象比喻,假设在一个CPU轮转中,有2个runnable的进程A和B,如果他们的nice值都为0,假设内核会给他们每人分配1k个cpu时间片。但是假设进程A的为0,但是B的值为-10,那么此时CPU可能分别给A和B分配1k和1.5k的时间片。故可以形象的理解为,nice的值影响了内核分配给进程的cpu时间片的多少,时间片越多的进程,其优先级越高,其优先级值(PRI)越低。%nice,就是 改变过优先级的进程( 被改变的时间片部分) 的占用CPU的(时间片) 百分比,如上例中就是0.5k/2.5k=1/5=20%。
- 修改nice的命令就是 nice 和 renice(正在运行的进程)
调整firefox占用cpu和mem达100%? 优化ff?
参考: https://support.mozilla.org/zh-CN/kb/%E5%AE%89%E5%85%A8%E6%A8%A1%E5%BC%8F
火狐扩展和主题的故障解决方法
- 很多时候 是由于 扩展或 主题 造成的cpu和内存使用过大 (有些插件 可能会 严重占用 cup? )? 判断是主题或扩展引起的, 是 先 关闭/disabled extension and themes temporarily and start firefox in safe mode.
firefox --safe-mode
linux中的所有gui程序都由对应的 命令启动, 而且都有对应的 help, 都可以指定 对应的 参数的 , 比如: firefox [options] [url] 等等 - 可以看到在安全模式下, 同时打开很多个 tab, 内存和cpu的使用 都保持在较小的合理范围内. 所以基本上可以确定 cpu和内存使用很大的原因 是由 扩展造成的 ,即哪个block image/flash/scripts 造成的.
- 如果是扩展造成的问题: 可以升级扩展(新的扩展可能解决问题了), 修改扩展的设置, 等等.
- 启用 硬件加速, 可以减轻 ff 对 cpu的占用 压力! 什么叫硬件加速? 除了cpu由系统内存外 , 显卡和声卡的处理方式 跟cpu类似, 他们 由自己的对音频/视频的处理器(处理芯片, 对声音和视频进行解压/处理/调节/后处理/渲染调节亮度-缩放-调节gamma等的芯片电路, 即常说的 GPU APU ) 和他们自己带有的内存存储器(即显存和声存, 因为gpu和apu要处理数据的时候要有自己的处理存放场所, 不能美时每刻都到系统内存去取东西数据吧). 如果没有硬件加速, 那么声音和视频的处理 都都要由cpu来处理, 这个一个是让cpu负荷很大, 不能让cpu处理更多的任务, 另一个是, 把专门处理图像视频声音的电路集成到cpu, 显得不划算. 因为cpu的主要专长是处理多任务. 所以 我们把 具有很强的专业性的处理功能(音频/视频处理) , 从cpu中剥离出来, 专门交给gpu和apu, 让他们来分担一下cpu的工作, 他们之间 是通过 总线 来交换数据的. (首先cpu从硬盘上读取压缩的音视频内容, 到 系统内存, 由分离器 将音频和视频分开, 然后交给gpu和apu, 拷贝到 gpu和apu的显存和声存中, 这之后 cpu就去忙别的了, 剩下的工作就由 gpu和 apu去做, cpu只是定期查询一下, 当它们处理完了, 声音就去播放, 视频就进行显示, 这之间 cpu只是管理一下, 并不真的去实现,并不自己去做) 像这种 由gpu和apu进行处理声音和视频的处理就叫做 硬件加速.
- 硬件加速需要满足 条件: 硬件要支持, os操作系统要支持, 运行的相关软件要能支持. 比如这里的 firefox 开启硬件加速, 就说明 ff软件是支持 hardware acceleration的
禁用abrt服务? 会不会导致系统不能被启动?
[lee@localhost ~]$ systemctl list-units | grep 'abrt'
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
- 禁用软件自动更新? 禁用 packagekit服务?
[lee@localhost ~]$ systemctl list-units | grep 'packagekit'
packagekit.service loaded active running PackageKit Daemon
[lee@localhost ~]$ systemctl disable packagekit
chattr和lsattr
-
只有root用户才有权限 运行chattr
-
当给目录设置 +a 属性时, 只能向 目录中 写入内容/文件, 但是 不能从目录中 删除或 改名文件 , 主要适用于 日志目录
-
当给 文件设置 +i属性时, 就不能对文件作 任何修改: 包括删除/改名, 修改文件内容. 这个 +i就是 给文件设置 onlyread 属性(只读)
-
chattr 是比chmod(设置文件的权限) 更严格 , 更底层的 安全设置. 比如当重要文件不允许修改时 +i, 日志文件 +a
-
+a目录 不适合 给 四种 目录设置: ( /, /dev, /tmp, /var)
-
linux中的计算器命令: bc命令
basic calculator 基本计算器, 或better calculator(更好的/或者说是 改进的计算器)
两种用法: 一是交互式环境的用法: 二是使用 echo '1+2; 2+3' | bc
tty:
因为个人计算机从 小型计算机(很早的) 变型而来的, 所以 很多 东西(术语) 是从 小型机沿用 过来的.
真正的tty 是: teletypewriter: 电传打字机, 真的是通过 电传机 来传递的
而从前的磁盘机, 的盘片 并不是 密封的, 而是类似于 唱片机那样的, 将磁盘 mount放到 一个 旋转的 马达 仓中, 所以叫 mount.
============================================
CST: china standard time 中国标准时间 , 也就是北京时间.
日志文件 是记录在 /var/log/journal/9a..../.....中的 , 但是 这些日志 内容 都是 不 可读的, 因为他们 是被加密了/ 被压缩了的. 具体的journal 日志配置文件是在 :
/etc/systemd/journald.conf这个文件中. 日志的显示 是 由 journalctl 从这些被压缩的日志记录文件中 读取 处理后 再显示出来的.
为什么配置了 systemctl disable packagekit
后, packagekit 仍然显示为 runnign?
- 但是, 查看 systemctl is-enable packagekit 显示的结果是 static: 说明 , 虽然该 服务 仍然在运行, 但是 已经不能 开机自启动了, 因为(我们本身并没有 stop 掉这个服务.
关于 static的解释是:
使用命令 systemctl is-enabled postfix.service 得到的值可以是enable、disable或static,这里的 static 它是指对应的 Unit 文件中没有定义[Install]区域,因此无法配置为开机启动服务。
- 可以 过滤 systemctl的 显示类型:
systemctl --type=service
To show all installed unit files use 'systemctl list-unit-files'.
systemctl --failed 显示已经 失败的unit
systemctl是系统控制工具, 相当于 win的控制面板, 用来 控制 整个系统相关的东西: 包括: 服务 , 设备, mount, timer , target等等.
禁用软件更新, 可以 通过 禁用仓库 来 实现吗?
**dnf 仓库分为 稳定仓库, 和 该仓库的测试仓库和 调试仓库. 一般启用 仓库的稳定库. dnf命令列出的是, 这个命令的 主要命令: list of main commands
, 并不是 全部命令, 使用 dnf config-manager --set-enabled/--set-disabled [repo_name] 来启用或 禁用 一个仓库 **
- 注意这里的set-enabled/disabled是 完成时态, 加ed了的
- 这里的仓库 , 应该 是 **repo id **, 是id, 不是具体 的 repo name , 仓库的id repo id 就是每一个仓库文件中的 加 中括号括起来的那个, 比比如 [fedora], 比如: [updates]
理解 mount和挂载的道理?
操作系统 的kernel 目录管理系统, 只能理解 符号, 目录, /foo, /bar等这些符号, 并不能 直接理解 磁盘/ 分区等这些硬件
磁盘/分区, 这些 硬件底层的东西, 需要驱动 来获得,
所以 驱动 读取到的 磁盘/分区等内容, 要 挂载到 目录等符号上, 才能被shell等 所识别和管理, 将磁盘/分区 mount 到 目录上的过程, 就像 地瓜 长在地下的过程, 地瓜是 底层的东西, 是长在 地底下的, 相当于 磁盘/分区, 藤藤是长在地面上的,相当于目录结构 /, /var, /etc等, 我们人相当于操作系统, 人要通过藤藤 来把地瓜拉起来, 就相当于os 要通过 目录结构才能操作 磁盘和分区.
===========================
tree命令 也有很多选项的: 使用 --help 可以显示
- -d 只显示目录
- -h 显示K, M 等可读性的大小
- -L N , 显示目录的深度
- -f 显示完整的路径
- 可以重定向到文件
firefox的配置文件在哪里?
- 通常, 应用程序的 个人配置文件 都是 放在 家目录 ~ / 下的 , 并以 点号开头
- ff的个人配置文件 在 ~/.mozilla下, 使用 tree -d -L 3 可以看到 结构:
~/.mozilla/firefox 下 由 profiles.ini 配置文件, 里面就说了 具体的配置在 哪里: 是在一个 gnx....default这样的随即字符组成的.default目录中, 这个目录中 就包含所有的内容:
~/.mozilla/firefox/gnx.../ prefs.js(是about:config配置中的内容,) 其他很多内容,比如浏览历史, 书签, cookies等 都是放在 places.sqlite , bookmarks.sqlite, permission.sqlite, cookies.sqlite 等数据库中的.
ff 占用cpu过高的另一个重要原因, 可能是 : 保存个别网页/ 指定网页的设置 的 配置文件: content-prefs.sqlite (内容设置) 文件损坏, 因此, 删除这个 content-prefs.sqlite 文件 能使cpu的占用 下降. 虽然 原来对 网页的特别设置会重置!
[lee@localhost gnx2q659.default]$ ls content-prefs.sqlite
content-prefs.sqlite
[lee@localhost gnx2q659.default]$ pwd
/home/lee/.mozilla/firefox/gnx2q659.default
======================
关于top的一些问题?
- 为什么cpu的占用率会大于100%? 是因为是多核cpu, 每个cpu的使用量加起来的值, 所以 可能是大于100%的, 如果是4核, 100% 的使用率也只有 平均的 25%
- virt, res, shr data 这几个数字,表示的是 内存的占用量: virt是这个进程总的占用的 虚拟内存空间的大小, res(resident)是 常驻内存的空间, shr(share)是共享库占用的内存空间, data是真实的数据 占用的内存空间, 主要是看 res这个值???
- load average 平均负载, 相当于 cpu的 同时运行的进程数: 参考
https://www.cnblogs.com/erisen/p/6027748.html
相当于并行的马路数, 这三个1分钟, 5分钟, 15分钟的平均数值一定要小于 cpu个数核数, 要保证性能, 则要小于 前面那个数值的 .7 : 比如 单个cpu 4核: 应该 小于 140.7 =2.8 平均负载要小于 2.8
======================
bc 设置精度的命令
- 在交互下就可以设置
- 命令是: scale=2, ibase=10 ; obase=10 是设置 输入输出 进制.
=====================
systemd 是一种启动方式, 是一种比inittab 更高效的启动方式, 它创建了很多 *.target, 这些target是一些片段和模块, 类似与函数,可以被多个程序调用一样,这些target可以被不同的模式和 target所包含/调用/组合/ 依赖. 从而更高效和灵活.
而 systemctl是 服务管理的工具, 是service和chkconfig的组合
systemd 各服务间基于依赖关系进行精密控制。
检视和控制systemd的主要命令是systemctl。
systemctl 是系统管理, 它管理的范围主要包括: *.device, .mount, .service, .target, .timer以及他们之间的先后/依赖关系等.
可以查看 systemctl 的 -h帮助, 包括: [options] 和 commands, 跟其他 dnf, git 等命令的使用方法差不多
===================================
如何禁用 后台软件自动更新?
参考: https://blog.csdn.net/jiaweihao/article/details/17736489
但是在 fc23中的dconf-editor的 schema: org.gnome.settings-damon.plugins中居然没有 update这个 子schema.
- gsettings list-schemas列出所有的schema注册表键名, list-children 会列出某个schema的所有子schema. list-keys 列出某个schema的所有子keys. 而set/get/等是获取或设置某个key的值::::: 只有key才可以设置/改变它的值, 而schema是注册表键名, 是不可以增加/删除/修改的!
而 list-recursively 会 递归地 列出某个 schema下的所有 子schema对应的keys和values.
要取消更新通知, 可以将下面这个schema: org.gnome.desktop.notifications的 键key: application-children的值value设置为 默认值, 即为i空值, 那么所有的通知都不会显示, 但是并不是 这些软件更新 不存在了!
dconf-editor要配合 gsettings 来使用, 因为有时候, 你要找到某个 schema和其下的某个 key时, 用图形界面时不好找, 那么 用gsettings 的 grep功能就很方便了, 比如要设置/或取消ctrl键显示 鼠标位置时:
[root@192 etc]# gsettings list-schemas |grep 'mouse'
org.gnome.desktop.a11y.mouse
org.gnome.mousetweaks
org.gnome.desktop.peripherals.mouse
org.gnome.settings-daemon.plugins.mouse
org.gnome.settings-daemon.peripherals.mouse // 找到, 就是这个
[root@192 etc]#
===========================================
事实上, 调整, 安装好fc23 后, 对系统进行微调配置/设置fc23的主要 的就是 这两个工具: dconf-editor(相当于注册表, 在 sundry分类) 和 gnome-tweak-tool (这个是对系统和应用进行设置的工具, 是放在 utilities工具中的)
要终极禁用系统软件后台更新, 可以直接 将 packagekit.service 服务禁止开机启动了!!! su -c 'systemctl disable packagekit.service'
但是还是不管用, 那么就去修改 /usr/lib/systemd/system/下的 packagekit.service 服务和 package-offline-update.service服务 (文件units) 更改者两个units文件名称:
[root@192 system]# mv packagekit
packagekit-offline-update.service packagekit.service
[root@192 system]# mv packagekit.service packagekit.service.backup
[root@192 system]# mv packagekit-offline-update.service packagekit-offline-update.service.backup
packagekit 是什么?
packagekit是一个 "企图" 跨平台, 跨发行版的 包管理工具, 它可以兼容: rpm, yum, apt, pkg等等.
所以, 要安装 gnome-packagekit 和 gnome-packagekit-installer 这两个包,
事实上, table元素, 除了表示表格的呈现外, 也确实常常 可以用来 进行布局 ... 其中它的 thead>tr>th和 tbody>tr>td等是具有 语义的作用, 虽然 thead和 tbody 在很多时候可以不写.而且 thead并不是必须的, 如果没有表头, 或不需要 表头, 就不用写thead.
使用 tbody 可以事先 呈现 表格主体数据部分, 而不必等到 整个表格都下载完了才显示, 这个对于 喜欢用table来布局网页的尤其重要
======================================
runlevel
init 3
ctrl+alt+f1~6, ctrl_alt+f78
https://wenku.baidu.com/view/b861ed9c69dc5022aaea00c2.html
target: 就是runlevel文件。
从 fedora16 开始 就不再使用initab 而是使用target来配置启动级别了,
-
multi-user.target, analogous to runlevel 3
-
graphical.target.
target:启动的对象,启动(服务的)对象
开发Systemd的主要目的就是减少系统引导时间和计算开销
Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进行交互。Systemd会创建新进程并为每个进程分配一个控制组(cgroup)。处于不同控制组的进程之间可以通过内核来互相通信。systemd处理开机启动进程的方式非常漂亮,和传统基于init的系统比起来优化了太多。让我们看下Systemd的一些核心功能
查看linux机器是32位还是64位的方法:
file /sbin/init 或者file /bin/ls
当登陆一个linux系统时,bash shell依次会从4个不同的地方启动文件里的读取命令,顺序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile
/lib 系统级别,系统的lib
/usr/lib 程序级别,二进制安装包的lib
/usr/local/lib 用户自定义级别,用户编译的一般放这里
在ubuntu下,直接通过apt-get安装的软件一般会在/usr下面,自己编译安装的软件(或者通过一些其他的非官方途径)会在/usr/local下面 其实是普通的lib,文艺的lib和2b的lib的差别