更新时间:2022-01-19 15:12:31浏览次数:806+次
以下为你详细解释systemd、systemctl、syslog、sysctl命令的用法。
Linux systemd命令的用法及解释
Linux systemd 是一个专用于 Linux 操作系统的系统与服务管理器。当作为启动进程(PID=1)运行时,它将作为初始化系统运行,也就是启动并维护各种用户空间的服务。
为了与传统的 SysV 兼容,如果将 systemd 以 init 名称启动,并且"PID≠1",那么它将执行 telinit 命令并将所有命令行参数原封不动的传递过去。这样对于普通的登陆会话来说,无论是调用 init 还是调用 telinit 都是等价的。
当作为系统实例运行时,systemd 将会按照 system.conf 配置文件以及 system.conf.d 配置目录中的指令工作;当作为用户实例运行时,systemd 将会按照 user.conf 配置文件以及 user.conf.d 配置目录中的指令工作。
1、选项
能够识别的命令行选项如下:
--test
检测并输出启动序列,然后退出。仅用于调试目的。
--dump-configuration-items
输出一个单元(unit)列表。此列表简明且完整的列出了所有单元文件中定义的"unit"。
--unit=
设置启动时默认启动的单元(unit)。默认值是 default.target
--system, --user
--system 表示强制作为系统实例运行(即使"PID≠1"), --user 表示强制作为用户实例运行(即使"PID=1")。通常不应该使用此选项。此选项仅用于调试目的,而且 --system 仅在与 --test 一起使用时才有实际意义。
--dump-core
在崩溃时进行内核转储。当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.dump_core= 开启。
--crash-vt=VT
在崩溃时切换到指定的虚拟控制台(VT)。当作为用户实例运行时,此选项没有实际意义。可以设为一个 1–63 之间的整数或布尔值。若设为整数则切换到指定编号的虚拟控制台;若设为 yes 则表示使用内核消息所使用的虚拟控制台;若设为 no 则表示不切换到任何虚 拟控制台。此选项还可以通过内核引导选项 systemd.crash_vt= 设置。
--crash-shell
在崩溃时启动一个 shell。当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.crash_shell= 开启。
--crash-reboot
在崩溃时自动重启系统。当作为用户实例运行时,此选项没有实际意义。此选项还可以通过内核引导选项 systemd.crash_reboot= 开启。
--confirm-spawn
在派生新进程时进行确认提示。当作为用户实例运行时,此选项没有实际意义。
--show-status=
在系统启动过程中显示简明的服务状态信息。当作为用户实例运行时,此选项没有实际意义。其参数必须是一个表示真假的布尔值,如果未指定则相当于设为 yes
--log-target=
设置日志的目标,其参数必须是 console, journal, kmsg, journal-or-kmsg, null 之一( 小写)。
--log-level=
设置日志的等级,其参数必须是一个数字或者符合 syslog(3) 习惯的 emerg,alert,crit, err, warning, notice, info, debug 之一(小写)。
--log-color=
高亮重要的日志信息,其参数必须是一个表示真假的布尔值,若未指定则相当于设为 yes
--log-location=
在日志中包含代码的位置,其参数必须是一个表示真假的布尔值,若未指定则相当于设为 yes。仅用于调试目的。
--default-standard-output=, --default-standard-error=
为所有的 service 与 socket 设置默认的标准输出与标准错误, 相当于设置 StandardOutput= 与 StandardError= 指令的值(参见 systemd.exec(5) 手册)。其参数必须是 inherit, null, tty, journal, journal+console, syslog, syslog+console, kmsg, kmsg+console 之一(小写)。 --default-standard-output= 的默认值是 journal;而 -- default-standard-error= 的默认值是 inherit
--machine-id=
覆盖文件系统上的 machine-id 设置,常用于网络启动或容器。禁止设为全零的值。
-h, --help
显示简短的帮助信息并退出。
--version
显示简短的版本信息并退出。
2、信号
SIGTERM
systemd 系统实例将会保存其当前状态, 然后重新执行它自身,再恢复到先前保存的状态。基本上相当于执行 systemctl daemon-reexec 命令。
systemd 用户实例将会启动 exit.target 单元。基本上相当于执行 systemctl --user start exit.target 命令。
SIGINT
systemd 系统实例将会启动 ctrl-alt-del.target 单元。基本上相当于执行 systemctl start ctl-alt-del.target 命令。在控制台上按 Ctrl-Alt-Del 组合键即可触发这个信号。但是,如果在2秒内连续收到超过7次这个信号,那么将会不顾一切的立即强制重启。因此,如果系统在重启过程中僵死, 那么可以通过快速连按7次 Ctrl-Alt-Del 组合键来强制立即重启。
systemd 用户实例处理此信号的方式与 SIGTERM 相同。
SIGWINCH
systemd 系统实例将会启动 kbrequest.target 单元。 基本上相当于执行 systemctl start kbrequest.target 命令。
systemd 用户实例将会完全忽略此信号。
SIGPWR
systemd 将会启动 sigpwr.target 单元。基本上相当于执行 systemctl start sigpwr.target 命令。
SIGUSR1
systemd 将会尝试重新连接到 D-Bus 总线。
SIGUSR2
systemd 将会以人类易读的格式将其完整的状态记录到日志中。日期的格式与 systemd- analyze dump 的输出格式相同。
SIGHUP
重新加载守护进程的配置文件。基本上相当于执行 systemctl daemon-reload 命令。
SIGRTMIN+0
进入默认模式,启动 default.target 单元。基本上相当于执行 systemctl start default.target 命令。
SIGRTMIN+1
进入救援模式,启动 rescue.target 单元。基本上相当于执行 systemctl isolate rescue.target 命令。
SIGRTMIN+2
进入紧急维修模式,启动 emergency.target 单元。基本上相当于执行 systemctl isolate emergency.target 命令。
SIGRTMIN+3
关闭系统,启动 halt.target 单元。基本上相当于执行 systemctl start halt.target 命令。
SIGRTMIN+4
关闭系统并切断电源,启动 poweroff.target 单元。基本上相当于执行 systemctl start poweroff.target 命令。
SIGRTMIN+5
重新启动,启动 reboot.target 单元。 基本上相当于执行 systemctl start reboot.target 命令。
SIGRTMIN+6
通过内核的 kexec 接口重新启动,启动 kexec.target 单元。基本上相当于执行 systemctl start kexec.target 命令。
SIGRTMIN+13
立即关闭机器
SIGRTMIN+14
立即关闭机器并切断电源
SIGRTMIN+15
立即重新启动
SIGRTMIN+16
立即通过内核的 kexec 接口重新启动
SIGRTMIN+20
在控制台上显示状态消息。相当于使用 systemd.show_status=1 内核引导选项。
SIGRTMIN+21
禁止在控制台上显示状态消息。相当于使用 systemd.show_status=0 内核引导选项。
SIGRTMIN+22, SIGRTMIN+23
将日志等级设为 "debug"(22) 或 "info"(23)。相当于使用 systemd.log_level=debug 或 systemd.log_level=info 内核引导选项。
SIGRTMIN+24
立即退出 systemd 用户实例(也就是仅对 --user 实例有效)。
SIGRTMIN+26, SIGRTMIN+27, SIGRTMIN+28
将日志等级设为 "journal-or-kmsg"(26) 或 "console"(27) 或 "kmsg"(28)。 相当于使用 systemd.log_target=journal-or-kmsg 或 systemd.log_target=console 或 systemd.log_target=kmsg 内核引导选项。
Linux systemctl命令的用法及解释
Linux systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
以下是实例:
1.启动nfs服务
systemctl start nfs-server.service
2.设置开机自启动
systemctl enable nfs-server.service
3.停止开机自启动
systemctl disable nfs-server.service
4.查看服务当前状态
systemctl status nfs-server.service
5.重新启动某服务
systemctl restart nfs-server.service
6.查看所有已启动的服务
systemctl list -units --type=service
开启防火墙22端口:
iptables -I INPUT -p tcp --dport 22 -j accept
如果仍然有问题,就可能是SELinux导致的。
关闭SElinux:
修改/etc/selinux/config文件中的SELINUX=””为disabled,然后重启。
彻底关闭防火墙:
sudo systemctl status firewalld.service
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
Linux syslog命令的用法及解释
Linux syslog是Linux操作系统默认的日志守护进程。默认的syslog配置文件是/etc/syslog.conf文件。程序,守护进程和内核提供了访问操作系统的日志信息。因此,任何希望生成日志信息的程序都可以向 syslog 接口呼叫生成该信息。
几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP 端口514,并根据 syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件。
通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件通知 syslogd 如何根据设备和信息重要级别来报告信息。
使用方法如下:
在/var/log中创建并写入日志信息是由syslog协议处理的,是由守护进程sylogd负责执行。每个标准的进程都可以用syslog记录日志。可以使用logger命令通过syslogd记录日志。
要向syslog文件/var/log/messages中记录日志信息:
logger this is a test log line
输出:
tail -n 1 messages
Jan 5 10:07:03 localhost root: this is a test log line
如果要记录特定的标记(tag)可以使用:
logger -t TAG this is a test log line
输出:
tail -n 1 messages
Jan 5 10:37:14 localhost TAG: this is a test log line
Linux sysctl命令的用法及解释
Linux sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项,这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
1、语法
sysctl(选项)(参数)
2、选项
-n:打印值时不打印关键字;
-e:忽略未知关键字错误;
-N:仅打印名称;
-w:当改变sysctl设置时使用此项;
-p:从配置文件“/etc/sysctl.conf”加载内核参数设置;
-a:打印当前所有可用的内核参数变量和值;
-A:以表格方式打印当前所有可用的内核参数变量和值。
3、参数
变量=值:设置内核参数对应的变量值。
4、实例
查看所有可读变量:
sysctl -a
读一个指定的变量,例如kern.maxproc:
sysctl kern.maxproc kern.maxproc: 1044
要设置一个指定的变量,直接用variable=value这样的语法:
sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
您可以使用sysctl修改系统变量,也可以通过编辑sysctl.conf文件来修改系统变量。sysctl.conf看起来很像rc.conf。它用variable=value的形式来设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。
sysctl变量的设置通常是字符串、数字或者布尔型。(布尔型用 1 来表示'yes',用 0 来表示'no')。
sysctl -w kernel.sysrq=0
sysctl -w kernel.core_uses_pid=1
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
sysctl -w net.ipv4.tcp_fin_timeout=30
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_keepalive_time=3600
sysctl -w net.ipv4.tcp_window_scaling=1
sysctl -w net.ipv4.tcp_sack=1
5、配置sysctl
编辑此文件:/etc/sysctl.conf
如果该文件为空,则输入以下内容,否则请根据情况自己做调整:
# Controls source route verification
# Default should work for all interfaces
net.ipv4.conf.default.rp_filter = 1
# net.ipv4.conf.all.rp_filter = 1
# net.ipv4.conf.lo.rp_filter = 1
# net.ipv4.conf.eth0.rp_filter = 1
# Disables IP source routing
# Default should work for all interfaces
net.ipv4.conf.default.accept_source_route = 0
# net.ipv4.conf.all.accept_source_route = 0
# net.ipv4.conf.lo.accept_source_route = 0
# net.ipv4.conf.eth0.accept_source_route = 0
# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0
# Controls whether core dumps will append the PID to the core filename.
# Useful for debugging multi-threaded applications.
kernel.core_uses_pid = 1
# Increase maximum amount of memory allocated to shm
# Only uncomment if needed!
# kernel.shmmax = 67108864
# Disable ICMP Redirect Acceptance
# Default should work for all interfaces
net.ipv4.conf.default.accept_redirects = 0
# net.ipv4.conf.all.accept_redirects = 0
# net.ipv4.conf.lo.accept_redirects = 0
# net.ipv4.conf.eth0.accept_redirects = 0
# enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
# Default should work for all interfaces
net.ipv4.conf.default.log_martians = 1
# net.ipv4.conf.all.log_martians = 1
# net.ipv4.conf.lo.log_martians = 1
# net.ipv4.conf.eth0.log_martians = 1
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 25
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1200
# Turn on the tcp_window_scaling
net.ipv4.tcp_window_scaling = 1
# Turn on the tcp_sack
net.ipv4.tcp_sack = 1
# tcp_fack should be on because of sack
net.ipv4.tcp_fack = 1
# Turn on the tcp_timestamps
net.ipv4.tcp_timestamps = 1
# Enable TCP SYN Cookie Protection
net.ipv4.tcp_syncookies = 1
# Enable ignoring broadcasts request
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Enable bad error message Protection
net.ipv4.icmp_ignore_bogus_error_responses = 1
# make more local ports available
# net.ipv4.ip_local_port_range = 1024 65000
# set TCP Re-Ordering value in kernel to ‘5′
net.ipv4.tcp_reordering = 5
# Lower syn retry rates
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 3
# Set Max SYN Backlog to ‘2048′
net.ipv4.tcp_max_syn_backlog = 2048
# Various Settings
net.core.netdev_max_backlog = 1024
# Increase the maximum number of skb-heads to be cached
net.core.hot_list_length = 256
# Increase the tcp-time-wait buckets pool size
net.ipv4.tcp_max_tw_buckets = 360000
# This will increase the amount of memory available for socket input/output queues
net.core.rmem_default = 65535
net.core.rmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.core.wmem_default = 65535
net.core.wmem_max = 8388608
net.ipv4.tcp_wmem = 4096 65535 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.core.optmem_max = 40960
如果希望屏蔽别人 ping 你的主机,则加入以下代码:
# Disable ping requests
net.ipv4.icmp_echo_ignore_all = 1
编辑完成后,请执行以下命令使变动立即生效:
/sbin/sysctl -p
/sbin/sysctl -w net.ipv4.route.flush=1
相关资讯