AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[init](unix)

Martin Hope
Maestro
Asked: 2023-04-18 11:28:27 +0800 CST

停止未调用 init rc.d 服务

  • 5

我有一个非常简单的 SysVinit 服务/etc/rc.d:

#!/bin/bash

PIDFILE="/var/run/test.pid"

status() {
  if [ -f "$PIDFILE" ]; then
    echo 'Service running'
    return 1
  fi
  return 0
}

start() {
  if [ -f "$PIDFILE" ] && kill -0 "$(cat "$PIDFILE")"; then
    echo 'Service already running'
    return 1
  fi
  echo 'Starting...'
  test & echo $! > "$PIDFILE"
  return 0
}

stop() {
  if [ ! -f "$PIDFILE" ] || ! kill -0 "$(cat "$PIDFILE")"; then
    echo 'Service not running'
    return 1
  fi
  echo 'Stopping...'
  kill -15 "$(cat "$PIDFILE")" && rm -f "$PIDFILE"
  return 0
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

当系统启动时,它会启动服务。

但是当系统停止时,它永远不会调用停止命令。我能想到的唯一原因是系统认为该服务未运行或未正确启动。

但是这样做有什么要求呢?

  • 您是否需要为启动命令返回一个特殊的退出代码?
  • 我需要创建一个文件来/var/lock/subsys表明它是活动的吗?
  • 还有什么可能导致系统认为服务没有启动?
init
  • 1 个回答
  • 28 Views
Martin Hope
Li-Guangda
Asked: 2022-03-11 17:20:11 +0800 CST

当 stderr 不引用终端设备时,为什么 fprintf(stderr, ....) 可以输出到屏幕?

  • 0

鉴于一个简单的程序:

/* ttyname.c */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

int main(int argc, char **argv)
{
  char **tty = NULL;

  tty = ttyname(fileno(stderr));
  if (tty == NULL)
    {
      fprintf(stderr, "%s\n", strerror(errno));
      exit(EXIT_FAILURE);
    }

  printf("%s\n", tty);
  
  exit(EXIT_SUCCESS);
}

将其编译为initttyname并调用它,结果如下:

Inappropriate ioctl for device

这意味着错误代码是ENOTTY。
为什么 fprintf(stderr, ....) 在stderr不引用终端设备时可以输出到屏幕?

tty init
  • 2 个回答
  • 244 Views
Martin Hope
m4l490n
Asked: 2021-12-28 21:38:05 +0800 CST

如果我想将 ac 程序用作内核的 init 程序,为什么我必须静态链接它?

  • 0

我正在学习 Linux 的工作原理,为此我正在观看教程: Rob Landley 的《构建最简单的 Linux 系统》。他基本上经历了一些步骤来构建一个最小的系统,大约20:00他开始解释如何构建一个“hello world 二进制文件”,他稍后将用作内核的 init 程序,作为第一个程序运行。

我的问题是,为什么我必须静态链接 hello.c 应用程序,我想用作内核启动后运行的 init 应用程序(如21:39所述和23:05所见)?

init
  • 2 个回答
  • 104 Views
Martin Hope
Karmanyaahm
Asked: 2020-02-29 10:42:01 +0800 CST

将正在运行的操作系统实例转移到另一台机器

  • 1

理论上的问题,例如,是否可以在笔记本电脑上休眠并启动到桌面上的该映像,该映像在发行版/配置文件方面可能具有相同的配置。

实际应用是将所有正在运行的程序从笔记本电脑传输到台式机以获得更高的性能,反之亦然以实现便携性。

是否可以“假装”使操作系统休眠并将所有更改的文件复制到另一台计算机。

我知道这可能不切实际,但我想听听您对使用当前技术是否有可能的想法。

init suspend
  • 1 个回答
  • 48 Views
Martin Hope
thedimas3007
Asked: 2020-01-19 10:06:33 +0800 CST

init:必须以 PID 1 运行

  • 0

最近遇到一个问题:进入init 1的时候报错:init: must be run as PID 1. 我进入ps,事实证明它/sbin/init有 PID 1。我现在如何使用init?

process init
  • 1 个回答
  • 5164 Views
Martin Hope
vib_29
Asked: 2019-06-28 09:15:18 +0800 CST

如果运行级别 6 对应于重新启动,为什么 /etc/rc6.d 中的所有链接都以 K 开头?

  • 0

我试图找出如何在启动和关闭期间运行脚本,在此期间我知道第 6 级对应于 ubuntu 中的重新启动。当我打开 /etc/rc6.d 时,每个链接的名称都以 K 开头,我想这是为了杀死。

ubuntu init
  • 1 个回答
  • 202 Views
Martin Hope
Tim
Asked: 2018-12-20 05:06:00 +0800 CST

为什么每个登录的用户都拥有一个“systemd”进程?

  • 3

在我的ps输出中:

root         1  0.0  0.0 225552  5316 ?  Ss  /lib/systemd/systemd --system --deserialize 19
message+   572  0.0  0.0  51564  3076 ?  Ss  /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
root       590  0.0  0.0  71084  2084 ?  Ss /lib/systemd/systemd-logind
t          929  0.0  0.0  76872  1988 ?  Ss /lib/systemd/systemd --user
t          980  0.0  0.0  50792  2688 ?  Ss /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
systemd+  2632  0.0  0.0  71240  2464 ?  Ss /lib/systemd/systemd-resolved
systemd+  2637  0.0  0.0 143976   712 ?  Ssl /lib/systemd/systemd-timesyncd
root      2642  0.0  0.4 232544 37308 ?  S<s /lib/systemd/systemd-journald
root      3334  0.0  0.0  46108  2252 ?  Ss /lib/systemd/systemd-udevd
testme   22693  0.0  0.0  76964  3428 ?  Ss /lib/systemd/systemd --user

为什么我有这么多与 systemd 相关的进程?

特别是,为什么systemd每个登录的用户都拥有一个进程?

在 Linux 的引导顺序中,内核作为第一个进程启动 init 系统,然后运行 ​​init 进程,login以便每个用户都可以登录。我认为init系统应该作为一个单例进程运行,不管有多少用户登录,也不管init系统是sysvinit还是systemd,对吗?

是否root必须登录才能开始其systemd进程?

对于那些不属于 root 的 systemd 进程,它们是否作为守护进程运行?

谢谢。

systemd init
  • 1 个回答
  • 5981 Views
Martin Hope
Tim
Asked: 2018-12-19 18:00:35 +0800 CST

在 sysvinit 中,`telinit` 和 `init` 在同一个进程中运行吗?

  • -2

在https://manpages.debian.org/stretch/sysvinit-core/init.8.en.html

/sbin/telinit 链接到 /sbin/init。它接受一个单字符参数并指示init 执行适当的操作。

...

Init在 /run、/run/initctl 中的 fifo上侦听消息。Telinit 使用它与 init 通信。

第一句话是否意味着这 telinit是一个符号链接init?如果是,是否正确telinit并且init在同一进程中运行(例如,可能通过某些文件锁定)?如果是,如何使用 FIFO 或信号进行telinit通信?init

为了比较,在 Systemd 中,systemd和systemctl是不同的程序文件。是否 在 sysvinit 中扮演与sysvinittelinit相同的角色?initsystemctlsystemd

谢谢。

systemd init
  • 1 个回答
  • 196 Views
Martin Hope
Tim
Asked: 2018-12-19 16:33:44 +0800 CST

在带有 SysvInit 的操作系统上,“rebo​​ot”和“halt”符号链接到某些可执行文件吗?

  • -1

在带有 Systemd 的操作系统上,reboot并且halt是指向systemctl.

在带有 SysvInit 的操作系统上,什么是reboot和halt 符号链接?是telinit吗?还是它们本身是可执行文件,而不是符号链接?

谢谢。

init sysvinit
  • 1 个回答
  • 116 Views
Martin Hope
arif
Asked: 2018-11-29 08:54:27 +0800 CST

sysstat.service 的状态显示为活动(已退出)

  • 1

当我看到的状态sysstat是看到以下,

● sysstat.service - Resets System Activity Logs
Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; 
vendor preset: enabled)
Active: active (exited) since Wed 2018-11-28 11:46:45 EST; 4s ago
Process: 4159 ExecStart=/usr/lib64/sa/sa1 --boot (code=exited, 
status=0/SUCCESS)
Main PID: 4159 (code=exited, status=0/SUCCESS)

Nov 28 11:46:45 localhost systemd[1]: Starting Resets System 
Activity Logs...
Nov 28 11:46:45 localhost systemd[1]: Started Resets System 
Activity Logs.

也找不到pid上面指定的任何内容。

问题是,为什么会发生这种情况?

systemd init
  • 1 个回答
  • 2448 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve