使用
REGEX=example
sed -n "/$REGEX/{h};/^$/h;x;/$REGEX/{x;d};/$REGEX/"'!{x;p}' file
zone "foo.com" {
type slave;
file "db.foo.com";
masters { x.x.x.x; };
};
在一个正在运行的线程中,调用thread.Abort()是否可以安全地运行以杀死该进程?
注意:这是后台工作者中的一个线程。我需要能够取消后台工作者,但如果那一行阻止
则不能答案 0 :(得分:1)
如果线程在非托管代码中被阻塞server {
listen 80;
server_name example.org;
return 301 https://$server_name$request_uri;
}
server {
listen 80;
server_name www.example.org;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
ssl on;
server_name example.org;
root /var/www/soon;
server_tokens off;
ssl_certificate /etc/ssl/certs/example.org.certchain.crt;
ssl_certificate_key /etc/ssl/private/example.org.key;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256;
ssl_prefer_server_ciphers on;
# HSTS
add_header Strict-Transport-Security max-age=15768000;
location /support/webmail/ {
alias /var/www/webmail/;
autoindex off;
index index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
}
将无法执行任何操作,直到线程仍然返回到托管代码,您似乎已在注释中承认。
所以问题有点不清楚 - 调用Thread.Abort()
本质上是安全的,因为它只会中止在托管代码中运行的线程。所以,当你说“安全”时,你担心的危险是什么?
如果您需要能够中止非托管调用,则可以在单独的进程中将其分离,以便您可以使用Process.Kill()。然后你就把处理清理工作的工作交给了操作系统。当然,您需要做一些样板代码来向过程发送数据。
答案 1 :(得分:0)
我认为没有人可以完全保证这一点,因为有很多非托管库可以通过数据库连接调用。
该服务的用户的最佳做法是处置与您的SQL连接相关的所有一次性对象,并且您应该是安全的。
只要所有一次性用品都处理得当,这里的流产就可以了。