推荐自学网站:https://www.linuxprobe.com/
著名Linux学习书籍《Linux就该这么学》的官方网站,里面不仅有电子书,还有配套的工具下载,真的是linux系统的自学天堂。
本人不是Linux初学,但是通过该网站学习了更全面的linux系统知识,本人所书写的所有内容也是基于此网站,因此,不管是初学者还是巩固者,都可以收藏上面的网站进行学习。
echo
输出字符串:
[root@linuxprobe ~]# echo hello world
hello world
输出变量:
[root@linuxprobe ~]# echo $SHELL
/bin/bash
date
用于显示或设置系统的时间与日期
默认显示与格式化显示:
[root@linuxprobe ~]# date
Thu Sep 14 16:41:51 CST 2023
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2023-09-14 16:42:19
将系统的当前时间设置为2000年01月011日00点00分的date命令如下所示:
[root@linuxprobe ~]# date -s "20000101 00:00:00"
Sat Jan 1 00:00:00 CST 2000
timedatectl
同样是显示与设置时间的命令,可以显示世界时,RTC标准时,已经时区信息等。
查看系统时间与时区:
[root@linuxprobe ~]# timedatectl status
Local time: Sat 2000-01-01 00:07:17 CST
Universal time: Fri 1999-12-31 16:07:17 UTC
RTC time: Thu 2023-09-14 08:51:32
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
设置时区:
[root@linuxprobe ~]# timedatectl set-timezone Asia/Shanghai
设置日期:
[root@linuxprobe ~]# timedatectl set-time 2023-09-14
设置时间:
[root@linuxprobe ~]# timedatectl set-time 16:54
reboot
重启Linux系统,一般只有root账号才有权限。
poweroff
linux 关机命令,一般只有root账号才有权限。
wget
网络资源下载命令
wget的参数即作用:
- -b 后台下载模式
- -P 下载到指令目录
- -t 最大尝试次数
- -c 断点续传
- -p (注意小写,上面那个P是大写)下载页面所以资源,包括图片视频等。
- -r 递归下载
ps
linux系统中的进程状态:
- R(运行):进程正在运行或在运行队列中等待。
- S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
- D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
- Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
- T(停止):进程收到停止信号后停止运行
除了上面5种常见的进程状态,还有可能是高优先级(<)、低优先级(N)、被锁进内存(L)、包含子进程(s)以及多线程(l)这5种补充形式。
一般查询进程使用:
截图只是一部分,linux的进程是相当多的,而我们关注的地方在于它的字段解释:
pstree
用于以树状图的形式展示进程之间的关系,方便阅读进程关系,但是进程这么多还是看的遭心。
[root@linuxprobe ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─accounts-daemon───2*[{accounts-daemon}]
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daemon
├─boltd───2*[{boltd}]
├─colord───2*[{colord}]
├─crond
├─cupsd
├─dbus-daemon───{dbus-daemon}
├─dnsmasq───dnsmasq
├─firewalld───{firewalld}
├─fprintd───{fprintd}
├─fwupd───4*[{fwupd}]
├─gdm─┬─gdm-session-wor─┬─gdm-wayland-ses─┬─gnome-session-b─┬─gnome-she+
│ │ │ │ ├─gsd-a11y-+
│ │ │ │ ├─gsd-clipb+
│ │ │ │ ├─gsd-color+++
│ │ │ │ ├─gsd-datet+
│ │ │ │ ├─gsd-house+
│ │ │ │ ├─gsd-keybo+
│ │ │ │ ├─gsd-media+
│ │ │ │ ├─gsd-mouse+++
│ │ │ │ ├─gsd-power+++
│ │ │ │ ├─gsd-print+
│ │ │ │ ├─gsd-rfkil+
│ │ │ │ ├─gsd-scree+
│ │ │ │ ├─gsd-shari+
│ │ │ │ ├─gsd-smart+
│ │ │ │ ├─gsd-sound+++
│ │ │ │ ├─gsd-wacom+++
│ │ │ │ ├─gsd-xsett+
│ │ │ │ └─3*[{gnome+
│ │ │ └─2*[{gdm-wayland-ses}]
│ │ └─2*[{gdm-session-wor}]
│ ├─gdm-session-wor─┬─gdm-wayland-ses─┬─gnome-session-b─┬─gnome-she+
│ │ │ │ ├─gnome-sof+
│ │ │ │ ├─gsd-a11y-+
│ │ │ │ ├─gsd-clipb+
│ │ │ │ ├─gsd-color+++
│ │ │ │ ├─gsd-datet+
│ │ │ │ ├─gsd-disk-+
│ │ │ │ ├─gsd-house+
│ │ │ │ ├─gsd-keybo+
│ │ │ │ ├─gsd-media+
│ │ │ │ ├─gsd-mouse+++
│ │ │ │ ├─gsd-power+++
│ │ │ │ ├─gsd-print+
│ │ │ │ ├─gsd-rfkil+
│ │ │ │ ├─gsd-scree+
│ │ │ │ ├─gsd-shari+
│ │ │ │ ├─gsd-smart+
│ │ │ │ ├─gsd-sound+++
│ │ │ │ ├─gsd-wacom+++
│ │ │ │ ├─gsd-xsett+
│ │ │ │ ├─tracker-m+
│ │ │ │ ├─tracker-m+
│ │ │ │ └─3*[{gnome+
│ │ │ └─2*[{gdm-wayland-ses}]
│ │ └─3*[{gdm-session-wor}]
│ └─2*[{gdm}]
├─geoclue───2*[{geoclue}]
├─gnome-keyring-d───3*[{gnome-keyring-d}]
├─gsd-printer───3*[{gsd-printer}]
├─gssproxy───5*[{gssproxy}]
├─2*[ibus-x11───2*[{ibus-x11}]]
├─irqbalance───{irqbalance}
├─ksmtuned───sleep
├─libvirtd───16*[{libvirtd}]
├─lsmd
├─mcelog
├─polkitd───11*[{polkitd}]
├─rhsmcertd
├─rhsmd
├─rngd───{rngd}
├─rpcbind
├─rsyslogd───2*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─smartd
├─sshd
├─sssd─┬─sssd_be
│ └─sssd_nss
├─sssd_kcm
├─systemd─┬─(sd-pam)
│ ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ │ └─3*[{at-spi-bus-laun}]
│ ├─at-spi2-registr───2*[{at-spi2-registr}]
│ ├─dbus-daemon───{dbus-daemon}
│ ├─dconf-service───2*[{dconf-service}]
│ ├─evolution-addre─┬─evolution-addre───5*[{evolution-addre}]
│ │ └─4*[{evolution-addre}]
│ ├─evolution-calen─┬─evolution-calen───8*[{evolution-calen}]
│ │ └─4*[{evolution-calen}]
│ ├─evolution-sourc───3*[{evolution-sourc}]
│ ├─gnome-shell-cal───5*[{gnome-shell-cal}]
│ ├─gnome-terminal-─┬─bash───pstree
│ │ └─3*[{gnome-terminal-}]
│ ├─goa-daemon───3*[{goa-daemon}]
│ ├─goa-identity-se───3*[{goa-identity-se}]
│ ├─gvfs-afc-volume───3*[{gvfs-afc-volume}]
│ ├─gvfs-goa-volume───2*[{gvfs-goa-volume}]
│ ├─gvfs-gphoto2-vo───2*[{gvfs-gphoto2-vo}]
│ ├─gvfs-mtp-volume───2*[{gvfs-mtp-volume}]
│ ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
│ ├─gvfsd───2*[{gvfsd}]
│ ├─gvfsd-fuse───5*[{gvfsd-fuse}]
│ ├─ibus-portal───2*[{ibus-portal}]
│ ├─pulseaudio───{pulseaudio}
│ ├─tracker-store───4*[{tracker-store}]
│ └─xdg-permission-───2*[{xdg-permission-}]
├─systemd─┬─(sd-pam)
│ ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ │ └─3*[{at-spi-bus-laun}]
│ ├─at-spi2-registr───2*[{at-spi2-registr}]
│ ├─dbus-daemon───{dbus-daemon}
│ ├─ibus-portal───2*[{ibus-portal}]
│ ├─pulseaudio───{pulseaudio}
│ └─xdg-permission-───2*[{xdg-permission-}]
├─systemd-journal
├─systemd-logind
├─systemd-machine
├─systemd-udevd
├─tuned───3*[{tuned}]
├─udisksd───4*[{udisksd}]
├─upowerd───2*[{upowerd}]
├─vmtoolsd───{vmtoolsd}
├─vmtoolsd───3*[{vmtoolsd}]
└─wpa_supplicant
top
Linux中“强化版的Windows任务管理器”
要想读懂这个 “任务管理器”,必须要读懂前面五行:
- 第1行:系统时间、运行时间、登录终端数、系统负载(3个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
- 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。
- 第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
- 第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
nice
调整进程的优先级
在top命令输出的结果中,PR和NI值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高。在日常的生产工作中,可以将一些不重要进程的优先级调低,让紧迫的服务更多地利用CPU和内存资源,以达到合理分配系统资源的目的。例如将bash服务的优先级调整到最高:
[root@linuxprobe ~]# nice -n -20 bash
pidof
查询某个指定服务的进程的PID号
每个PID号都是唯一的,用来区分不同的进程。
查询sshd的PID:
[root@linuxprobe ~]# pidof sshd
1070
kill
杀死指定进程。
上一个命令我们查出了sshd的PID为1070,我们尝试kill sshd服务:
[root@linuxprobe ~]# kill 1070
有一些进程是没办法普通kill,此时可以添加-9参数,表示最高级别的强制杀死:
[root@linuxprobe ~]# kill -9 1070
再次查询sshd的PID:
发现查询不到pid,因为已经被我们杀死了。
killall
杀死指定名称的服务下所有进程
查询并且杀死httpd服务的PID:
[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]#