Linux学习笔记

文件系统管理

磁盘管理

操作步骤

  • 磁盘分区
  • 格式化写入文件系统
  • 建立挂载点并挂载
  • 开机自动挂载

实例详解

添加一块新的硬盘或者格式化已有硬盘建立分区
  • 格式化已有磁盘
    • 重要数据需备份
    • 重要数据需备份
    • 重要数据需备份

如果格式化现有磁盘需要先使用fdisk -l查看设备号以及现有分区详情,然后使用umount命令取消挂载,最后使用mkfs格式化磁盘。

  • 新磁盘建立分区
  1. 使用fdisk -l命令查看磁盘设备号如/dev/sdb代表SATA接口第二块硬盘
  2. 使用fdisk /dev/sdb命令新建分区,注意点:
    • 主分区最多只能有4个
    • 扩展分区最多只有1个
    • 扩展分区包含逻辑分区
    • n新建分区p主分区e扩展分区
    • l文件系统p查看分区w保存退出
  1. [root@localhost ~]# fdisk /dev/sdb
  2. 欢迎使用 fdisk (util-linux 2.23.2)。
  3. 更改将停留在内存中,直到您决定将更改写入磁盘。
  4. 使用写入命令前请三思。
  5. Device does not contain a recognized partition table
  6. 使用磁盘标识符 0xe3bd2259 创建新的 DOS 磁盘标签。
  7. 命令(输入 m 获取帮助):m
  8. 命令操作
  9. a toggle a bootable flag
  10. b edit bsd disklabel
  11. c toggle the dos compatibility flag
  12. d delete a partition
  13. g create a new empty GPT partition table
  14. G create an IRIX (SGI) partition table
  15. l list known partition types
  16. m print this menu
  17. n add a new partition
  18. o create a new empty DOS partition table
  19. p print the partition table
  20. q quit without saving changes
  21. s create a new empty Sun disklabel
  22. t change a partition's system id
  23. u change display/entry units
  24. v verify the partition table
  25. w write table to disk and exit
  26. x extra functionality (experts only)
  27. 命令(输入 m 获取帮助):n
  28. Partition type:
  29. p primary (0 primary, 0 extended, 4 free)
  30. e extended
  31. Select (default p): p
  32. 分区号 (1-4,默认 1):1
  33. 起始 扇区 (2048-41943039,默认为 2048):
  34. 将使用默认值 2048
  35. Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
  36. 分区 1 已设置为 Linux 类型,大小设为 5 GiB
  37. 命令(输入 m 获取帮助):n
  38. Partition type:
  39. p primary (1 primary, 0 extended, 3 free)
  40. e extended
  41. Select (default p): e
  42. 分区号 (2-4,默认 2):2
  43. 起始 扇区 (10487808-41943039,默认为 10487808):
  44. 将使用默认值 10487808
  45. Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
  46. 将使用默认值 41943039
  47. 分区 2 已设置为 Extended 类型,大小设为 15 GiB
  48. 命令(输入 m 获取帮助):n
  49. Partition type:
  50. p primary (1 primary, 1 extended, 2 free)
  51. l logical (numbered from 5)
  52. Select (default p): l
  53. 添加逻辑分区 5
  54. 起始 扇区 (10489856-41943039,默认为 10489856):
  55. 将使用默认值 10489856
  56. Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):
  57. 将使用默认值 41943039
  58. 分区 5 已设置为 Linux 类型,大小设为 15 GiB
  59. 命令(输入 m 获取帮助):p
  60. 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
  61. Units = 扇区 of 1 * 512 = 512 bytes
  62. 扇区大小(逻辑/物理):512 字节 / 512 字节
  63. I/O 大小(最小/最佳):512 字节 / 512 字节
  64. 磁盘标签类型:dos
  65. 磁盘标识符:0xe3bd2259
  66. 设备 Boot Start End Blocks Id System
  67. /dev/sdb1 2048 10487807 5242880 83 Linux
  68. /dev/sdb2 10487808 41943039 15727616 5 Extended
  69. /dev/sdb5 10489856 41943039 15726592 83 Linux
  70. 命令(输入 m 获取帮助):w
  71. The partition table has been altered!
  72. Calling ioctl() to re-read partition table.
  73. 正在同步磁盘。
  74. [root@localhost ~]#
  • 格式化分区并写入文件系统
    • 扩展分区不可操作
    • 逻辑分区可操作
  1. [root@localhost ~]# mkfs -t ext4 /dev/sdb1
  2. mke2fs 1.42.9 (28-Dec-2013)
  3. 文件系统标签=
  4. OS type: Linux
  5. 块大小=4096 (log=2)
  6. 分块大小=4096 (log=2)
  7. Stride=0 blocks, Stripe width=0 blocks
  8. 327680 inodes, 1310720 blocks
  9. 65536 blocks (5.00%) reserved for the super user
  10. 第一个数据块=0
  11. Maximum filesystem blocks=1342177280
  12. 40 block groups
  13. 32768 blocks per group, 32768 fragments per group
  14. 8192 inodes per group
  15. Superblock backups stored on blocks:
  16. 32768, 98304, 163840, 229376, 294912, 819200, 884736
  17. Allocating group tables: 完成
  18. 正在写入inode表: 完成
  19. Creating journal (32768 blocks): 完成
  20. Writing superblocks and filesystem accounting information: 完成
  21. [root@localhost ~]# mkfs -t ext4 /dev/sdb5
  22. mke2fs 1.42.9 (28-Dec-2013)
  23. 文件系统标签=
  24. OS type: Linux
  25. 块大小=4096 (log=2)
  26. 分块大小=4096 (log=2)
  27. Stride=0 blocks, Stripe width=0 blocks
  28. 983040 inodes, 3931648 blocks
  29. 196582 blocks (5.00%) reserved for the super user
  30. 第一个数据块=0
  31. Maximum filesystem blocks=2151677952
  32. 120 block groups
  33. 32768 blocks per group, 32768 fragments per group
  34. 8192 inodes per group
  35. Superblock backups stored on blocks:
  36. 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
  37. Allocating group tables: 完成
  38. 正在写入inode表: 完成
  39. Creating journal (32768 blocks): 完成
  40. Writing superblocks and filesystem accounting information: 完成
  41. [root@localhost ~]#
  • 建立挂载点并挂载
  1. [root@localhost ~]# mkdir /mnt/disk1
  2. [root@localhost ~]# mkdir /mnt/disk5
  3. [root@localhost ~]# mount /dev/sdb1 /mnt/disk1
  4. [root@localhost ~]# mount /dev/sdb5 /mnt/disk5
  5. [root@localhost ~]#
  6. [root@localhost ~]# df -h
  7. 文件系统 容量 已用 可用 已用% 挂载点
  8. devtmpfs 893M 0 893M 0% /dev
  9. tmpfs 910M 0 910M 0% /dev/shm
  10. tmpfs 910M 11M 900M 2% /run
  11. tmpfs 910M 0 910M 0% /sys/fs/cgroup
  12. /dev/mapper/centos-root 17G 5.1G 12G 30% /
  13. /dev/sda1 1014M 185M 830M 19% /boot
  14. tmpfs 182M 12K 182M 1% /run/user/42
  15. tmpfs 182M 0 182M 0% /run/user/1000
  16. /dev/sdb1 4.8G 20M 4.6G 1% /mnt/disk1
  17. /dev/sdb5 15G 41M 14G 1% /mnt/disk5
  18. [root@localhost ~]#
  • 实现开机自动挂载外接移动设备不建议自动挂载!!!
  1. 查看磁盘UUID命令
  1. [root@localhost ~]# dumpe2fs /dev/sdb1
  2. Filesystem UUID: 88c14ee3-5a32-4a7a-b1a1-7cc2960ada1c

或者

  1. [root@localhost ~]# ls -l /dev/disk/by-uuid/
  2. lrwxrwxrwx. 1 root root 10 3 21 16:47 88c14ee3-5a32-4a7a-b1a1-7cc2960ada1c -> ../../sdb1
  3. lrwxrwxrwx. 1 root root 10 3 21 16:47 ecac7767-4f99-4a5d-9d7a-02da01ed8fa1 -> ../../sdb5

或者

  1. [root@localhost ~]# lsblk
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda 8:0 0 20G 0 disk
  4. ├─sda1 8:1 0 1G 0 part /boot
  5. └─sda2 8:2 0 19G 0 part
  6. ├─centos-root 253:0 0 17G 0 lvm /
  7. └─centos-swap 253:1 0 2G 0 lvm [SWAP]
  8. sdb 8:16 0 20G 0 disk
  9. └─sdb1 8:17 0 20G 0 part /mnt/disk1
  10. sdc 8:32 0 2G 0 disk
  11. └─sdc1 8:33 0 2G 0 part [SWAP]
  12. sr0 11:0 1 1024M 0 rom
  13. [root@localhost ~]# lsblk -f
  14. NAME FSTYPE LABEL UUID MOUNTPOINT
  15. sda
  16. ├─sda1 xfs 9a7dacf4-45c0-413a-b6f0-537e19e9c3d6 /boot
  17. └─sda2 LVM2_member Ffcj1s-CAnE-sAgl-MKE0-3cVL-jrgz-3KyGXU
  18. ├─centos-root
  19. xfs bb5c7b68-def4-4f70-baee-ebb05df528be /
  20. └─centos-swap
  21. swap 09c2c687-dcbb-401c-a393-155b43233386 [SWAP]
  22. sdb
  23. └─sdb1 ext4 1a6c90a5-3a4d-49d3-9550-1db6b4536040 /mnt/disk1
  24. sdc
  25. └─sdc1 swap 158a1eee-17e1-47a7-94dd-840c84d4d843 [SWAP]
  26. sr0
  1. 修改/etc/fstab文件来实现自动挂载
  1. [root@localhost ~]# vim /etc/fstab
  2. UUID=88c14ee3-5a32-4a7a-b1a1-7cc2960ada1c /mnt/disk1 ext4 defaults 0 0
  3. UUID=ecac7767-4f99-4a5d-9d7a-02da01ed8fa1 /mnt/disk5 ext4 defaults 0 0
  4. #第一列 设备文件名或者UUID
  5. #第二列 挂载点
  6. #第三列 文件系统
  7. #第四列 挂载选项
  8. #第五列 是否可以备份 0不备份 1每天备份 2不定期备份
  9. #第六列 是否检测磁盘fsck 0不检测 1启动时检测 2启动后检测
  1. 重启测试或者mount -a重新挂载所有内容

补充对GPT分区表操作

  1. [root@localhost ~]# parted /dev/sdb
  2. GNU Parted 3.1
  3. Using /dev/sdb
  4. Welcome to GNU Parted! Type 'help' to view a list of commands.
  5. (parted) help
  6. align-check TYPE N check partition N for TYPE(min|opt)
  7. alignment
  8. help [COMMAND] print general help, or help on COMMAND
  9. mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
  10. mkpart PART-TYPE [FS-TYPE] START END make a partition
  11. name NUMBER NAME name partition NUMBER as NAME
  12. print [devices|free|list,all|NUMBER] display the partition table, available
  13. devices, free space, all found partitions, or a particular partition
  14. quit exit program
  15. rescue START END rescue a lost partition near START and END
  16. resizepart NUMBER END resize partition NUMBER
  17. rm NUMBER delete partition NUMBER
  18. select DEVICE choose the device to edit
  19. disk_set FLAG STATE change the FLAG on selected device
  20. disk_toggle [FLAG] toggle the state of FLAG on selected device
  21. set NUMBER FLAG STATE change the FLAG on partition NUMBER
  22. toggle [NUMBER [FLAG]] toggle the state of FLAG on partition
  23. NUMBER
  24. unit UNIT set the default unit to UNIT
  25. version display the version number and copyright
  26. information of GNU Parted
  27. (parted) print
  28. Error: /dev/sdb: unrecognised disk label
  29. Model: VMware, VMware Virtual S (scsi)
  30. Disk /dev/sdb: 21.5GB
  31. Sector size (logical/physical): 512B/512B
  32. Partition Table: unknown
  33. Disk Flags:
  34. (parted) mklabel gpt
  35. (parted) print
  36. Model: VMware, VMware Virtual S (scsi)
  37. Disk /dev/sdb: 21.5GB
  38. Sector size (logical/physical): 512B/512B
  39. Partition Table: gpt
  40. Disk Flags:
  41. Number Start End Size File system Name Flags
  42. (parted) mkpart
  43. Partition name? []? disk1
  44. File system type? [ext2]?
  45. Start? 1MB
  46. End? 5GB
  47. (parted) print
  48. Model: VMware, VMware Virtual S (scsi)
  49. Disk /dev/sdb: 21.5GB
  50. Sector size (logical/physical): 512B/512B
  51. Partition Table: gpt
  52. Disk Flags:
  53. Number Start End Size File system Name Flags
  54. 1 1049kB 5000MB 4999MB disk1
  55. (parted) quit
  56. [root@localhost ~]# mkfs -t ext4 /dev/sdb1
  57. [root@localhost ~]# mkdir /mnt/disk1
  58. [root@localhost ~]# mount /dev/sdb1 /mnt/disk1
  59. [root@localhost ~]# df -h
  60. Filesystem Size Used Avail Use% Mounted on
  61. /dev/sdb1 4.5G 19M 4.2G 1% /mnt/disk1

增加swap分区

  • 新建分区并修改swap分区id为82
  1. [root@localhost ~]# fdisk /dev/sdc
  2. Welcome to fdisk (util-linux 2.23.2).
  3. Changes will remain in memory only, until you decide to write them.
  4. Be careful before using the write command.
  5. Device does not contain a recognized partition table
  6. Building a new DOS disklabel with disk identifier 0xa48a01dd.
  7. Command (m for help): n
  8. Partition type:
  9. p primary (0 primary, 0 extended, 4 free)
  10. e extended
  11. Select (default p): p
  12. Partition number (1-4, default 1):
  13. First sector (2048-4194303, default 2048):
  14. Using default value 2048
  15. Last sector, +sectors or +size{K,M,G} (2048-4194303, default 4194303):
  16. Using default value 4194303
  17. Partition 1 of type Linux and of size 2 GiB is set
  18. Command (m for help): t
  19. Selected partition 1
  20. Hex code (type L to list all codes): 82
  21. Changed type of partition 'Linux' to 'Linux swap / Solaris'
  22. Command (m for help): w
  23. The partition table has been altered!
  24. Calling ioctl() to re-read partition table.
  25. Syncing disks.
  26. Command (m for help): p
  27. Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
  28. Units = sectors of 1 * 512 = 512 bytes
  29. Sector size (logical/physical): 512 bytes / 512 bytes
  30. I/O size (minimum/optimal): 512 bytes / 512 bytes
  31. Disk label type: dos
  32. Disk identifier: 0xa48a01dd
  33. Device Boot Start End Blocks Id System
  34. /dev/sdc1 2048 4194303 2096128 82 Linux swap / Solaris
  • 格式化并使用
  1. [root@localhost ~]# mkswap /dev/sdc1
  2. Setting up swapspace version 1, size = 2096124 KiB
  3. no label, UUID=158a1eee-17e1-47a7-94dd-840c84d4d843
  4. [root@localhost ~]# free
  5. total used free shared buff/cache available
  6. Mem: 1863004 231820 1436800 9764 194384 1476888
  7. Swap: 2097148 0 2097148
  8. [root@localhost ~]# swapon /dev/sdc1
  9. [root@localhost ~]# free
  10. total used free shared buff/cache available
  11. Mem: 1863004 233404 1435192 9764 194408 1475304
  12. Swap: 4193272 0 4193272
  • 修改/etc/fstab文件实现swap分区开机自动挂载
  1. [root@localhost ~]# vim /etc/fstab
  2. UUID=158a1eee-17e1-47a7-94dd-840c84d4d843 swap swap defaults 0 0
  3. [root@localhost ~]# mount -a
  4. [root@localhost ~]# free
  5. total used free shared buff/cache available
  6. Mem: 1863004 233984 1432128 9764 196892 1474724
  7. Swap: 4193272 0 4193272

基本操作命令

压缩和解压缩

gzip/gunzip命令

  1. [root@localhost ~]# gzip home.zip
  2. [root@localhost ~]# gunzip home.zip.gz

zip/unzip命令

  • 压缩
  1. zip [选项] [目的文件名] [源文件或目录名]
  2. zip -r home.zip /home
  • 解压
  1. unzip [选项] [目的目录名] [源文件名]
  2. unzip -d /tmp/home home.zip

tar指令

选项 功能备注
-z 通过gzip指令压缩/解压缩文件,文件名后缀需为.tar.gz
-c 建立新的.tar备份文件
-x 解压包.tar文件
-v 显示过程信息
-f 指定压缩后的备份文件名
-C 可用于指定目录下的压缩/解压缩操作
  • 压缩
  1. tar -zcvf [目的文件名.tar.gz] [源文件或目录名]
  2. tar -zcvf home.tar.gz cat.txt dog.txt
  • 解压
  1. tar -zxvf [源文件名.tar.gz] -C [指定目录]
  2. tar -zxvf home.tar.gz -C /opt/home/

crond任务调度

crontab指令

选项 说明
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户的crontab任务
  1. crontab -e
  2. * * * * * ls -l /etc/ > /tmp/etc.txt
  3. #分 时 日 月 周 执行命令
占位符 含义 范围
minute 一小时当中的第几分钟 [0-59]
hour 一天当中的第几小时 [0-23]
day 一个月当中的第几天 [1-31]
month 一年当中的第几月 [1-12]
week 一周当中的星期几(0&7都表示星期日) [0-7]
特殊符号 含义
* 代表任何时间。例如第一个*表示一小时中每分钟都执行一次。
, 代表不连续的时间。例如0 2,4,6 * * * command表示每天2、4、6点整执行。
- 代表连续的时间范围。例如0 5 * * 0-6 command表示每天的凌晨5点整执行。
*/n 代表每隔多久执行一次。例如*/10 * * * * command表示每10分钟执行一次。

at定时任务

检测at进程是否运行

  1. [root@localhost ~]# ps -ef | grep atd
  2. root 1841 1823 0 19:31 pts/0 00:00:00 grep --color=auto atd

at指令

选项 说明
atq 查看系统中的等待作业
atrm/-d 删除系统中的等待作业
-f 指定文件提交等待作业

参考实例
  1. [root@localhost ~]# at now + 1 min
  2. at> /bin/ls -l > /tmp/test.txt
  3. at> <EOT>
  4. job 2 at Wed Apr 7 20:00:00 2021
  5. Can't open /var/run/atd.pid to signal atd. No atd running?
  6. [root@localhost ~]# atq
  7. 1 Fri Apr 9 17:00:00 2021 a root
  8. 2 Wed Apr 7 20:00:00 2021 a root
  9. [root@localhost ~]# atrm 2
  10. [root@localhost ~]# atq
  11. 1 Fri Apr 9 17:00:00 2021 a root
  12. [root@localhost ~]# at -f py.sh 9pm 07/04/2021
  13. job 6 at Sun Jul 4 21:00:00 2021
  14. [root@localhost ~]# atq
  15. 1 Fri Apr 9 17:00:00 2021 a root
  16. 6 Sun Jul 4 21:00:00 2021 a root
  17. [root@localhost ~]#

网络配置

固定IP地址

  1. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
  2. BOOTPROTO="static"
  3. IPADDR=192.168.78.130
  4. NETMASK=255.255.255.0
  5. GATEWAY=192.168.78.2
  6. DNS1=223.5.5.5
  7. DNS2=119.29.29.29
  8. [root@localhost ~]# systemctl restart network

设置主机名和hosts映射

设置主机名
  1. [root@localhost ~]# hostname
  2. localhost.localdomain
  3. [root@localhost ~]# vim /etc/hostname
  4. localhost.localdomain
  5. [root@localhost ~]# reboot

设置hosts映射
  1. [root@localhost ~]# vim /etc/hosts
  2. [root@localhost ~]# cat /etc/hosts
  3. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  4. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  5. 192.168.123.254 openwrt
  6. [root@localhost ~]# ping openwrt
  7. PING openwrt (192.168.123.254) 56(84) bytes of data.
  8. 64 bytes from openwrt (192.168.123.254): icmp_seq=1 ttl=128 time=2.16 ms
  9. 64 bytes from openwrt (192.168.123.254): icmp_seq=2 ttl=128 time=2.84 ms
  10. 64 bytes from openwrt (192.168.123.254): icmp_seq=3 ttl=128 time=2.69 ms
  11. 64 bytes from openwrt (192.168.123.254): icmp_seq=4 ttl=128 time=2.88 ms
  12. ^C
  13. --- openwrt ping statistics ---
  14. 4 packets transmitted, 4 received, 0% packet loss, time 3032ms
  15. rtt min/avg/max/mdev = 2.165/2.648/2.883/0.287 ms
  16. [root@localhost ~]#

进程管理(重点)

查看进程:ps指令

选项 说明
-a 显示所有终端机下执行的程序,除阶段作业领导者
-u 列出属于该用户的程序的状况
-x 显示所有程序,不以终端机来区分
-e 显示所有程序
-f 显示UID,PPIP,C与STIME栏位

参考实例
  1. [root@localhost ~]# ps -aux
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. root 1 0.0 0.3 128168 6800 ? Ss 19:30 0:04 /usr/lib/systemd/systemd
  4. [root@localhost ~]# ps -aux | grep sshd
  5. root 1205 0.0 0.2 112936 4320 ? Ss 19:30 0:00 /usr/sbin/sshd -D
  6. root 1731 0.0 0.2 158940 5532 ? Ss 19:31 0:00 sshd: luci [priv]
  7. luci 1781 0.0 0.1 158940 2460 ? S 19:31 0:01 sshd: luci@pts/0
  8. root 1782 0.0 0.2 158940 5508 ? Ss 19:31 0:00 sshd: luci [priv]
  9. luci 1803 0.0 0.1 158940 2324 ? S 19:31 0:00 sshd: luci@notty
  10. root 10735 0.0 0.0 112812 976 pts/0 R+ 23:39 0:00 grep --color=auto sshd
  1. [root@localhost ~]# ps -ef
  2. UID PID PPID C STIME TTY TIME CMD
  3. root 1 0 0 19:30 ? 00:00:04 /usr/lib/systemd/systemd
  4. [root@localhost ~]# ps -ef | grep sshd
  5. root 1205 1 0 19:30 ? 00:00:00 /usr/sbin/sshd -D
  6. root 1731 1205 0 19:31 ? 00:00:00 sshd: luci [priv]
  7. luci 1781 1731 0 19:31 ? 00:00:01 sshd: luci@pts/0
  8. root 1782 1205 0 19:31 ? 00:00:00 sshd: luci [priv]
  9. luci 1803 1782 0 19:31 ? 00:00:00 sshd: luci@notty
  10. root 10783 1823 0 23:40 pts/0 00:00:00 grep --color=auto sshd

查看进程树:pstree指令

选项 说明
-p 显示进程的PID
-u 显示进程的所属用户
  1. [root@localhost ~]# yum install -y psmisc
  2. [root@localhost ~]# pstree
  3. systemd─┬─NetworkManager───2*[{NetworkManager}]
  4. ├─VGAuthService
  5. ├─agetty
  6. ├─atd
  7. ├─auditd───{auditd}
  8. ├─crond
  9. ├─dbus-daemon───{dbus-daemon}
  10. ├─firewalld───{firewalld}
  11. ├─lvmetad
  12. ├─master─┬─pickup
  13. └─qmgr
  14. ├─polkitd───6*[{polkitd}]
  15. ├─rsyslogd───2*[{rsyslogd}]
  16. ├─sshd─┬─sshd───sshd───bash───sudo───bash───pstree
  17. └─sshd───sshd───sftp-server
  18. ├─systemd-journal
  19. ├─systemd-logind
  20. ├─systemd-udevd
  21. ├─tuned───4*[{tuned}]
  22. └─vmtoolsd───{vmtoolsd}
  23. [root@localhost ~]# pstree -pu
  24. systemd(1)─┬─NetworkManager(907)─┬─{NetworkManager}(924)
  25. └─{NetworkManager}(927)
  26. ├─VGAuthService(863)
  27. ├─agetty(736)
  28. ├─atd(1912)
  29. ├─auditd(659)───{auditd}(660)
  30. ├─crond(728)
  31. ├─dbus-daemon(688,dbus)───{dbus-daemon}(727)
  32. ├─firewalld(741)───{firewalld}(1030)
  33. ├─lvmetad(508)
  34. ├─master(1430)─┬─pickup(8378,postfix)
  35. └─qmgr(1432,postfix)
  36. ├─polkitd(681,polkitd)─┬─{polkitd}(731)
  37. ├─{polkitd}(732)
  38. ├─{polkitd}(734)
  39. ├─{polkitd}(737)
  40. ├─{polkitd}(738)
  41. └─{polkitd}(739)
  42. ├─rsyslogd(1208)─┬─{rsyslogd}(1247)
  43. └─{rsyslogd}(1248)
  44. ├─sshd(1205)─┬─sshd(1731)───sshd(1781,luci)───bash(1783)───sudo(1819+
  45. └─sshd(1782)───sshd(1803,luci)───sftp-server(1808)
  46. ├─systemd-journal(485)
  47. ├─systemd-logind(685)
  48. ├─systemd-udevd(507)
  49. ├─tuned(1204)─┬─{tuned}(1625)
  50. ├─{tuned}(1626)
  51. ├─{tuned}(1630)
  52. └─{tuned}(1634)
  53. └─vmtoolsd(810)───{vmtoolsd}(875)

终止进程:kill/killall指令

  1. kill [选项] 进程号
  2. kill -9 10101
  3. killall 进程名称
  4. killall gedit

服务管理

systemctl指令

  • systemctl管理服务的默认路径/usr/lib/systemd/system
  1. systemctl [start | stop | restart | status] ServiceName
  • systemctl设置服务的自启动状态
  1. systemctl list-unit-files [ | grep ServiceName ]
  2. #查看服务开机启动状态,可选grep进行过滤
  3. systemctl is-enabled ServiceName
  4. #查看服务是否开机自启动
  5. systemctl enable ServiceName
  6. #设置服务开机自启
  7. systemctl disable ServiceName
  8. #关闭服务开机自启

service指令

  • service管理服务的默认路径/etc/init.d
  1. service ServiceName [start | stop | restart | reload | status]

服务的运行级别(runlevel):

Linux系统7种运行级别,常用的级别为3和5
  • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
  • 运行级别5:X11控制台,登录后进入图形GUI模式

开机流程

开机 -> BIOS -> /boot -> systemd -> 运行级别 -> 运行级别对应服务

设置运行级别
  1. cat /etc/inittab
  2. #运行级别的默认文件
  3. systemctl get-default
  4. #查看默认的运行级别
  5. systemctl set-default [multi-user.target | graphical.target]
  6. #设置默认的运行级别为[多用户3/图形化5]

chkconfig指令

  1. chkconfig --list [ | grep ServiceName ]
  2. #查看服务运行级别
  3. chkconfig --level [0-6] ServiceName [on | off]
  4. #修改服务运行级别
  5. reboot
  6. #重启生效

firewall指令

防火墙管理
  1. firewall-cmd --query-port=[端口号/协议类型]
  2. #查询端口是否开放
  3. firewall-cmd --permanent --add-port=3306/tcp
  4. firewall-cmd --permanent --remove-port=3306/tcp
  5. #打开或关闭端口
  6. firewall-cmd --reload
  7. #重载使之生效

动态监控进程

top指令

选项 说明
-d 指定刷新时间。默认3秒
-i 不显示任何闲置或者僵死进程
-p 指定进程ID监控某个进程的状态

交互操作说明
操作 功能
P 以CPU的使用率排序(默认)
M 以内存的使用率排序
N 以PID排序
u 监视特定用户
q 退出top
k 根据PID杀死进程

netstat指令

选项 说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
  1. [root@localhost ~]# netstat -anp | grep sshd
  2. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1205/sshd
  3. tcp 0 0 192.168.78.130:22 192.168.78.1:11698 ESTABLISHED 1785/sshd: luci [pr
  4. tcp 0 36 192.168.78.130:22 192.168.78.1:11697 ESTABLISHED 1779/sshd: luci [pr
  5. tcp6 0 0 :::22 :::* LISTEN 1205/sshd
  6. unix 3 [ ] STREAM CONNECTED 23537 1785/sshd: luci [pr
  7. unix 3 [ ] STREAM CONNECTED 23389 1779/sshd: luci [pr
  8. unix 2 [ ] DGRAM 23533 1785/sshd: luci [pr
  9. unix 3 [ ] STREAM CONNECTED 21632 1205/sshd
  10. unix 3 [ ] STREAM CONNECTED 23388 1783/sshd: luci@pts
  11. unix 3 [ ] STREAM CONNECTED 23536 1808/sshd: luci@not
  12. unix 2 [ ] DGRAM 23385 1779/sshd: luci [pr

软件包或源管理

rpm包管理

rpm包的查询指令
  1. rpm -qa
  2. #查询安装的rpm软件包
  3. rpm -qa | grep PackageName
  4. #过滤查询rpm软件包
  5. rpm -qi PackageName
  6. #查看rpm软件包详细信息
  7. rpm -ql PackageName
  8. #查询软件包中的文件位置
  9. rpm -qf /FilePath
  10. #查询文件所属rpm软件包

rpm包的卸载指令
  1. rpm -e PackageName
  2. rpm -e --nodeps PackageName
  3. #强制卸载忽略依提示

rpm包的安装指令
  1. rpm -ivh /Path/PackageName
  2. #i=install 安装
  3. #v=verbose 提示
  4. #h=hash 进度

yum软件源管理

查询yum软件源中的rpm包
  1. yum list | grep PackageName

安装指定的软件包
  1. yum install PackageName

JavaEE开发环境部署

安装配置JDK

  • 方法一:
  1. su -c "yum install java-1.8.0-openjdk-devel"
  • 方法二:
  1. [root@localhost ~]# mkdir /usr/local/java
  2. [root@localhost ~]# tar -zxvf jdk-8u281-linux-x64.tar.gz -C /usr/local/java/
  3. [root@localhost ~]# cat >> /etc/profile <<EOF
  4. > export JAVA_HOME=/usr/local/java/jdk1.8.0_281
  5. > export CLASSPATH=.:${JAVA_HOME}/lib
  6. > export PATH=${JAVA_HOME}/bin:$PATH
  7. > EOF
  8. [root@localhost ~]# source /etc/profile
  9. [root@localhost ~]# javac -version
  10. javac 1.8.0_281
  11. [root@localhost ~]# java -version
  12. java version "1.8.0_281"
  13. Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
  14. Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
  15. [root@localhost ~]# javac hello.java
  16. [root@localhost ~]# java hello
  17. Hello,World~

安装配置tomcat

  1. [root@localhost ~]# wget https://apache.website-solution.net/tomcat/tomcat-8/v8.5.65/bin/apache-tomcat-8.5.65.tar.gz
  2. [root@localhost ~]# tar -zxvf apache-tomcat-8.5.65.tar.gz
  3. [root@localhost ~]# mv apache-tomcat-8.5.65 /usr/local/tomcat
  4. [root@localhost ~]# /usr/local/tomcat/bin/startup.sh
  5. Using CATALINA_BASE: /usr/local/tomcat
  6. Using CATALINA_HOME: /usr/local/tomcat
  7. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
  8. Using JRE_HOME: /usr/local/java/jdk1.8.0_281
  9. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
  10. Using CATALINA_OPTS:
  11. Tomcat started.
  12. [root@localhost ~]# firewall-cmd --permanent --add-port=8080/tcp
  13. [root@localhost ~]# firewall-cmd --reload
  14. [root@localhost ~]# firewall-cmd --query-port=8080/tcp
  15. yes