在停用其他服务之前激活并运行oneshot服务

时间:2015-06-26 13:11:04

标签: linux service systemd

我有一个System.Windows.Data Error: 55 : Cannot sort by 'data' InvalidOperationException:'System.InvalidOperationException: Failed to compare two elements in the array. ---> System.ArgumentException: Object must be of type Boolean. at System.Boolean.CompareTo(Object obj) at System.Collections.Comparer.Compare(Object a, Object b) at MS.Internal.Data.SortFieldComparer.Compare(Object o1, Object o2) at System.Array.SorterGenericArray.SwapIfGreaterWithItems(Int32 a, Int32 b) at System.Array.SorterGenericArray.IntroSort(Int32 lo, Int32 hi, Int32 depthLimit) at System.Array.SorterGenericArray.IntrospectiveSort(Int32 left, Int32 length) --- End of inner exception stack trace --- at System.Array.SorterGenericArray.IntrospectiveSort(Int32 left, Int32 length) at System.Array.Sort(Array keys, Array items, Int32 index, Int32 length, IComparer comparer) at System.Array.Sort(Array array, IComparer comparer) at MS.Internal.Data.SortFieldComparer.SortHelper(ArrayList al, IComparer comparer) at MS.Internal.Data.DataExtensionMethods.Sort(IList list, IComparer comparer) at System.Windows.Data.ListCollectionView.PrepareLocalArray() at System.Windows.Data.ListCollectionView.RefreshOverride() at System.Windows.Data.CollectionView.RefreshInternal() at System.Windows.Data.CollectionView.Refresh() at System.Windows.Data.CollectionView.EndDefer() at System.Windows.Data.CollectionView.DeferHelper.Dispose() at System.Windows.Controls.ItemCollection.EndDefer() at System.Windows.Controls.ItemCollection.DeferHelper.Dispose() at System.Windows.Controls.DataGrid.DefaultSort(DataGridColumn column, Boolean clearExistingSortDescriptions)' 类型的服务,我希望之前运行停用其他服务。换句话说,只要其他服务收到要停用的信号,我就需要我的 服务来激活,运行其进程并终止。只有当我的服务完成后,才允许其他服务停用。

我如何在systemd中实现这一目标?

1 个答案:

答案 0 :(得分:0)

有一种可能的方法,在服务文件的[Unit]部分中使用OnFailure=xyz.service停用,其中xyz.service将是您要激活的服务。

现在有一个缓存,如果要在运行流程后终止新激活的服务并保持流程运行,则必须使用shell脚本运行该服务并运行该脚本 xyz.service文件中的ExecStart=/bin/sh lmn.sh

否则,您可以直接指定ExecStart=/usr/bin/hello来运行您的流程。在这里,您的服务文件将处于活动状态,直到您的进程运行。

例如。正在停用的服务文件。

[Unit]
Description=...
OnFailure=xyz.service

[Service]
.
.
.

xyz.service file

[Unit]
.
.

[Service]
.
.
ExecStart=/bin/sh lmn.sh
.
.

ExecStart=/usr/bin/hello