当使用.netcore 3.0并使用/p:PublishSingleFile=true标志时,如何获得可执行文件的实际路径?
我最近将应用程序升级到Dotnet Core 3,并在构建过程中开始使用PublishingLefile标志.通过这两个更改,发现可执行路径的方式已更改.现在,我没有获得可执行文件所在的路径,而是将其重定向到/var/tmp/.net/中的随机目录,而我过去曾经获得/opt/appdir/. Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)); 编辑:因此,似乎随机吐痰实际上指向了我的应用程序的未包装版本,该版本不包含其他目录中的重要资源. 解决方案 以下似乎给了您追求的路径,并给原始可执行文件: System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName 其他解决方案 您正在获得实际可执行路径.您只是不明白发生了什么. 使用PublishingLefile
6 2024-04-18
编程技术问答社区
控制systemd服务的简单C或C++ API
目标 我想编写C/C ++应用程序,并为他们提供直接与systemd管理的服务通信的API.有效地,我希望我的应用程序能够在不使用system(),popen()或exec()调用的情况下执行等效的systemctl start service_name@unit_number.service>( HARD要求). 问题 是否有一个简单的 C/C ++ API,用于与systemd进行通信,假设systemd版本219(即Centos v7.4,也很难要求) ? 到目前为止的工作 我已经在线搜寻了C/C ++控制systemd管理的服务的示例=" noreferrer">在主题上找到了奇怪的讨论,但没有找到任何好的例子. 我总是可以反向工程 既然我一直困扰着Centos v7.4 ,这意味着我无法在SystemD的221版或更晚上获得,我无法使用较新的" SD BUS" API. 没有人允许手动升级libsystemd仅仅是为了特定申请的好处,我显然不是第
22 2024-04-07
编程技术问答社区
Docker作为一个构建者,不能安装systemd头文件
我正在尝试根据官方CentOS7图像更新Docker映像.它被用作node.js项目的构建器. 我需要添加systemd-devel软件包以编译一些依赖项,但这会失败,但有以下错误: fakesystemd-1-17.el7.centos.noarch has installed conflicts systemd: fakesystemd-1-17.el7.centos.noarch 谢谢 解决方案 fakesystemd是CentOS Docker映像中的一个特殊软件包,它可以满足对SystemD的依赖性而无需实际安装SystemD(毕竟,您通常不需要在容器内使用Init System). yum info fakesystemd告诉更多: 最小码头特定的软件包可以满足systemd Provides:,而无需在docker图像中安装systemd.它旨在严格用于Docker Images/Containers.它没有提供SystemD软件包的任何功能
14 2024-04-05
编程技术问答社区
sysfs procfs devtmpfs 是否由内核挂载?
我正在研究Systemd. 我以为Systemd会在内核初始化后启动时启动sysfs(/sys),procfs(/proc),devtmpfs(/dev). 但是我的SystemD调试日志显示Systemd不安装此类文件系统. 何时安装了该文件系统?内核是否sys,proc,dev? 解决方案 是的,这些是由SystemD PID1安装的,请参见SystemD源中的SRC/CORE/MOUNT-SETUP.C. 其他解决方案 第一点:Linux内核无法在用户级别上安装伪文件系统.这也是为什么必须由用户级的对应物创建dev/中的所有条目(对于proc/>>> and sys/而言,内核能够在固定文件系统上创建条目). 在Linux发行版中,Pseudo-Filesystems的安装通常是在用户级别完成的,
16 2024-04-02
编程技术问答社区
Beaglebone启动到Qt应用程序
我已经搜索和搜索了很多,但是我无法正常工作. 我希望Beaglebone启动到我的QT应用程序.但是,我得到的是GUI启动还可以,但是在几秒钟内,Angstrom登录屏幕覆盖了我的GUI,该GUI一直在后台运行. 我设置了一个SystemD服务,如/etc/SystemD/System: #!/bin/sh [Unit] Description=Meta Systemd script [Service] USER=root WorkingDirectory=/home/root ExecStart=/bin/sh -c 'source /etc/profile ; /home/root/meta6 -qws' After=local-fs.target Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target 我用: 激活它 systemctl enable meta.serv
20 2024-04-02
编程技术问答社区
在Linux上启动一个脚本的最好方法是什么?
我想在系统启动并寻找最佳方式时启动一个脚本,我的方式是: vi/etc/systemd/system/myscript.service [Service] Type=simple ExecStart=/usr/bin/myscript CPUSchedulingPolicy=rr CPUSchedulingPrioty=27 [Install] WantedBy=multi-user.target graphical.target systemctl daemon-reload; systemctl enable myscript; systemctl start rmyscript 它运行良好,但只是想知道还有另一种更好的方法. 解决方案 有几种方法可以实现这一目标,但是您将需要任何以下内容的根特权.要获得root,请打开终端并运行命令: sudo su ,命令提示将更改为"#",指示终端会话具有根特权. 替代#1.添加Initscript
10 2024-04-02
编程技术问答社区
在Linux中使用systemd的启动脚本
我可以在下面执行此启动服务吗?一旦运行没有显示错误,但是下面的服务器脚本没有运行! ln /lib/systemd/aquarium.service aquarium.service systemctl daemon-reload systemctl enable aquarium.service systemctl start aquarium.service 谢谢 水族馆服务: [Unit] Description=Start aquarium server [Service] WorkingDirectory=/home/root/python/code/aquarium/ ExecStart=/bin/bash server.* start KillMode=process [Install] WantedBy=multi-user.target 这是server.sh脚本 #!/bin/bash PID="" function get_p
12 2024-04-02
编程技术问答社区
Yocto Systemd配置
我正在尝试在启动时开始服务,但是我正在遇到问题. 这是我的自定义层中的树结构 michael@michael-VirtualBox:~/Documents/simple_daemon/sources/meta-simpledaemon$ tree . ├── conf │ └── layer.conf ├── COPYING.MIT ├── README └── recipes-example ├── example │ └── example_0.1.bb └── simpledaemon ├── files │ └── simpledaemon.service └── simpledaemon_git.bb 在我的local.conf中,我添加了以下内容: IMAGE_INSTALL_append = " bbexample " IMAGE_INSTALL_append = " sim
16 2024-03-31
编程技术问答社区
BeagleBone Black + PowerCape + LCD4 cape = 启动速度慢
我正在研究带有beaglebone黑色(BBB)的嵌入式产品项目.我还需要一个触摸屏来显示信息和输入.由于我还需要5V功率来在USB上添加网络摄像头,因此我无法使用没有电压助推器的BBB的内置电池功能.我找到了一个可以做我想要的斗篷: lcd4 by courtiveco ///www.4dsystems.com.au/product/beagle_bone_lcd_capes/4dcape-43/" rel =" nofollow noreferrer"> 4DCape-43t by 4d Systems ,我认为这是完全相同的,所以我认为这是完全相同的,因此问题是完全相同的两者. 所以,一切都很好,很高兴将所有内容嵌入.但是出于一个未知的原因,启动时间(我按下电源按钮和LED的时间开始点亮到在屏幕上可见控制台的那一刻)从20秒到1分钟到1分钟到1分钟和30秒时,当我添加Powercape时.拥有一个具有执行快速启动并且无法获得功能的系统的系统非常令人沮丧. 在这里一些技术
8 2024-03-29
编程技术问答社区
BeagleBone启动到带触摸屏的Qt应用程序
和其他许多人一样,我想拥有一个QT应用程序,该应用程序直接在Beaglebone Black Boot时直接运行.使用此类主题的答案: beaglebone boot to qt app ; 我有一个beaglebone黑色Revc,Angstrom 2012-09-12. 我实现了以下服务设置的启动启动: "autoShow.service" [Unit] Description=Autorun Qt app ConditionFileIsExecutable=/home/root/ShowcaseNice [Service] Type=simple TimeoutStartSec=120 WorkingDirectory=/home/root ExecStart=/bin/sh -c 'source /etc/profile ; /home/root/ShowcaseNice -qws' Restart=always [Install] WantedBy=multi-
12 2024-03-29
编程技术问答社区
从systemd bash内联脚本中创建filename_$(date %Y-%m-%d)。
我正在尝试执行systemd计时器,并希望在每个日期中将执行脚本执行的输出保留.这是.service文件中的ExecStart脚本: ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) >> /home/username/test_output_$(date +%Y-%m-%d).log' 这会创建文件,但添加了一个"哈希",而不是"月份"名称: ~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log 内容相同: 2017-ea3c0c2dd56c499a93412641e41008db-01 如果我在外壳中运行/bin/bash -c 'echo $(date +%Y-%m-%d)'而无需通过SystemD服务,则可以按预期工作.印刷: 2017-09-01. %m代表systemd环境中一个月以外的其他东西? 任何想法如何设置SystemD
14 2024-03-28
编程技术问答社区
如何获得bash脚本中执行的命令的进程ID?
我有一个我想同时运行2个程序的脚本,一个是C程序,另一个是Cpulimit,我想先用"&"在后台启动C程序,然后获得pid C程序并将其交给Cpulimit,这也将以"&". 在后台运行 我尝试在下面执行此操作,它只是启动了第一个程序,并且从未启动CPulimit. 也我正在使用Arch Linux中的SystemD作为root作为启动脚本运行此 . #!/bin/bash /myprogram & PID=$! cpulimit -z -p $PID -l 75 & exit 0 解决方案 我想我现在已经解决了,根据此处的解决:链接我需要包装这样的命令(命令)才能创建一个子壳. #!/bin/bash (mygprgram &) mypid=$! (cpulimit -z -p $mypid -l 75 &) exit 0 其他解决方案 我只是在谷歌搜索并想添加一些东西时发现了这个. 虽然您的解决方案似乎正在起作用(请参阅有关子壳的评论
8 2024-03-28
编程技术问答社区
Raspberry Pi-Autostart OpenCv-Script-Error with cv::imshow()
简短描述: 我想在启动后通过SystemD Service-Script自动启动可执行文件(OPENCV二进制文件,通过C ++生成),但我没有成功. 我将错误范围缩小到代码语句" cv :: imshow(....)",它打开了一个窗口并显示图像.此时,代码引发错误:" qxcbConnection:无法连接到显示" 但是,如果我手动执行SH-Script或二进制文件,则两个都可以正常工作.我在Stackoverflow周围搜索了最常见的错误,并试图修复我能找到的一切.我很确定: 我的服务文件实际上在开始时运行(直到发生错误) 手动执行二进制文件正常工作 .sh-script的手动执行正常 我没有运行时链接错误(请参见.sh-script) 我感谢任何帮助.请帮助我解决错误,请向我解释,为什么此错误首先发生.非常感谢:) . 我的系统: Machine: Raspberry Pi 3 Model B Architecture: ar
12 2024-03-28
编程技术问答社区
即使计划的作业失败了很多次,发送单个通知电子邮件即使
我有一个systemd服务,该服务运行了一个SQL脚本,可以刷新一堆实体的视图.该服务每5分钟运行一次.该服务由Ansible部署.如果SQL脚本失败,我想发送一封电子邮件,该电子邮件通知我们失败.当前的代码(请参见下面的YML块)将每5分钟左右发送通知电子邮件,直到我们中的一个人解决问题或停止服务.这太常见了:一封电子邮件就足够了,正是我需要的. 即使脚本反复失败,我如何发送一个和仅发送一封电子邮件? 我正在考虑使用诸如此伪代码之类的包装脚本,但看起来很丑: # Runs every 5 min: psql -f refresh_matviews.sql || touch refresh_matviews.failed.log if { exists refresh_matviews.failed.log } and { not grep "seen" refresh_matviews.failed.log } then echo "failed!"
10 2024-03-28
编程技术问答社区
如何为一个systemd服务的进程加载环境变量?
我正在开发一些需要在Raspbian(Jessie)启动时执行的服务脚本,我决定使用SystemD.我刚刚开始阅读一些有关如何使用它的快速教程,但是我对环境有问题. 执行的过程需要(在其代码中)我在shell脚本中设置的某些环境变量,但没有加载它们,尽管使用了环境文件=/path/path/to/to/to/my/file ... i i拥有一个执行python3脚本的服务,另一个用于node.js app. 我从昨天开始一直在寻找替代解决方案,但是似乎没有任何作用……也许我只是不了解Systemd是如何工作的? 必须这样做,所以我问你... 这是我的单元文件: python脚本: [Unit] Description=My awesome python script After=multi-user.target [Service] ExecStart=/usr/local/bin/python3.6 /home/pi/Desktop/myawesome
6 2024-03-28
编程技术问答社区
如何检查我的本地docker镜像是否过期,而不用从其他地方推送?
我正在CoreOS服务器上的Docker容器中运行React应用程序.假设它是从https://hub.docker.com/r/myimages/myapp中从dockerhub提取的. 现在,我想定期检查应用程序容器的DockerHub图像是否已更新,以查看我本地运行的图像是否落后. 与远程图像相比,检查本地码头图像是否过时的最有效方法是什么?到目前为止,我发现的所有解决方案都是推动更新的BASH脚本或外部服务.我想找到一个尽可能多地码头的解决方案,并希望避免从其他地方推动通知(以提醒服务器的更新图像). 解决方案 您可以查询注册表API中的图像摘要,并将其与您所拉的内容进行比较. $ cat digest-v2.sh #!/bin/sh ref="${1:-library/ubuntu:latest}" repo="${ref%:*}" tag="${ref##*:}" acceptM="application/vnd.docker.distributi
16 2024-03-27
编程技术问答社区
修复systemd服务203/EXEC故障(无此类文件或目录)。
我试图设置一个简单的系统定时器,每天午夜运行一个bash脚本. systemctl --user status backup.service失败并记录以下内容: backup.service: Failed at step EXEC spawning /home/user/.scripts/backup.sh: No such file or directory. backup.service: Main process exited, code=exited, status=203/EXEC Failed to start backup. backup.service: Unit entered failed state. backup.service: Failed with result 'exit-code'. 我迷路了,因为文件和目录存在.该脚本是可执行的,只是要检查,我什至将权限设置为777. 一些背景: backup.timer和backup.
8 2024-03-27
编程技术问答社区
当使用Systemd时,/tmp的内容在PHP-FPM中不可见
目录/TMP无法从运行的PHP-FPM作为SystemD服务访问. 复制的步骤: 解决方案 这是软件包维护者设置的默认行为. 这是因为/usr/lib/systemd/system/php-fpm.service中有privatetmp = true. 如果要更改它,则可以创建/etc/systemd/system/php-fpm.service.d/private-tmp.conf具有内容: [服务] privatetmp = false
18 2024-03-03
编程技术问答社区
无法启动postgresql.service?
我正在使用Arch Linux(4.8.13-1-Arch).我正在尝试按照指示设置PostgreSQL 执行 [postgres@BitBox ~]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data' The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.UTF-8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions o
40 2024-03-03
编程技术问答社区