我正在使用本地网站下载文件到我的服务器。 使用Inotify守护进程我正在侦听特定文件夹(我正在下载的文件)中的文件更改,并执行一个使用rsync将这些文件移动到另一个文件夹的脚本。 但是我的问题在于,rsync在完全下载之前移动文件,因此它们的大小是0KB。 我之前使用过mv,mv设法等到下载完成才移动,但是我需要使用rsync,因为mv不会写入现有的非空文件夹。 有任何想法吗? 这是我的脚本执行inotify创build: #!/bin/sh cd the_folder_which_is_watched_by_inotify rsync -vh * /where_the_files_are_moved_to echo "Files have been moved"
我正在尝试编写一个shell脚本,以便在使用for循环的数百万行的大文件中查找重复性单词后存储的值。 find重复的单词之后,我如何让脚本在文件中的当前行之后开始search,以便循环迭代时不会从文件的开始处开始search。 简单地说,如何在文件中查找当前行,以及如何在循环重新迭代时从该行开始search,而不是从头开始search。 我可以运行多less个并行控制器,有没有限制,或者我们需要运行,取决于我们的CPU和RAM的利用率。
我开始学习bash脚本,需要编写脚本在NGINX上安装fastcgi_cache 。 我需要使用fastcgi_cache设置replacePHP的默认位置。 要清楚,我需要取代这个: location ~ \.php$ { fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 有了这个: location ~ .php$ { fastcgi_pass unix:/var/run/php5-fpm.sock ; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; access_log /var/log/nginx/$SITE_URL.cache.log cache; fastcgi_cache_key "$mobile$scheme$request_method$host$request_uri"; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; add_header X-Cache-Status $upstream_cache_status ; } 我相信这可以用sed来完成,但我找不到办法。 我设法通过一种解决方法来工作,如下所示: if [ -f "/etc/nginx/sites-enabled/$SITE_URL" ] then sed -i.bak […]
我有Ubuntuencryption分区的操作系统。 在启动过程中,我想使用scp从远程服务器下载密钥文件,并使用它来解密分区。 我做了什么: /etc/initramfs-tools/hooks/myhook.sh #PREREQS blah blah mkdir ${DESTDIR}/usr mkdir ${DESTDIR}/usr/bin cp -pnL /usr/local/bin/dropbearmulti ${DESTDIR}/bin/dropbearmulti #compiled dropbear ssh/scp client cp -pnL /etc/initramfs-tools/root/.ssh/* ${DESTDIR}/root/.ssh #copy keys/known_hosts to image /etc/initramfs-tools/scripts/local-top/myscript.sh ln -s /bin/dropbearmulti /usr/bin/dbclient #symlink for dbclient (need to make scp work) export HOME=/root /bin/dropbearmulti scp user@host:/home/user/file /tmp/file #HERE I NEED TO READ PASSWORD FOR SCP networkingconfiguration,一切都很好。 […]
我试图从远程机器grep的Oracle金色门,但随着版本它也给出了一些错误的细节,我该如何解决? user@serverhost:/dbei > echo <golgengate install path>/ggsci | ssh gger@payhlc203 | grep "Version" Pseudo-terminal will not be allocated because stdin is not a terminal. stty: standard input: Invalid argument Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO
我有一个脚本,向用户提出一些问题,并重复问题,直到用户回答某个问题。 当一个可接受的答案被读取时,这是通过一个无限循环来完成的: while true do read -p "Which helper do you prefer (cache, store)? " HELPER if [ "$HELPER" = "store" -o "$HELPER" = "cache" ] then break else error "Invalid option. Choose again" fi done 独立调用时工作正常。 问题是当我在一个| while read …执行这个脚本 | while read …循环: # find scripts that should be run as non-root user, […]
我有一个旧的方法来杀死闲置的mosh-server进程,这在我的新VPS上不起作用。 这是旧的方法,我在root的crontab中运行,以清理已经闲置10天以上的mosh进程: for tty in `w -sf | grep -P '\d\ddays mosh-server' | cut -c 10-15`; do kill -9 `ps -o pid= -t $tty`; done 问题是,在新的VPS上,这些进程没有TTY,所以我不能通过TTY匹配并以这种方式杀死mosh。 这是我到目前为止(顺便说一下,新的VPS在Debian上运行内核3.2,旧版本是以前的Debian版本)。 for loginday in `w | grep -P '\d\ddays.* mosh-server' | cut -c 34-40 | sed 's/^\([0-9]*\)\([a-zA-Z]*\).*$/\2 \1/'`; do echo $loginday; done 我正在尝试从'w'获取logindate,并将其与'ps'中的信息相关联: ps -C mosh-server -o bsdstart 因此,我可以关联login当天启动的任何闲置mosh-server会话(可能是野性中的99.9%),并使用'ps'来获取pid。 […]
我试图让这些脚本在Java应用程序需要以用户foobar运行的环境中工作,而不foobar是以root还是foobar启动的。 所以这些是我对init脚本的修改,它是从init.d符号链接的: RUN_USER=foobar USER_NAME=$(id –user –name) START_SCRIPT=/opt/app/scripts/start ARGS="" start() { if [ "$USER_NAME" != "$RUN_USER" ]; then PID=$(su $RUN_USER -c $START_SCRIPT $ARGS > /dev/null 2>&1 & echo $!) else PID=`$START_SCRIPT $ARGS > /dev/null 2>&1 & echo $!` fi } 而我的/opt/app/scripts/start脚本如下所示: exec java -jar /opt/app/app.jar > /dev/null 2>&1 & echo $! 为了使init脚本工作, PIDvariables需要被正确设置,但是它被设置为su命令的PID 。 关于做这个工作有很多问题,但是没有一个解决scheme适用于我。 我知道> […]
发送端脚本如下: #!/bin/sh #Variables bigdata=vid-zfs-live/bigdata today=`gdate +%m-%d-%y` yesterday=`gdate -d'yesterday' +%m-%d-%y` #Actions zfs snapshot -r "$bigdata"@"$today" zfs send -i "$bigdata"@"$yesterday" "$bigdata"@"$today" | nc -w 700 192.168.10.11 8024 发送端的Cron条目如下: 30 0 * * * /scripts/zfssendBigData.sh > /tmp/cron1.log 接收端脚本如下: #!/bin/sh /usr/bin/nc -l -p 8024 | zfs receive -F vid-zfs-bak/bigdata 接收端的Cron条目如下: 29 0 * * * /scripts/zfsreceiveBigData.sh > /tmp/cron2.log cron1.log和cron2.log都是空的。 […]
好吧,如果主题不清楚,我会解释我的疑问。我有一个shell脚本保存在我的本地用户(executeAdM.sh),当我执行这个脚本我连接到SUDO用户通过从指令file.But命令我执行这个脚本我也传递参数到这个脚本实际上是SUDO用户的一些目录path。 请参阅下面的脚本 – : 本地脚本(executeADM.sh) – : #!/bin/bash echo password | sudo -S -l sudo /usr/bin/su – user <<\EOF #ls -lrt pwd for entry in $(ls -r) do if [ "$entry" = "testingADM.sh" ];then ./$entry $1 fi done EOF 以上执行 – ./executeADM.sh somePath 当上面的脚本执行它成功地连接到另一个用户,并在SUDO用户我执行一个for循环search另一个SCRIPT称为testingADM.sh。 一旦脚本被发现我执行该脚本与parameter passing从本地用户和testingADM.sh应该为我设置的path不工作它不读取从本地用户传递的参数。可以帮助我在这里我没有得到如何解决这个问题 请问我是否有什么不清楚基本上我想从LOCAL shell脚本传递参数到SUDO USERshell脚本 – : SUDO用户脚本(testingADM.sh) – : #!/bin/bash […]