更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > Linux systemd、systemctl、syslog、sysctl命令的用法及解释

Linux systemd、systemctl、syslog、sysctl命令的用法及解释

更新时间: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