如何在linux系统中使用killtimer命令? (linux killtimer)

如何在Linux系统中使用killtimer命令?

在Linux系统中,我们常常需要控制定时任务的执行,以及及时停止指定的定时任务。而killtimer命令就是能够实现这个功能的工具。本文将逐步介绍如何在Linux系统中使用killtimer命令。

一、什么是killtimer命令?

killtimer是一款命令行工具,能够在Linux中接收定时任务,并在指定时间执行相关命令。killtimer命令支持秒、分、时、天等时间单位,支持在指定时间执行关机、重启等Linux系统操作指令。同时,killtimer命令还能够取消已经创建的定时任务,以及查询当前系统中的所有定时任务。

二、安装killtimer命令

killtimer是一个Linux系统中常用的命令,通常已经在系统中默认安装。如果你的系统中没有安装该命令,你可以通过以下命令安装:

sudo apt-get install fping

三、简单使用killtimer命令

3.1 创建定时任务

创建定时任务的命令格式:

killtimer [TIME] [COMMAND]

例如,我们要创建一个在10秒后执行的命令,输入如下命令:

killtimer 10 “echo ‘this is a test'”

上述命令表示,在10秒后执行一条echo ‘this is a test’ 的命令。

3.2 查询当前系统中的所有定时任务

我们可以通过以下命令查询当前系统中所有的定时任务:

killtimer list

执行上述命令后,命令行窗口会输出当前所有的定时任务列表,其中包括定时任务的ID、状态、创建时间、执行时间、停止时间以及相应的命令。

3.3 取消定时任务

可以通过定时任务的ID来取消已经创建的定时任务。例如,我们要取消一个ID为1的定时任务,可以执行以下命令:

killtimer remove 1

执行上述命令后,系统会取消该ID对应的定时任务。

四、进阶使用killtimer命令

4.1 指定时间单位

killtimer命令默认的时间单位为分钟。如果我们需要使用其他时间单位来创建定时任务,可以在命令中使用以下参数:

-s 指定时间单位为秒

-m 指定时间单位为分钟

-h 指定时间单位为小时

-d 指定时间单位为天

例如,要创建一个在10秒后执行的命令,我们可以使用以下命令:

killtimer -s 10 “echo ‘this is a test'”

4.2 操作其他系统命令

killtimer命令除了可以执行Linux系统的默认操作命令外,还可以通过传递连续的命令行参数来执行其他系统命令。例如,我们可以使用以下命令来执行计算机关机操作:

killtimer -d 1 -h 0 -m 0 -s 0 shutdown -h now

上述命令表示,系统将在1天后的0时0分0秒关机。

五、

在Linux系统中使用killtimer命令,可以方便地创建、取消定时任务,并且支持多种时间单位以及执行其他系统命令。killtimer命令是Linux系统管理中不可缺少的工具之一。

相关问题拓展阅读:

进程间通信的问题(C++高手进)

这是典型的消费者和生产者的模式!

给出的几个函数无非是想让你用内存映射文敬让橘件方法作为缓冲区(临界资源)亮团,然后通过给进程发送消息就OK了。

主要滑知是在CreateFileMapping的时候要戴上名字,以方便另一个进程可以OpenFileMapping并使用。

//////////////////////////////////////DDE回调函数; HDDEDATA CALLBACK DdeCallback(UINT wType,UINT wFmt,HCONV hConv,HSZ Topic,HSZ Item, HDDEDATA hData,DWORD lData1,DWORD lData2) {  启销int I ;  char tmp;  switch(wType)  {   case XTYP_ADVSTART:   case    return ((HDDEDATA)TRUE);//允许;   case XTYP_ADVDATA: //有数据到来;    for(I=0;ILoadIcon(IDR_MAINFRAME); } void CDdedemoDlg::DoDataExchange(CDataExchange* pDX) {  CDialog::DoDataExchange(pDX);  //{{AFX_DATA_MAP(CDdedemoDlg)   DDX_Text(pDX, IDC_EDIT1, m_edit);  //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDdedemoDlg, CDialog) //{{AFX_MSG_MAP(CDdedemoDlg)  ON_WM_SYSCOMMAND()  ON_WM_PAINT()  ON_WM_QUERYDRAGICON()  ON_WM_TIMER()  ON_WM_DESTROY()  ON_EN_CHANGE(IDC_EDIT1, OnChangeEdit1) //}}AFX_MSG_MAP END_MESSAGE_MAP() //////////////////////////////////////////CDdedemoDlg message handlers BOOL CDdedemoDlg::OnInitDialog() {  CDialog::OnInitDialog();  // Add “About…” menu item to system menu.  // IDM_ABOUTBOX must be in the system command range.  ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);  ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);   }  }  // Set the icon for this dialog. The framework does this automatically  // when the application’s main window is not a dialog  SetIcon(m_hIcon, TRUE); // Set big icon  SetIcon(m_hIcon, FALSE); // Set all icon  // TODO: Add extra initialization here  hWnd=m_hWnd;  if (DdeInitialize(&idlnst,(PFNCALLBACK)DdeCallback,APPCMD_FILTERINITS| CBF_FAIL_EXECUTES|CBF_SKIP_CONNECT_CONFIRMS|CBF_FAIL_SELFCONNECTIONS| CBF_FAIL_POKES,0))  {   MessageBox(“DDE SERVER初始化失败!”);   return FALSE;  }  hlnst=AfxGetApp()->m_hInstance;  //创建DDE string  hszApp=DdeCreateStringHandle(idlnst,szApp,0);  hszTopic=DdeCreateStringHandle(idlnst,szTopic,0);  for(int I=0;I

int _tmain(int argc, _TCHAR* argv)

{

//是否是子进程标梁厅志

bool isChildProcess = false;

//安全属性描述符,定义来让句柄可以在子进程中可以继承

SECURITY_ATTRIBUTES sa;

memset(&sa,0x0,sizeof(sa));

sa.nLength = sizeof(sa);

sa.bInheritHandle = TRUE;

sa.lpSecurityDescriptor = NULL;

//信号量,用于通知子进程已经有输入数据了,主进程中是创建,子进程中是打开

HANDLE hSemaphore = ::CreateSemaphore(&sa,0,100,_T(“{F8166D73-5BEB024-87D9A7B18069}”));

if ( NULL == hSemaphore )

{

perror(“主进程中创建/子进程中打开信号量失败.”);

return 0;

}

else if ( NULL != hSemaphore && ERROR_ALREADY_EXISTS == ::GetLastError() )

{

//这个是子进程

isChildProcess = true;

}

//创建文件映射(主进程中调用此函数是真实地创建,而子进程中调用此函数时相当于打开)

HANDLE hFileMap = ::CreateFileMapping(

INVALID_HANDLE_VALUE,//使用内存的分页中创建文件映射

&sa,//指定文件映射句柄可继承,如果不指橡告隐定可继承,可以在子进程中用OpenFileMapping()函数打开已创建的文件映射

PAGE_READWRITE,//指定内存映射区访问保护标志

0,//内存大小高位

,//内存大小低位

_T(“{99A2E4DA-A6A5-41DDD45AD8BA}”)//映射名称

);

if ( NULL == hFileMap )

{

perror(“主进程中创建/子进程中打开内存文件映射失败.”);

::CloseHandle(hSemaphore);

return 0;

}

else if ( NULL != hFileMap && ERROR_ALREADY_EXISTS == ::GetLastError() )

{

//这个是子进程

isChildProcess = true;

}

//映射内存文件

LPVOID pMemFile = NULL;

//主进程/子进程中映射视图,因为子进程中hFileMap是打开同名的文件映射句柄而来的,所以虽然主进程和子进程都调用映射视图的函数MapViewOfFile(),

//但是在这两个进程中返回的pMemFile的地址是一样的

pMemFile =::MapViewOfFile(

hFileMap,

FILE_MAP_READ | FILE_MAP_WRITE,

0,

0,

);

if ( NULL == pMemFile )

{

perror(“主进程/子进程中创建映射视图失败.”);

::CloseHandle(hSemaphore);

return 0;

}

//主进程中创建子进程

if ( ! isChildProcess )

{

TCHAR currentExeFileName;

::GetModuleFileName(NULL,currentExeFileName,MAX_PATH);

//主进程里创建子进友渣程

PROCESS_INFORMATION pInfoChild;

memset(&pInfoChild,0x0,sizeof(pInfoChild));

STARTUPINFO stInfo;

memset(&stInfo,0x0,sizeof(stInfo));

stInfo.cb = sizeof(stInfo);

if ( ! ::CreateProcess(

currentExeFileName,//子进程名,就是再运行一个本程序的实例

NULL,//命令行

&sa,//子进程安全属性

&sa,//子进程的线程安全属性

TRUE,//是否可继承主进程句柄

NORMAL_PRIORITY_CLASS,//子进程创建标志

NULL,//使用默认环境变量

NULL,//使用默认起始位置

&stInfo,//子进程启动参数

&pInfoChild//子进程信息

) )

{

perror(“主进程中创建子进程失败.”);

::CloseHandle(hSemaphore);

return 0;

}

printf(“创建子进程成功\n”);

char inputStr = {‘0x0’};

while ( strcmp(inputStr,”exit”) != 0 )

{

fflush(stdin);

memset(inputStr,0x0,sizeof(inputStr));

Sleep(200);//防止显示出现错乱

printf(“(主)输入一行字符(输入exit退出) = “);

scanf(“%s”,inputStr);

strcpy((char *)pMemFile,inputStr);

::ReleaseSemaphore(hSemaphore,1,NULL);

}

//等待子进程收到exit退出后再退出

::WaitForSingleObject(pInfoChild.hProcess,0);

::UnmapViewOfFile(pMemFile);

::CloseHandle(hFileMap);

::CloseHandle(hSemaphore);

return 0;

}

else

{

//子进程读取数据并显示

char inputStr = {‘0x0’};

while ( strcmp(inputStr,”exit”) != 0 )

{

::WaitForSingleObject(hSemaphore,INFINITE);

memset(inputStr,0x0,sizeof(inputStr));

strcpy(inputStr,(char *)pMemFile);

printf(“\n(子)接收数据 = %s\n”,inputStr);

}

//子进程收到exit退出后退出

::UnmapViewOfFile(pMemFile);

::CloseHandle(hFileMap);

::CloseHandle(hSemaphore);

return 0;

}

return 0;

}

提醒楼主,这个找操作系统的书看个上午,你就可以编代码兄渣。具体怎启尘物么写,哥忘了。其实注意函数原型悄液就差不多了。

MFC做的吗?

关于linux killtimer的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 如何在linux系统中使用killtimer命令? (linux killtimer)