.so是linux用的 所以 要生成so 需要用gcc 和生成可執(zhí)行文件類(lèi)似,只是增加一些編譯選項(xiàng) 命令如下 gcc SOURCE_FILES -fPIC -shared -o TARGET SOURCE_FILES可以是.c文件,也可以是經(jīng)過(guò)-c編譯出來(lái)的.o文件 TARGET為so文件。
成都創(chuàng)新互聯(lián)專(zhuān)注于內(nèi)黃企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。內(nèi)黃網(wǎng)站建設(shè)公司,為內(nèi)黃等地區(qū)提供建站服務(wù)。全流程定制設(shè)計(jì),專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
1選擇
1.1一個(gè)文件的名字為rr.Z,可以用來(lái)解壓縮的命令時(shí)()
tar
gzip
compress
uncompress
1.2可以結(jié)束進(jìn)程命令()
kill
ctrl+c
shutdown
halt
1.3 Linux下對(duì)文件進(jìn)行歸檔的命令為:(多選)
dd
tar
zip
unzip
1.4 Linux查當(dāng)前目錄下30天以前的文件并移動(dòng)到/dev/null下的命令:(多選)
find.-mtime 30-type f xargs mv{}/dev/null;
find.-mtime+30-type xargs mv{}/dev/null;
find.-mtime+30-type f-exec mv{}/dev/null;
find.-mtime+30-type f-exec rm–rf{};
1.5 dstat與下面哪個(gè)命令類(lèi)似
vmstat
sar
iotop
abc
1.6 rpm安裝軟件的參數(shù)
rpm-ivh
rpm-Ivh
rpm-Uvh
rpm-Iuvh
1.7 yum升級(jí)軟件包選項(xiàng)
rpm-uvh
rpm-Uvh
1.8查看網(wǎng)絡(luò)流量命令是?
iftop
nsload
ifstatd
以上命令全可以
1.9停止進(jìn)程的命令,除了kill還有誰(shuí)?
pkill
killa
allkill
以上命令都不正確
1.10服務(wù)器之間傳文件的命令有?
wget
scp
ftp
以上命令都可以
1.11對(duì)文件進(jìn)行歸檔的命令為
dd
cpio
gzip
tar
1.12在rpm命令中,安裝新的rpm包軟件使用的參數(shù)是()
-i
-v
-h
-e
1.13du命令中,使用友好的方式顯示信息的參數(shù)是()
-h
-f
-a
-t
1.14將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實(shí)現(xiàn)如此任務(wù)的tar命令格式___
tar zxvf/home/stud1/wang.tar.gz/home/wang
tar xcvf/home/stud1/wang/home/wang
tar zcv/home/stud1/wang/home/wang
tar zcvf/home/stud1/wang/home/wang.tar.gz
1.15終止一個(gè)前臺(tái)進(jìn)程可能用到的命令和操作()A:kill
B:CTRL+C
C:shutdown
D:halt
1.16關(guān)閉Linux系統(tǒng)(不重新啟動(dòng))可使用命令()
A:Ctrl+Alt+Del
B:halt
C:shutdown-r now
D:reboot
1.17下列提法中,不屬于ifconfig命令作用范圍的是__
A:配置本地環(huán)回地址
B:配置網(wǎng)卡的IP地址
C:激活網(wǎng)絡(luò)適配器
D:加載網(wǎng)卡到內(nèi)核中
1.18有關(guān)歸檔和壓縮命令,下面描述正確的是()
A:用uncompress命令解壓縮由compress命令生成地后綴為.zip的壓縮文件
B:upzip命令和gzip命令可以解壓相同類(lèi)型文件
C:tar歸檔其壓縮的文件可以有g(shù)zip命令解壓縮
D:tar命令歸檔后的文件也是一種壓縮文件
1.19終止一共前臺(tái)進(jìn)程可能用到的命令和操作
kill
ctrl+c
shut down
halt
1.22為了將當(dāng)前目錄下的歸檔文檔myftp,tar解壓縮到/tmp目錄下,用戶可以使用命令
tar xvzf my
tar xvzf my
tar vzf my
tar xvzf my
1.23下面有關(guān)linux查看系統(tǒng)負(fù)載的命令,說(shuō)法錯(cuò)誤的是?
uptime命令主要用于獲取主機(jī)運(yùn)行時(shí)間和查詢linux系統(tǒng)負(fù)載等信息
vmstat命令可以查看cpu負(fù)載
sar命令可以查看網(wǎng)絡(luò)接口信息
free命令可以查看磁盤(pán)負(fù)載情況
1.24以下哪些方式/命令不可以查看某ip是否可達(dá)?
telnet
ping
tracert
top
1.25 tar命令用于解壓的參數(shù)是?-v-x-c-f
1.26下面哪個(gè)命令不是用來(lái)查看網(wǎng)絡(luò)故障?
telnet
ping
init
netstat
1.28為了知道誰(shuí)在正注冊(cè)到你的機(jī)器上,可以用命令:___
Who users finger ping
1.29查看本網(wǎng)段其他計(jì)算機(jī)的MAC地址,可先ping對(duì)方主機(jī),然后;
arp-g
arp-n
arp-a
arp-d
1.3014日下午2點(diǎn)date+%y%m%d%H%M輸出的時(shí)間是什么
201711141212
1711141212
2017111412
201711021212
1.31以下哪個(gè)命令可以得出1487進(jìn)程的線程運(yùn)行情況()
top-Hp 1487
top-Pp 1487
ps-mp 1487
sat-p 1487
1.32從/home/oracle下搜索一個(gè)日志文件alert.log,以下哪種方式可達(dá)到目的()
find/home./oracle-name alert.log
locate alert.log
find./-mtime 7 alert.log
find/home/oracle-exec alert.log
1.34以下哪些命令可以用來(lái)測(cè)試網(wǎng)絡(luò)中特定主機(jī)的80端口是否可以訪問(wèn)()
Ping telnet netstat lsof
2填空
2.1測(cè)試網(wǎng)絡(luò)中主機(jī)的連通性用什么命令
2.2如何查看numa是否關(guān)閉_**_
2.3將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實(shí)現(xiàn)如此任務(wù)的tar命令格式_**
2.4某個(gè)進(jìn)程使用端口7001,如何快速找到該進(jìn)程的PID
2.5結(jié)束后臺(tái)進(jìn)程的命令是**_**
2.6將/home/studl/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此存到/home目錄下,實(shí)現(xiàn)此任務(wù)的tar命令格式******__******
2.7 ping100個(gè)包的命令——
2.8 linux下,解壓縮bz2格式文件的命令是**_**
2.9 linux下,查看網(wǎng)絡(luò)連接狀態(tài)的命令是**___**
2.10Linux查看文件系統(tǒng)的命令為_(kāi)_,顯示目錄或文件占用磁盤(pán)的命令為_(kāi)__
2.11通常我們測(cè)試網(wǎng)絡(luò)連通性使用的ping命令,它是通過(guò)____協(xié)議進(jìn)行工作的
2.12簡(jiǎn)述下列命令的各自作用
nslookup
dig
top
traceroute
2.13將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此問(wèn)價(jià)保存到/home目錄下,實(shí)現(xiàn)此任務(wù)的tar命令格****_****
2.14Linux系統(tǒng)查看進(jìn)程數(shù)的命令___
2.15Linux系統(tǒng)查看系統(tǒng)內(nèi)存的命令:____,**__**
2.16Linux系統(tǒng)查看cpu使用率的命令:____,**__**
2.17Linux系統(tǒng)查看硬盤(pán)空間使用率的命令:___
2.18Linux系統(tǒng)將某一文件下的所有.log文件進(jìn)行打包壓縮,命令為_(kāi)__
2.19Linux常用的性能監(jiān)控命令是:_、_、_、_、_、_等
2.20假設(shè)output程序可能輸出標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤,請(qǐng)寫(xiě)出一條命令把這兩者都忽略__
2.21 rpm軟件包安裝命令**_**
3簡(jiǎn)答
3.1查看硬盤(pán)結(jié)構(gòu)顯示的命令?查看文檔命令?編輯文檔命令?
3.2配置網(wǎng)絡(luò)環(huán)境的命令,手工修改IP,主機(jī)名,DNS和網(wǎng)關(guān)
3.3有壓縮包a.tar.gz,如何解壓該包?如何不解壓該包,如何查看該包的內(nèi)容?
3.4某進(jìn)程abcd在系統(tǒng)中起了很多,數(shù)量難以統(tǒng)計(jì),造成系統(tǒng)負(fù)荷較高,如何一條命令確保將此進(jìn)程全部殺掉
3.5某日志路徑是/data/logs/a.txt,如何跟蹤該日志,以查看當(dāng)時(shí)的運(yùn)行狀態(tài)?
3.6 dmesg命令顯示的是哪方面信息
3.7尋找名稱(chēng)為mytest.log的文件
3.8寫(xiě)出du-sh與df-h的區(qū)別
3.9查看當(dāng)前l(fā)inux服務(wù)器是否監(jiān)聽(tīng)80端口,如果監(jiān)聽(tīng),請(qǐng)找出其進(jìn)程ID,并結(jié)束該進(jìn)程。
3.10使用curl或者wget獲取http服務(wù)的header信息。
3.11寫(xiě)出查看linux系統(tǒng)性能的命令,如cpu、內(nèi)存、流量、io等
3.12解釋下列命令的意思
dd if=/dev/random of=/dev/sda
3.13如何查看占用端口8080的進(jìn)程
3.14查著占用內(nèi)存最多的進(jìn)程
3.15壓縮和解壓縮目錄/opt/gjsy/所有文件命令
3.16Linxu系統(tǒng)下如何查看8080端口上運(yùn)行的程序狀態(tài)
3.17ps aux中的VSZ代表什么意思,RSS代表什么意思?
3.18PING是使用TCP/IP協(xié)議中的**_**協(xié)議
3.19寫(xiě)出網(wǎng)絡(luò)故障排查常用的命令**__**
3.20寫(xiě)出你常用的網(wǎng)絡(luò)抓包工具,軟件名稱(chēng)**__**
3.21將/home/stud1/wang目錄做歸檔壓縮,壓縮后生成wang.tar.gz文件,并將此文件保存到/home目錄下,實(shí)現(xiàn)此任務(wù)的tar命令格式___
3.22解釋該命令的含義:nohup zcat test.gz|grep"x6game"~/log.txt
2/dev/null
3.23查看系統(tǒng)硬件負(fù)載工具或命令有哪些
3.24使用lsof命令查看占用80端口的進(jìn)程
3.25如何使用CURL測(cè)試POST接口
3.26怎樣在目錄/home/user/training/下找到擴(kuò)展名為txt的文件
3.27最常用的網(wǎng)絡(luò)測(cè)試命令有什么?
3.28ping的測(cè)試結(jié)果中都包含哪些部分?
3.29如何找出占用22端口的進(jìn)程及進(jìn)程號(hào)?
3.30如何刪除當(dāng)前目錄(包含字目錄)下所有30天以前創(chuàng)建的文件名后綴為.log的文件
3.31以下一些Linux命令的作用分別是什么?
init 0
chkconfig--level 3 sendmail on
tar-czvf test.tar.gz./
chown-R
ln-s/data/log//var/log/sina_log
umount-f/data0
rpm-ivh baihui.rpm
rpm-qf/bin/ls
3.32LINUX常用命令pwd、top、df、ifconfig、cat分別代表什么含義?
3.33linux常用命令:關(guān)機(jī)、重啟、編輯某文檔文件、刪除某文件、更改操作系統(tǒng)密碼命令分別是什么?
3.34請(qǐng)使用命令:刪除/backup目錄下10天前的普通文件
3.35如何查看服務(wù)器當(dāng)前連接ip的列表
3.36寫(xiě)出liunx系統(tǒng)中diff、chmod、grep、kill、tar五個(gè)常用命令的功能
3.37簡(jiǎn)述tar-cjvf/tmp/test.tar.gz/root命令中錯(cuò)誤及錯(cuò)誤原因
3.38Linux系統(tǒng)從A服務(wù)器測(cè)試B服務(wù)器一個(gè)tcp端口是否聯(lián)通使用___
3.39寫(xiě)一個(gè)腳本查找最后創(chuàng)建時(shí)間使3天前,后綴是*.log的文件并刪除
3.40linux如何根據(jù)進(jìn)程ID查找啟動(dòng)程序的路徑
3.41查看占用swap的進(jìn)程id
3.42列出linux常見(jiàn)打包工具并寫(xiě)相應(yīng)解壓縮參數(shù)(至少三種)
3.43Linux中鎖定一個(gè)文件用什么命令?他和md5sum有什么區(qū)別?
3.44如何在系統(tǒng)中查找所有所屬用戶為user1的文件
3.45查看某個(gè)文件或者文件夾占用磁盤(pán)空間大小的命令
3.46如何查看遠(yuǎn)程linux系統(tǒng)運(yùn)行了多少時(shí)間?我的服務(wù)器內(nèi)存,cpu,硬盤(pán)都是多少,系統(tǒng)版本,linux會(huì)優(yōu)先將數(shù)據(jù)緩存到內(nèi)存中,我的機(jī)器真實(shí)內(nèi)存消耗實(shí)際上是多少
3.47查看服務(wù)器當(dāng)前開(kāi)啟了哪些端口?如何查看某服務(wù)器是否存在IO壓力
3.48如何查看某個(gè)文件system.log被哪些進(jìn)程占用
擴(kuò)展
1.21在退出unix系統(tǒng)賬戶之后還需要繼續(xù)運(yùn)行某個(gè)進(jìn)程,那么可用()
awk sed crontab nohup screen
1.20使用trace命令的目的是()
可用的,十分成功的測(cè)試手段
非?;镜臏y(cè)試手段
把IP地址和DNS加入路由表中
在源到目標(biāo)傳輸?shù)倪^(guò)程中查找失散點(diǎn)
1.27哪個(gè)變量用來(lái)指定一個(gè)遠(yuǎn)程x應(yīng)用程序?qū)⑤敵龇诺侥膫€(gè)x server上
TERM
DISPLAY
ECHO
OUTPUT
1.33P系列服務(wù)器被用做文件服務(wù)器,所有的用戶文件存都放在一非rootvg的文件系統(tǒng)上,用什么方法可以快速備份和恢復(fù)這些數(shù)據(jù)和文件系統(tǒng)的定義()
tar
cpio
savefs
savevg
用JNI實(shí)現(xiàn)
實(shí)例:
創(chuàng)建HelloWorld.java
class HelloWorld
{
private native void print();
public staticvoid main(String[] args)
{
new HelloWorld().print();
}
static
{
System.loadLibrary("HelloWorld");
}
}
注意print方法的聲明,關(guān)鍵字native表明該方法是一個(gè)原生代碼實(shí)現(xiàn)的。另外注意static代碼段的System.loadLibrary調(diào)用,這段代碼表示在程序加載的時(shí)候,自動(dòng)加載libHelloWorld.so庫(kù)。
編譯HelloWorld.java
在命令行中運(yùn)行如下命令:
javac HelloWorld.java
在當(dāng)前文件夾編譯生成HelloWorld.class。
生成HelloWorld.h
在命令行中運(yùn)行如下命令:
javah -jni HelloWorld
在當(dāng)前文件夾中會(huì)生成HelloWorld.h。打開(kāi)HelloWorld.h將會(huì)發(fā)現(xiàn)如下代碼:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include jni.h
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
該文件中包含了一個(gè)函數(shù)Java_HelloWorld_print的聲明。這里面包含兩個(gè)參數(shù),非常重要,后面講實(shí)現(xiàn)的時(shí)候會(huì)講到。
實(shí)現(xiàn)HelloWorld.c
創(chuàng)建HelloWorld.c文件輸入如下的代碼:
#include jni.h
#include stdio.h
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
}
注意必須要包含jni.h頭文件,該文件中定義了JNI用到的各種類(lèi)型,宏定義等。
另外需要注意Java_HelloWorld_print的兩個(gè)參數(shù),本例比較簡(jiǎn)單,不需要用到這兩個(gè)參數(shù)。但是這兩個(gè)參數(shù)在JNI中非常重要。
env代表java虛擬機(jī)環(huán)境,Java傳過(guò)來(lái)的參數(shù)和c有很大的不同,需要調(diào)用JVM提供的接口來(lái)轉(zhuǎn)換成C類(lèi)型的,就是通過(guò)調(diào)用env方法來(lái)完成轉(zhuǎn)換的。
obj代表調(diào)用的對(duì)象,相當(dāng)于c++的this。當(dāng)c函數(shù)需要改變調(diào)用對(duì)象成員變量時(shí),可以通過(guò)操作這個(gè)對(duì)象來(lái)完成。
編譯生成libHelloWorld.so
在Linux下執(zhí)行如下命令來(lái)完成編譯工作:
cc -I/usr/lib/jvm/java-6-sun/include/linux/
-I/usr/lib/jvm/java-6-sun/include/
-fPIC -shared -o libHelloWorld.so HelloWorld.c
在當(dāng)前目錄生成libHelloWorld.so。注意一定需要包含Java的include目錄(請(qǐng)根據(jù)自己系統(tǒng)環(huán)境設(shè)定),因?yàn)镠elloworld.c中包含了jni.h。
另外一個(gè)值得注意的是在HelloWorld.java中我們LoadLibrary方法加載的是
“HelloWorld”,可我們生成的Library卻是libHelloWorld。這是Linux的鏈接規(guī)定的,一個(gè)庫(kù)的必須要是:lib+庫(kù)
名+.so。鏈接的時(shí)候只需要提供庫(kù)名就可以了。
運(yùn)行Java程序HelloWorld
大功告成最后一步,驗(yàn)證前面的成果的時(shí)刻到了:
java HelloWorld
如果你這步發(fā)生問(wèn)題,如果這步你收到j(luò)ava.lang.UnsatisfiedLinkError異常,可以通過(guò)如下方式指明共享庫(kù)的路徑:
java -Djava.library.path='.' HelloWorld
當(dāng)然還有其他的方式可以指明路徑請(qǐng)參考《在Linux平臺(tái)下使用JNI》。
我們可以看到久違的“Hello world!”輸出了。
新建一個(gè)sort.c文件,寫(xiě)一個(gè)最簡(jiǎn)單的排序
使用 gcc -o libsort.so -fPIC -shared sort.c 產(chǎn)生libsort.so庫(kù)。
.so庫(kù)有兩種調(diào)用方法:
新建main.c文件:
使用命令 gcc -o main main.c -lsort -L. 編譯。
新建main2.c文件:
使用命令 gcc -o main2 main2.c -ldl 編譯。動(dòng)態(tài)加載.so庫(kù)的話需要-ldl。
運(yùn)行./main2后輸出遞增序列,調(diào)用成功。