1、查看某个普通用户目前所有的进程;

bernard@aqua:~$ top -u bernard

图片说明

按q退出

2、找出普通用户下的update-notifier进程(若没有,可换其它的),并将其kill掉;

bernard@aqua:~$ ps -aux | grep dolphin # 查看所有dolphin进程
bernard     2469  0.9  2.2 1101396 89172 ?       Sl   16:58   0:00 /usr/bin/dolphin
bernard     2487  0.0  0.5 116552 22332 ?        S    16:58   0:00 tags.so [kdeinit5] tags local:/run/user/1000/klauncherjzByOZ.1.slave-socket local:/run/user/1000/dolphinAWOjRc.1.slave-socket
bernard     2488  0.0  0.5 263972 23468 ?        Sl   16:58   0:00 trash.so [kdeinit5] trash local:/run/user/1000/klauncherjzByOZ.1.slave-socket local:/run/user/1000/dolphinQMPiXi.2.slave-socket
bernard     2489  0.0  0.4 110948 19120 ?        S    16:58   0:00 file.so [kdeinit5] file local:/run/user/1000/klauncherjzByOZ.1.slave-socket local:/run/user/1000/dolphinsdfqNc.3.slave-socket
bernard     2492  0.0  0.4 111032 19152 ?        S    16:58   0:00 file.so [kdeinit5] file local:/run/user/1000/klauncherjzByOZ.1.slave-socket local:/run/user/1000/dolphinzpZyxG.4.slave-socket
bernard     2493  0.0  0.4 110948 19120 ?        S    16:58   0:00 file.so [kdeinit5] file local:/run/user/1000/klauncherjzByOZ.1.slave-socket local:/run/user/1000/dolphinITPLuL.5.slave-socket
bernard     2599  0.0  0.0  12072   904 pts/1    S+   16:59   0:00 grep --color=auto dolphin
bernard@aqua:~$ killall dolphin # 杀死所有dolphin进程

图片说明

3、列出系统下所有用户运行bash进程的详细信息,并尝试kill不同用户的bash进程,在kill哪个进程时会关闭终端?它跟其它bash进程显示有何不同?

bernard@aqua:~$ ps -aux | grep bash
bernard     2126  0.0  0.1  14188  5296 pts/1    Ss   16:53   0:00 /bin/bash
bernard     2807  0.0  0.0  12072   840 pts/1    S+   17:02   0:00 grep --color=auto bash
bernard@aqua:~$ kill -9 2807
bash: kill: (2807) - No such process
bernard@aqua:~$ kill -9 2126


警告:程序“/bin/bash”崩溃。

当我们切换到root用户下

bernard@aqua:~$ su root
Password: 
root@aqua:/home/bernard# ps -aux | grep bash
bernard     3007  0.0  0.1  14188  5052 pts/1    Ss   17:05   0:00 /bin/bash
root        3026  0.0  0.1  13152  4068 pts/1    S    17:05   0:00 bash
root        3052  0.0  0.0  12072   912 pts/1    S+   17:05   0:00 grep --color=auto bash
root@aqua:/home/bernard# kill -9 3026
Killed
bernard@aqua:~$ su root
Password: 
root@aqua:/home/bernard# ps -aux | grep bash
bernard     3007  0.0  0.1  14188  5132 pts/1    Ss   17:05   0:00 /bin/bash
root        3088  0.0  0.1  13152  4164 pts/1    S    17:06   0:00 bash
root        3121  0.0  0.0  12072   912 pts/1    S+   17:06   0:00 grep --color=auto bash
root@aqua:/home/bernard# kill -9 3121
bash: kill: (3121) - No such process
root@aqua:/home/bernard# kill -9 3007
root@aqua:/home/bernard# 


警告:程序“/bin/bash”崩溃。

Hangup

值得注意到是,我使用到系统kubuntu的桌面系统基于kde而非gnome,所以console也是kconsole而非gnome-console,所以在进程行为上会有一些差异

接下来我们在root模式下操作

bernard@aqua:~$ su root
Password: 
root@aqua:/home/bernard# ps -aux | grep bash
bernard     3007  0.0  0.1  14188  5052 pts/1    Ss   17:05   0:00 /bin/bash
root        3026  0.0  0.1  13152  4068 pts/1    S    17:05   0:00 bash
root        3052  0.0  0.0  12072   912 pts/1    S+   17:05   0:00 grep --color=auto bash
root@aqua:/home/bernard# kill -9 3026
Killed
bernard@aqua:~$ su root
Password: 
root@aqua:/home/bernard# ps -aux | grep bash
bernard     3007  0.0  0.1  14188  5132 pts/1    Ss   17:05   0:00 /bin/bash
root        3088  0.0  0.1  13152  4164 pts/1    S    17:06   0:00 bash
root        3121  0.0  0.0  12072   912 pts/1    S+   17:06   0:00 grep --color=auto bash
root@aqua:/home/bernard# kill -9 3121
bash: kill: (3121) - No such process
root@aqua:/home/bernard# kill -9 3007
root@aqua:/home/bernard# 


警告:程序“/bin/bash”崩溃。

可以发现,只有Ss才会关闭本窗口,而S+是root进程,关闭会导致退出root下的console,S+猜测是渲染相关到进程,kill它时系统返回无此进程,猜测是渲染保护。

图片说明

4、找出任意进程的父进程具体是哪个进程?

bernard@aqua:~$ ps -ef | grep dolphin
bernard    31772    1246  4 17:16 ?        00:00:00 /usr/bin/dolphin
bernard    31789    1144  0 17:16 ?        00:00:00 tags.so [kdeinit5] tags local:/run/user/1000/klauncherkRtGZb.1.slave-socket local:/run/user/1000/dolphinVdoInQ.1.slave-socket
bernard    31790    1144  0 17:16 ?        00:00:00 trash.so [kdeinit5] trash local:/run/user/1000/klauncherkRtGZb.1.slave-socket local:/run/user/1000/dolphinnkrvJc.2.slave-socket
bernard    31791    1144  0 17:16 ?        00:00:00 file.so [kdeinit5] file local:/run/user/1000/klauncherkRtGZb.1.slave-socket local:/run/user/1000/dolphiniBNBKh.3.slave-socket
bernard    31794    1144  0 17:16 ?        00:00:00 file.so [kdeinit5] file local:/run/user/1000/klauncherkRtGZb.1.slave-socket local:/run/user/1000/dolphinRJgexU.4.slave-socket
bernard    31795    1144  0 17:16 ?        00:00:00 file.so [kdeinit5] file local:/run/user/1000/klauncherkRtGZb.1.slave-socket local:/run/user/1000/dolphinzIKOyh.5.slave-socket
bernard    31812   31759  0 17:16 pts/1    00:00:00 grep --color=auto dolphin
bernard@aqua:~$ pstree -s 31812 -s
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─acpid
        ├─agent───2*[{agent}]
        ├─at-spi-bus-laun─┬─dbus-daemon
        │                 └─3*[{at-spi-bus-laun}]
        ├─avahi-daemon───avahi-daemon
        ├─bluetoothd
        ├─cron
        ├─cups-browsed───2*[{cups-browsed}]
        ├─cupsd
        ├─2*[dbus-daemon]
        ├─fcitx───{fcitx}
        ├─fcitx-dbus-watc
        ├─fwupd───4*[{fwupd}]
        ├─gmenudbusmenupr───2*[{gmenudbusmenupr}]
        ├─haveged
        ├─irqbalance───{irqbalance}
        ├─kaccess───2*[{kaccess}]
        ├─kdeconnectd───3*[{kdeconnectd}]
        ├─kded5───7*[{kded5}]
        ├─kdeinit5─┬─4*[file.so]
        │          ├─klauncher───2*[{klauncher}]
        │          ├─tags.so
        │          └─trash.so───2*[{trash.so}]
        ├─2*[kerneloops]
        ├─ksmserver─┬─DiscoverNotifie───3*[{DiscoverNotifie}]
        │           └─2*[{ksmserver}]
        ├─kwin_x11───13*[{kwin_x11}]
        ├─networkd-dispat
        ├─org_kde_powerde───6*[{org_kde_powerde}]
        ├─packagekitd───2*[{packagekitd}]
        ├─plasmashell─┬─dolphin───8*[{dolphin}]
        │             ├─firefox─┬─Privileged Cont───25*[{Privileged Cont}]
        │             │         ├─2*[Web Content───25*[{Web Content}]]
        │             │         ├─Web Content───17*[{Web Content}]
        │             │         ├─WebExtensions───22*[{WebExtensions}]
        │             │         ├─plasma-browser-───2*[{plasma-browser-}]
        │             │         └─72*[{firefox}]
        │             ├─konsole─┬─bash───pstree
        │             │         └─6*[{konsole}]
        │             └─14*[{plasmashell}]
        ├─polkit-kde-auth───4*[{polkit-kde-auth}]
        ├─polkitd───2*[{polkitd}]
        ├─rsyslogd───3*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─sddm─┬─Xorg───20*[{Xorg}]
        │      ├─sddm-helper───startplasma-x11─┬─ssh-agent
        │      │                               └─{startplasma-x11}
        │      └─{sddm}
        ├─smartd
        ├─start_kdeinit
        ├─systemd─┬─(sd-pam)
        │         ├─dbus-daemon
        │         ├─dconf-service───2*[{dconf-service}]
        │         ├─kactivitymanage───5*[{kactivitymanage}]
        │         ├─kglobalaccel5───2*[{kglobalaccel5}]
        │         ├─kscreen_backend───2*[{kscreen_backend}]
        │         ├─obexd
        │         ├─pipewire───{pipewire}
        │         ├─pipewire-media-───{pipewire-media-}
        │         └─pulseaudio─┬─gsettings-helpe───3*[{gsettings-helpe}]
        │                      └─3*[{pulseaudio}]
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-resolve
        ├─systemd-timesyn───{systemd-timesyn}
        ├─systemd-udevd
        ├─thermald───{thermald}
        ├─udisksd───4*[{udisksd}]
        ├─unattended-upgr───{unattended-upgr}
        ├─upowerd───2*[{upowerd}]
        ├─whoopsie───2*[{whoopsie}]
        ├─wpa_supplicant
        ├─xembedsniproxy───2*[{xembedsniproxy}]
        └─xsettingsd

图片说明

相较于进程树的方案,直接查显然更方便

bernard@aqua:~$ ps -elf | grep 31812
0 S bernard    32506   31759  0  80   0 -  3018 pipe_r 17:24 pts/1    00:00:00 grep --color=auto 31812
# 32506  是pid 31759是ppid

5、修改/etc/crontab文件实现自动备份,使得每星期一的11:00将/etc目录及其子目录经打包压缩存放到/root/backup目录中,压缩后的文件名称包含备份日期,例如:etc_20190527.tar.gz;

将下面的代码编辑到crontab文件内即可

0 11    * * 1 tar czvf /root/backup/etc_`date +%Y%m%d`.tar.gz /etc

图片说明