A. linux實例網站訪問丟包延時高怎麼解決
需要從兩個方向找原因
1、網路問題,一般丟包和延時高都是網路出現問題了。如果linux實例在區域網內部,請檢查交換機等設備。如果是託管到機房的或者使用雲伺服器,請先檢查自己的網路是否有問題,比如打開其他網站看看,如果沒問題就聯系機房或者雲提供商協助檢查處理。
2、linux實例問題,如果linux負載太高也有可能出現訪問丟包嚴重,延時高的問題,這種情況下只能通過top找到導致負載高或者消耗CPU的進程,能停止掉或者殺掉,再看看延時是否就下降了。
B. 在linux下,想用sleep函數實現延時五秒,應該怎麼設參數
使用許可權 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
說明 : sleep 可以用來將目前動作延遲一段時間
參數說明 :
--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,後面可接 s、m、h 或 d
其中 s 為秒,m 為 分鍾,h 為小時,d 為日數
例子 :
顯示目前時間後延遲 1 分鍾,之後再次顯示時間 :
date;sleep 1m;date
這個命令更多應用於shell腳本編程里和程序里
如下面的一段程序:
應用程序:
復制代碼
代碼如下:
#include <syswait.h>
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n秒
驅動程序:
#include <linux/delay.h>
mdelay(n) //milliseconds 其實現
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
調用asm/delay.h的udelay,udelay應該是納秒級的延時
Dos:
sleep(1); //停留1秒
delay(100); //停留100毫秒
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1秒
usleep(1000); //停留1毫秒
每一個平台不太一樣,最好自己定義一套跨平台的宏進行控制
秒還是微秒?關於延時函數sleep()
因為要寫一段代碼,需要用到sleep()函數,在我印象中,sleep(10)好像是休眠10微秒,結果卻是休眠了10秒(在Linux下)。覺得很奇怪,因為頭兒也記得好像是微秒為單位的。所以就查了一下。
原來linux下的sleep函數原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的sleep()函數是以微秒為單位的,sleep(1000);才是休眠1秒。原來如此啊。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數:void usleep(unsigned long usec);當然,使用的時候別忘記#include <system.h>哦。
另外值得一提的是,linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鍾的話,可以這么用 delay(250);
C. linux 中實現延遲45分鍾後執行命令,寫了一段c程序,實現延遲,接下來,該如何執行命令呢,也就是shell
1、system(執行shell 命令)
相關函數 fork,execve,waitpid,popen
表頭文件 #include<stdlib.h>
定義函數 int system(const char * string);
函數說明 system()會調用fork()產生子進程,由子進程來調用/bin/sh-c
string來執行參數string字元串所代表的命令,此命令執行完後隨
即返回原調用的進程。在調用system()期間SIGCHLD 信號會被暫時
擱置,SIGINT和SIGQUIT 信號則會被忽略。
返回值 如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-
1。若參數string為空指針(NULL),則返回非零值。如果system()調
用成功則者派最後會返回執行shell命令後的返回值,但是此返回值也有
可能為system()調用/bin/sh失敗所返回的127,因此最好能再檢查
errno 來確認執行成功。
附加說明 在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會
繼承環境變數,通畝嫌慧過環境變數可能會造成系統安全的問題。
例如:
#include<stdlib.h>
main()
{
system(「ls -al /etc/passwd /etc/shadow」); //換成./test.sh 可執行相關腳本
}
當然也可以用管道或exec函數族來調用迅答shell
D. 在linux shell 腳本中 , 想延時 ,後來卻一直被提示 無效的時間間隔,不知何故..請教!!
你的文件是dos格式的,使用dos2unix + 文件名,轉換該文件的格式
E. linux計劃任務如何實現延時執行腳本,求簡潔實例
兩個方法:
1)crontab中的時間設定最小可以到分鍾,如果你的延時是分鍾級別的,直接放大crontab中的分鍾設定即可。
2)修改腳本,在腳本開頭(當然要在shell聲明語句如#!/bin/bash之後)加usleep(微秒級)或sleep命令(秒級),也可以實現延時。