導航:首頁 > 操作系統 > symlinklinux

symlinklinux

發布時間:2023-07-21 06:48:34

linux啟動app命令

linux啟動app命令:做 Linux 嵌入式開發,經常會遇到要設置自己的應用程序在系統開機的時候自動啟動,並且一般情況我們不想安裝一些額外的軟體去實現此種需求。那麼直接根據當前系統自帶的默認的一些工具實現用戶軟體的開機自啟動。
  本次測驗的系統環境為 Ubuntu 16.04 LTS,測試內容均得到正確的驗證,如果其他環境出現不一致的現象,請查閱相關的差異。
  比如先要實現下面的應用程序的開機自啟動(實現的代碼最下面給出,有需要的可以查看):
1. 應用程序的名稱:app.bin
2. 應用程序的保存路徑:/home/ubuntu/app/ 下
3. 應用程序的工作路徑:/home/ubuntu/app/ 下

❷ linux伺服器的刪除文件的快捷方式

linux沒有快捷方式的概念,你說的是軟連接(symlink)。
在當前目錄下使用ll -a可以看到目錄中所有文件包括軟連接的情況,軟連接會顯示為軟連接名 -> 連接到的實際文件路徑。對於其中不需要的,可以用rm命令刪除。

❸ Linux系統中獲取路徑的文件名的方法

這篇文章主要介紹了Linux系統中獲取路徑的文件名的方法,文中總結出了兩條,需要的朋友可以參考下
代碼如下:
[[email protected]
]#basename
/root/aaa/bbb/dabu.txt
顯示:
代碼如下:
dabu.txt
#獲取路徑的文件名
shell腳本中如何獲得腳本文件所在路徑?
方法一:
代碼如下:
[[email protected]
]#DIR=$(cd
"$(dirname
"$0")";
pwd)
[[email protected]
]#echo
$DIR
但是像這種dirname
"$0"這種寫法,在遇到source命令時會得到錯誤的結果。
方法二:
代碼如下:
[[email protected]
]#echo
"$(
cd
"$(
dirname
"${BASH_SOURCE[0]}"
)"
&&
pwd
)"
上面一行命令可以獲得腳本的絕對輪徑,無論你在何處調用這個腳本。
但是如果含有軟鏈接,就無法使用了。所以,我們為了能正確解析指向腳本的軟鏈接,可以使用下面的多行命令:
代碼如下:
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
SOURCE="$(readlink
"$SOURCE")"
[[
$SOURCE
!=
/*
]]
&&
SOURCE="$DIR/$SOURCE"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
done
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
也可與source,bash
-c命令使用
但是,如果你在腳本中使用先cd切換到其他目錄,在運行時上面的命令片段時,則上面的命令不能等到正確的結果。可以參考關於$CDPATH
陷阱的文章。想理解它如何其作用的,可以運行下面的代碼:
代碼如下:
#!/bin/bash
SOURCE="${BASH_SOURCE[0]}"
while
[
-h
"$SOURCE"
];
do
#
resolve
$SOURCE
until
the
file
is
no
longer
a
symlink
TARGET="$(readlink
"$SOURCE")"
if
[[
$SOURCE
==
/*
]];
then
echo
"SOURCE
'$SOURCE'
is
an
absolute
symlink
to
'$TARGET'"
SOURCE="$TARGET"
else
DIR="$(
dirname
"$SOURCE"
)"
echo
"SOURCE
'$SOURCE'
is
a
relative
symlink
to
'$TARGET'
(relative
to
'$DIR')"
SOURCE="$DIR/$TARGET"
#
if
$SOURCE
was
a
relative
symlink,
we
need
to
resolve
it
relative
to
the
path
where
the
symlink
file
was
located
fi
done
echo
"SOURCE
is
'$SOURCE'"
RDIR="$(
dirname
"$SOURCE"
)"
DIR="$(
cd
-P
"$(
dirname
"$SOURCE"
)"
&&
pwd
)"
if
[
"$DIR"
!=
"$RDIR"
];
then
echo
"DIR
'$RDIR'
resolves
to
'$DIR'"
fi
echo
"DIR
is
'$DIR'"

❹ Linux下是否有文件拷貝的庫函數

不管是哪種操作系統,要實現文件拷貝,必須陷入內核,從磁碟讀取文件內容,然後存儲到另一個文件。實現文件拷貝最通常的做法是:讀取文件用系統調用read()函數,讀取到一定長度的連續的用戶層緩沖區,然後使用write()函數將緩沖區內容寫入文件。也可以用標准庫函數fread()和fwrite(),但這兩個函數最終還是通過系統調用read()和write()實現拷貝的,因此可以歸為一類(不過效率肯定沒有直接進行系統調用的高)。一個更高級的做法是使用虛擬存儲映射技術進行,這種方法將源文件以共享方式映射到虛擬存儲器中,目的文件也以共享方式映射到虛擬地址空間中,然後使用memcpy高效地將源文件內容復制到目的文件中。點擊(此處)折疊或打開#include#include#include#include#include#include#include#include#include#include#defineerror(fmt,args)\printf(fmt,##args);\printf(":%s\n",strerror(errno))inlineintcp_rw(intsrcfd,intdstfd,char*buf,intlen);inlineintcp_map(intsrcfd,intdstfd,size_tlen);intmain(intargc,char**argv){charbuf[8192];intsrcfd,dstfd;clock_tstart,end;structtmsstm,ntm;structstatfilestat;inttck;charcmdline[30];if(argc!=3)printf("usage:cmd");tck=sysconf(_SC_CLK_TCK);start=times(&stm);if((srcfd=open(argv[1],O_RDONLY))==-1){error("open%serror",argv[1]);exit(0);}if((dstfd=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0666))==-1){error("creat%serror",argv[2]);exit(0);}fstat(srcfd,&filestat);if(lseek(dstfd,filestat.st_size,SEEK_SET)==-1){error("lseekerror");exit(0);}if(write(dstfd,"",1)!=1){error("writeerror");exit(0);}cp_map(srcfd,dstfd,filestat.st_size);close(srcfd);close(dstfd);end=times(&ntm);printf("ing%sto%susingcp_map:filesize=%luMBytesUsing%fseconds\n",argv[1],argv[2],filestat.st_size>>20,(end-start)/(double)tck);sprintf(cmdline,"rm-f%s",argv[2]);system(cmdline);return0;}inlineintcp_rw(intsrcfd,intdstfd,char*buf,intlen){intnread;while((nread=read(srcfd,buf,len))>0){if(write(dstfd,buf,nread)!=nread){error("writeerror");return-1;}}if(nread==-1){error("readerror");return-1;}return0;}inlineintcp_map(intsrcfd,intdstfd,size_tlen){char*src,*dst;if((src=mmap(0,len,PROT_READ,MAP_SHARED,srcfd,0))==MAP_FAILED){error("mmapsrcerror");return-1;}if((dst=mmap(0,len,PROT_WRITE,MAP_SHARED,dstfd,0))==MAP_FAILED){error("mmapdsterror");return-1;}if(memcpy(dst,src,len)==NULL){error("memcpyerror");return-1;}munmap(src,len);munmap(dst,len);return0;}運行,拷貝一個1.1G的文件,得到如下結果[root@garden]#.//home/ker.tgz./ker.tgzing/home/ker.tgzto./ker.tgzusingcp_map:filesize=1030MBytesUsing61.900000secondsing/home/ker.tgzto./ker.tgzusingcp_rw:filesize=1030MBytesUsing34.330000seconds使用read/write的方法居然比mmap的快一倍,這是怎麼回事呢?理論上mmap系統調用只進行了一次,而且拷貝文件是直接在內核空間進行的,read/write則需要通過系統調用把內核空間的緩存復制到用戶空間,再將用戶空間緩存復制到內核空間,拷貝次數明顯多了一個呢?速度為什麼於理論預測的不一致呢?

閱讀全文

與symlinklinux相關的資料

熱點內容
javamidi編程 瀏覽:831
android60demo 瀏覽:65
頭條演算法怎麼復習 瀏覽:512
燈光控制通道可以編程設置嗎 瀏覽:781
webpack命令行 瀏覽:805
卸載雲伺服器操作系統 瀏覽:29
java文件移動文件夾 瀏覽:449
針織公斤足稱演算法 瀏覽:457
電腦下載的圖片從文件夾重新編組 瀏覽:645
安卓源碼編譯引導失敗 瀏覽:676
蘋果怎麼添加自定義app文件夾 瀏覽:930
橙牛app怎麼找客服 瀏覽:307
php對象魔術方法 瀏覽:487
OBV能量潮幅圖指標源碼 瀏覽:913
編程15個好習慣 瀏覽:676
電腦u盤文件夾顯示屏幕保護程序 瀏覽:801
我的世界伺服器版本怎麼下載 瀏覽:600
c代碼加密工具 瀏覽:357
使用泛型演算法的錯誤 瀏覽:739
單片機焊接要焊接多少個引腳 瀏覽:671